How do I animate non-uniform shaped eyeballs?

I’ve successfully been able to animate characters’ eyeballs using Track To and a look at target. But this only works well if the eyeballs are perfectly spherical.

Many of my characters are cartoonish and I’d like them to have non-uniform eyes (i.e. taller than they are wide). But when I do that, using Track To to animate the eyes makes it look like they’re falling out of the character’s head.

What I think would be perfect would be if I could somehow have a perfectly spherical eyeball that Tracks To my target, and THEN apply a non-uniform scale to it.

I thought I might accomplish this using a Track To constraint with a Copy Scale constraint, imagining that the Track To would be evaluated on a perfectly spherical eye to orient it correctly, and then the Copy Scale would apply to shape it correctly. But this doesn’t seem to work. No matter what order I put them in, the Copy Scale is always evaluated first, and then the Track To applies to the scaled (misshapen) eyeball.

Does anyone know how to do what I’m trying to do here?

Hi,
I got this problem few years ago.
I get some good results by using a sphere with a track to constraint and a lattice or mesh deform modifier on it.
Another solution would be to only move the UV of your eyeball mesh on the eye texture, you can take a look at this work http://kompak.pl/index.php?id=28.
Good luck.

Seems to me that the iris would also deform using a method that starts with a sphere and is deformed by the scale after the track to is evaluated. Since the deformation of the rotated sphere would depend on the eye track orientation, there’d be no way to compensate for the iris stretching with scale.

I wonder if a method that moves just the iris would be useful? This wouldn’t work with eyes where the iris is “dished” into the eyeball (an effect I dislike anyway), but for some cartoon-type eyes it might work well enough. My thought is that a bone could track as usual, with just the iris constrained to it, and only it follows the bone’s tracking of the eye target. The iris could be made to conform fairly closely to the eyeball using a Shrinkwrap modifier, or even be made slightly convex so its edges lay below the eyeball surface.

RomainT,
I had thought of the UV thing, but that sounded like it would be a pain. I just tried your Track To with Lattice Modifier and that works great. Thank you. Not sure why it didn’t work with Copy Scale, but now that I know it works with Lattice, I’m good.

Chipmasque,
Thanks for your reply. I hadn’t considered that the iris would be warped by the scaling. In the specific case I’m doing, the scaled iris looks the way I want, but I’ve realized that that may not always be the case. So, your suggestion for preventing this is excellent advice that I will keep in mind for the future. Thank you.