Using lattices for "cartoon" eyes cause problems when rigging the eyes for tracking.

This video basically goes over how I’ve rigged this model’s eyes. It goes over the constraints used, and how things are parented. The problem I am having isn’t apparent until I rotate the head. When I rotate the head, the eyes start to not properly track to the eye controllers I have set up. Obviously, the way I have the eyes rigged with the lattices are part of the problem, but I haven’t figured out a proper solution yet.

Also, animating UVs won’t be an ideal solution. I’ll eventually be adding geometric detail to the eyes, which wouldn’t be able to animate with the UVs. If anyone knows a way of fixing this or finding an alternate way to rig these eyes without having this issue, please let me know (it would have to be a solution that would still use the lattices to deform the eyes). Thanks.

Without seeing the file, my first thought is that you have used an empty to move the eye controllers, you may be better to use an non-rendered mesh instead and parent this to the armature’s head bone. I have not found a satisfactory way to parent an empty to a specific bone (others may know better) and have it orient itself with the bone, often they just move position and keep their axes in line with the system axes, so I use a cube or a plane instead as these have the least number of vertices. A mesh will then orientate itself correctly to your head bone as you rotate this, unlike the empty you have just now. I would parent the cube to the bone “With Empty Groups” then assign all vertices to the head or just create a vertex group with the same name as the head bone. When you parent the lattices to the eyes, I would use CTRL+P and the select “Lattice” rather than use the parent selector in the object panel, this works more reliably for me.

To make the eye control cube non-renderable, just click the camera icon in the Outliner window so it is greyed out.

Let me know if this helps, otherwise I will need to see the blend file.

Cheers, Clock.