Cartoon Eyes Test

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?

I like the first method the best. The first eye in the video. I think the only way to have the eye open without seeing the eyelids is to model the mesh (eyelids) so they are not bumps over the eye but model them flatter so they are not as noticeable when opening and closing. Don’t know if this answers your question properly.

BTW do you have a link to a video or tutorial for how you modelled the first eye in method #1 or the first eye in the video?

Just a small nitpick:

The top eyelid should always move down to meet the bottom eyelid. In real life the bottom eyelid hardly moves up. You have both top and bottom moving equally.

that is true, but it could be a conceptual thing here: making it move somewhat different than real life

Thanks for looking. The first method would be great if I could get the eye lid to act as an invisibility cloak, but couldn’t figure out how to do that!

This was very simply modeled, no tutorial. The eyeball is a sphere with a black spherical blend texture for the pupil. The eye lids are two half spheres with slightly larger radii than the eyeball. They hinge around the axis of the sphere. When the eye is open the lids are in back of the eye ball, when the eye is closed the lids roll around to cover the eye lids.

Hope that makes sense, if not just ask!

This is a very quick and dirty conceptual video, so the animation obviously has some issues. Thanks for the tip though!

I’ve done a bit more pondering and have come up with something that’s getting much closer to what I was looking for. Have a look at a another quick concept video below. BTW, this is just half a sphere for the eye ball, which is why it looks a little deformed when tracking around.

The blink action is done with an armature and a few bones with some constraints on them that open and close kind of like a book fanning it’s pages.

I had to set the mesh up specifically to this rig, so UV mapping was pretty much out of the equation, so playing around with texture mapping I came up with the following.

The iris is a BBB texture png mapped to an empty which is inside the eye ball sphere, tracking a look_at object. This empty controls the location of the iris and also the size. Follow Blender Cookie’s decal tutorial for directions on mapping to an empty. This works pretty well for moving the iris around and also allows for moving the iris independently of the eye ball, if you would ever need to do that.

Now, without there being the same geometry under the iris texture, shape keys for the pupil dilation were out. I ended up making a number of different iris textures (pretty quickly I might add, which is why the iris changes sizes slightly when the pupil dilates!) each with slightly different pupil dilations. I added a driver to the color influence in the textures panel for each texture and set it up to be driven by a bone. Now scaling the bone up and down changes which iris texture is shown!

It’s certainly getting there. The next step is putting a lattice on the mesh to see how all of these things look in a non-spherical eye.

Any other suggestions?