Using Aim Constraints to Focus Eyes

Aim Constraint

Controlled by an Aim or Directional Constraint, eyes will look directly at their control object.  Note each eye in the above pic is controlled by the null objects (locators) parented at the sides of the cube. Eye rotation is controlled by simply moving (translating) the parent cube.

Using Aim Constraints to Focus Eyes




An "aim" or "directional" constraint literally aims one axis (x, y, or z) of an object directly at the center of another object (note that the object center may not literally be the object's center of mass as centers are often re-positioned during the course of modeling or animation).

The benefits of using aim constraints to control eye focus are well, fairly easy to see... Once constrained to a control object - the eyes will seem to follow that object wherever it goes - a big plus over manually rotating your character's eyeballs individually to, say, follow the action of a tennis ball at Wimbledon. There are drawbacks however - one is that your control object must be physically maintained in a position where your character's eyes can actually see it - which can lead to odd parenting situations in your rig that in turn can end up slowing both  setup and animation in the long run. The big plus is that it's very intuitive to use.

To use an aim constraint - follow the steps below. Note: the steps and tools may vary slightly depending on your animation package of choice.

  1. Place a joint at the center of each eye, and parent these joints to the head joint.
  2. Adjust the rotation axis of the "eye" joints to align with the rotation axis of their respective eyeballs.
  3. Make each eye a child of its respective eye joint
  4. Build a box from linear NURBS curves - width should stretch between the centerpoint of the left and right pupils.  Why use NURBS? Because they are easily hidden - this will unclutter your workspace when working with polygonal models.  Name this  box   "eyeControl."
  5. Place the eyeControl box several "inches" in front of your model's face, and parent this box to your control rig.
  6. Place a null or locator at each end of the box and name them LeyeConstraint and ReyeConstraint accordingly.
  7. Use the Aim Constraint tool to constrain the rotation of each eye joint to "aim" at their respective eyeConstraints.
  8. Parent the LeyeConstraint and ReyeConstraint objects to the eyeControl box.
    Adjust the divergence of the eyes (human eyes tend to point slightly away from each other), by moving the eyeConstraints laterally from each side of the eyeControl box, or move them together to make your character look crosseyed.

  1. Now when you move the box - or move the locators away from the box - the eyes will follow accordingly.

    For another method of eye control, check out Using Orient Constraints to Focus Eyes.