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.

Here's the .blend file plus the eye texture if anyone wants to have a closer look at the rig. https://www.dropbox.com/s/jknki5xbbuf7l1x/eevee.zip?dl=0

EDIT: 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.

  • 2
    $\begingroup$ I would use an UV Warp modifier to offset the texture of eyes. Then you don't need such complicated setup. The modifier could be constrained only on eye vertices with vertex map. You can use some global bone position offset as source for the modifier transformation or transform the head and target relation from local to global coords and use that as a source (with copy rotation on some other pair of bones which tips you would track). This will work with everything, even with softbody sims or complicated spline IKs. $\endgroup$ Commented Aug 4, 2015 at 12:21

1 Answer 1


I made this work using an eye-bone and a bone track-to constraint.


Use an eye-bone at the center of your eye, parented to the head bone, pointing out the eye. Add a bone constraint for the eye-bone to track your eye-target. Test that the eye-bone properly tracks your target as the head moves.

Parent your lattice to the head bone (you might need to manually create a lattice vertex group with the same name as the head bone). Test that the lattice moves with the head bone.

Select your eyeball, and add a copy-rotation constraint copying the rotation of your eye-bone. It should be local space to local space.

If your eye doesn't line up afterwords, go into edit mode on it and rotate it to line up. (if you have an object scale on your lattice, edit-mode rotating your eye will cause it to wobble out of the lattice. I don't scale my lattice, I edit it's shape in a shape key.)

The copy-rotation is local-to-local because the rig is rotating both your bone and your eye-lattice. As the eye-bone tracks the target, you want to copy it's local space rotation to the local space rotation of your eyeball.

One consequence of using a lattice to flatten an eye-sphere, is that as the eye-bone tracks the target further off-center, and the eye copies it's rotation, the eye itself will appear to be looking a bit further than the bone is pointing. This is a consequence of the deformation. If you center your head and turn off the lattice deformer (edit mode your eye-sphere), you'll see that the un-deformed eye is pointed the same place as the eye bone. If it is important to compensate for this, you can use a driver equation instead of a copy-rotation constraint to set the eyeball rotation. This will give you a coefficient to tweak the relative rotations.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .