Saturday, April 27, 2013

Pixel Art Lesson: xolstice's "Kiki and Jiji" (Smooth Curves, Dithering, Contrast)
An unreleased song from AC:R, used in one of the Desmond segments. I like it, it should've been in the official soundtrack.

This week I wanted to handle smoothing curves. It's a big component in my own work - I'm a stickler for even curves. Turns out that xolstice came along on PJ and handed me a perfect piece to use to discuss them! Despite really being into smooth perfect curves, I find it one of the most absurdly hard things to discuss, but I think over the past couple of days I wrote xolstice an excellent breakdown of what it means.

xolstice's "Kiki and Jiji"

Major Themes: Smooth Curves, Dithering, Contrast

this was my first pixel art ever, that's why it's rough and all. I just found some tutorials here in PJ~ *goes off to study more*
Alright, first off, that is an amazing attitude to come in with. Confident enough to post, humble enough to admit flaws, enthusiastic and interested in active improvement.
After a couple of comments complimenting the cuteness of the piece I showed up.
From just a view, this looks really nice. Kiki is cute, the animation is pleasant, and overall it just feels good to look at.
Looking closer, well, it's pretty obvious that you haven't been at this all that long. Don't take that as a bad thing, I'm not trying to be harsh or anything! In fact, looking in and seeing all the ways it's mistaken actually makes it pretty amazing that it still came out looking so nice, so that's pretty awesome of you.
The biggest thing that this needs work on is smoothness. The curves are all moving generally in the right way, but they are often rough and jagged. The, uh, ribbon (I think? I don't remmeber Kiki's design very well) is a great example of where the curves would flow in a much smoother way. Typically, you can get this with an exponential progression of sizes - if I'm not being clear here let me know and I'll elaborate, since this is an important thing.
Second, you have some color weirdness. The biggest issue, I'd say, is one of contrast, the difference in lightness/darkness between shades of a color. For example, on the ribbon again, you have three reds: a light pink, a red, and a darker outline. The light pink is so similar to the others, however, that it's practically invisible unless zoomed in quite a bit. The darker purple on the dress (not the outline though) and the darkest yellow on the broom are both a little too bright in my opinion. Note that as saturation increases, you will need more contrast to differentiate the shades of a color - this is likely why the contrast on the face and hair are fine, since they are lower saturation colors. 
On the face, I can see you attempted a bit of dithering with the cheeks, I'm guessing because you saw the idea in the tutorials or something. On the broom, the dithering works well, but on the cheeks it has some trouble because the contrast is so high between the orange and the tan that instead of blending perfectly, the checkerboard is clearly visible. An interesting experiment though. If you want the dithering to work a bit better there, make the lighter orange a little closer to the tan of the face.
Last is banding. This is a hard concept to explain, but since you seem open to reading tutorials I'd recommend this one:
I thought it might be self-serving to post my own banding tutorial. 
Regardless, it's a pretty good piece and I look forward to seeing you improve. Keep up that enthusiasm for learning!
(ps do you mind if I use this as an example in a tutorial of my own I am writing about pixel art?)
I figured I should start ASKING these artists if I'm engaging with them while I'm writing these. I mean, I always give proper credit and all, but still, explicit permission is nice.
Anyway, my first wave of crits over, he replied:
hello! thank you for the constructive feedback! I can't seem to get dithering right. I am also having a hard time getting a good "flow" with animation. It always turns out clunky for me =/ It would be really great if you can give me a bit of advice on this exponential progression of sizes~

Also, yes you can use it for a tutorial! I'd be glad if this could be used to help others too~
I'd be glad too! This prompting was all I needed to go into this full force.
No problem!
On animation, I wouldn't worry about it. The way it looks right actually is just right in the animation sense - being slow and maybe a bit jumpy isn't that bad since the frames each look nice and have a good logical progression to them. In particular, the slow movement of them reminds me of some old video game idle stances (I'm thinking of Tales of Phantasia in particular right now). Kinda charming in and of itself. I will admit though, I'm no pro when it comes to animation, my stuff is focused on single scenes.
No kidding there, I don't animate stuff at all. I've been meaning to do more experimenting there, but it's a huge investment of work to do it.
For dithering, well, that's got two elements. The first is practice. It took me YEARS to start gettin' dithering really okay. The second is to understand that dithering is not only checkerboards - the idea is that you make a gradation of it - it's pretty remarkable how many different colors you can make out of just two. Here, take a look:
That's all the same two colors. If they weren't in as big blocks with each other, it'd be even smoother. The thing to remember is that there are TWO purposes to dithering: transitioning and texturing. The former is about making the dithering as un-apparent as possible, making several colors that seem to seemlessly blend into each other. The latter is the opposite, where you WANT the viewer to see the dithering because it gives it a kinda rough look like unhewn stone. Unfortunately, there's no surefire way to make your dithering do one or the other. I think the biggest thing you can do to make it transition rather than texture would be to use a higher number of stages of dithering and to have colors be closer together. But really, this is a lot of practice stuff.
One of these days I'll probably write a post about dithering. Articulation beyond the basics gets tricky though.
For an interesting experiment with that, try using an established weird palette, just to try. The CGA and ZX Spectrum palettes might be a bit too bizarre to use as early teaching tools, but Dawnbringer's Palette and the C64 Palette (pepto or ptoing) are great. They have low numbers of available colors, making dithering helpful to get more variety, but are set up well so that the colors can blend together well already. Something to think about trying!
Those are weird palettes that force you into limited colors, and the C64 one especially is amazing for teaching dithering since it typically requires a lot of use of the grays as buffering colors, which is an ideal thing to use for dithering. I really like the c64 palette. It stands for Commodore 64 by the way, and the reason I said "pepto or ptoing" is that there are actually two versions of the palette made by those people. The c64's colors were analog, which means we don't have perfect hex representations of them, we had to make estimations. Ptoing's version is slightly lighter than pepto's but they both have their uses.
And now for curves. The general theory involved is that the length of each line should be progressively longer or shorter without jumping around - so, a curve could go from like a 5px segment to a 3px to a 2px to a 2px to a 1px, but not from a 5px to a 2px to a 3px to a 1px. Don't worry if that's kinda abstract sounding, I'm gonna illustrate it.
Here's an absolutely perfect curve, in that it's not a curve at all. It is 100% smooth because there are no changes. Unfortunately, it's pretty bad at indicating direction changes :p

Conversely, here's an absolutely imperfect curve, a complete 90 degree turn. This indicates direction change, but it's not exactly elegant. It's a sharp corner rather than a curve. So if the ideal is somewhere in between...

Then this? Okay, this is an exact compromise, made of THREE lines - a horizontal, a 45 degree angle, and a vertical. Again, this is a little better at expressing the curve, but it's still not all that elegant. It is, however, suitable for specifically styled pieces. Let's enhance it further.

Uh oh, I made this one red. Something is wrong with this curve. It looks like it might be alright at indicating change of direction, but it's not smooth in any sense of the word. The big reason is that there's no progression of segment direction - it goes from a 3-long diagonal to a several-long horizontal to a diagonal to a horizontal to diagonal to vertical to diagonal to vertical again, etc.

This one also seems better, but it's deceptive. While this uses shorter segments, giving us more lines and direction shifts, it has the same problem as the previous one - it alternates between diagonal and flat. Here, this next one is connected:

This is a sort of "idealized" version of the previous one. If you compare them, this one is similar but uses straight lines rather than a jerky shifting from diagonal to flat. We're definitely getting more curve-like though.

I think I've grounded the idea of the wrong way to do it there. But what do you do instead? This technically follows the basic concept. See how it has a long flat segment, then a single pixel shifted off of that is another line of slightly less length? That's the idea, to make single shifts and each line length is a bit less than the previous one until you reach single pixels, which you then switch to doing the exact same thing with vertical flat segments. The problem on this one is that it's too abrupt - there's one one additional segment before going fully diagonal. If the philosophy was carried fully, we'd get better curves.

Both of these are when the concept is taken to its full length, but with different start points along the original line and slightly different patterns of lengths. Experiment with different patterns to develop different curves that are all smooth. This is where the idea of being "exponential" comes into play though - you don't necessarily want to just make each line 1 pixel shorter. Doing that gives you a remarkably squared-off curve. Like this one:

It's okay to repeat certain lengths to make the curve more severe or more gradual, and it's okay to jump line lengths to shorten the overall size of a curve - I often skip over a 4px long segment to go straight to from a 5px to a 3px. It's also okay to small deviations from the pattern if it enhances the curve, but doing so means that you're going to almost NEED anti-aliasing in later steps to keep it smooth.

This is a generally great curve, following all of the principles. However, there's that long straight diagonal there, and that puts this linear section in a smooth curve. So we need to break the rule a bit. Here's a suggestion from me: has to stay this subtle though, much more than this and the curve will break.
It has a bump in it, but that gives it enough of a curve to be believable, and with anti-aliasing it won't really be noticeable. It has to stay this subtle though, much more than this and the curve will break.

Want to make it a little more personal? I've applied the concept to a couple areas of this piece. The general concept applies everywhere though.
I must stress, this is the principle behind the matter, but it is in no way universal. I confess that I am personally partial to very clean curves, and they are sometimes limited in the angles they represent without significant work. With assistance from anti-aliasing though, smooth curves are quite versatile, and on a piece that focuses cuteness having nice pleasing curves is helpful to the aesthetic.
Now, this was an awful lot of text, so I hope it was easy to understand. Keep up the good work, this is an awesome start!
I'm now waiting on a response back, but we're done for now. So, what do you think? Do you understand what I mean by smooth curves and how I would obtain them? Constantly changing lines length with the changes occurring in a single direction.

I've got several other posts in the works, but they probably won't come before tomorrow's Sunday Songs. Also, CISPA is dead! I like to think I helped in making a difference. Later!
End Recording,

No comments :

Post a Comment