I’ve run across one of those problems that I think has an easy solution, but my over thinking brain hasn’t come up with anything yet. I’m looking at making some cartoony eyes that disappear when blinked, as in some of the old cartoon styles where when the eye is shut it just looks like a straight black line. Here is a decent descriptive picture showing something like what I’m looking for:
You see this effect a lot in the old cartoons with villains that wear the ribbon across their eyes as masks. When they blink their eyes, they just shrink down to a line. You also see this technique, probably most often, when there are just floating cartoon eyes placed somewhere. Floating cartoon eyes like these would be pretty easy in 2D with alpha channels. In 3D for some reason, I’m running into trouble.
This seems easy enough, but all of my solutions so far offer some sort of compromise and aren’t really ideal. I’m hoping that you can help!
Here are my solutions so far in a real quick and dirty video:
Please excuse the bad eyeball and bad animation, just purely a test. These are the three methods I’ve come up with, shown first at real speed, then slowed down. Ideally the final eye would be UV mapped.
1. My first solution would work only if the background (in this case probably the face, but floating eyes could have any background, as is the case with the video) was one solid, shadeless material. Basically you just make eye lids that are the same color as the background, then animate as normal. When the eyes blink, the lids cover the eyeball and make it seem like they are disappearing.
PROS of this method:
-The animation is easy and looks smooth
-The eyeball doesn’t distort when blinking, so can be UV mapped, and also can move around (track to) while blinking
CONS of this method:
-The background has to be one shadeless material, otherwise you’ll see the eyelid, not ideal!
This method would be perfect if the eyelids could some how function as an invisibility cloak. So wherever the eyelid was covering the eye it would just turn invisible. Is this possible!!!
2. The second solution was to use shape keys. Essentially I just shrunk the eyeball down to a small slit with a shape key. Pretty easy to setup, but not so stellar results.
PROS:
-Easy to setup and easy to animate
CONS:
-Funny deformations during the blink, including deforming the pupil, which I think leaves UV mapping out of the equation because it would also distort
3. The third solution was to use a texture to control the alpha of the eye material. This is a simple blend texture, with a ramp to define the alpha value. The sliders in the ramp were keyframed to get them to change.
PROS:
-Looks pretty good, pupil doesn’t deform
CONS:
-Hard to animate because I couldn’t figure out a way to set a driver bone to control the texture’s ramp sliders. Is there a way to do this???
-Relatively hard to setup to get to look like the eye is blinking and not being wiped away, so not real flexible
Wow, that was long! Sorry about that. If you’ve hung in there this long, what do you think? Am I missing something really easy?