Animating with Forward Kinematics

The default method of manipulating a hierarchy uses a technique called forward kinematics.

The basic principles employed by this technique are:

You animate the objects of a hierarchy in much the same way you animate anything else. Turn on the Auto Key button and transform members of the hierarchy at different frames. However, you need to be aware of a few special issues for animating hierarchies.

How Links and Pivots Work

Once two objects are linked together, the child object maintains its position, rotation, and scale transforms relative to its parent object. These transforms are measured from the pivot of the parent to the pivot of the child.

For example, consider the two boxes in the following figure. The larger box is the parent of the smaller. The pivots and link between the boxes are indicated to show how the link works. The link extends from the pivot of the parent and connects to the pivot of the child. You can think of the child’s pivot as being the joint between the parent and child.

Parent and child objects linked by their pivot points.

Rotating the parent affects the position and orientation of the child object.

Rotating the child does not affect the parent.

Links act as a one-way conduit to transmit the transforms of a parent object to its child object. If you move, rotate, or scale the parent, the child is moved, rotated, or scaled by the same amount. Because hierarchical links are one-way, moving, rotating, or scaling the child has no effect on its parent.

The end result is that transforms applied to a child object are applied in addition to any transforms inherited from the child’s parent.

Animating a Parent Object

Only transforms are passed from parent to child. Animating a parent object using move, rotate, or scale animates the parent and the subtree attached to the parent.

Animating a parent's modifiers or creation parameters has no effect on its descendants.

Moving the root parent moves the whole hierarchy.

Rotation of a parent object is passed to all the child objects.

Animating a Child Object

With forward kinematics, a child is not constrained by its link to a parent. You can move, rotate, and scale children independent of their parents.

Moving the last child object does not affect any of the previous objects in the hierarchy.

Rotating a child object in the middle of the hierarchy affects all the descendants but none of the parents.

If you want to manipulate parent objects by moving the last child in the chain, use inverse kinematics.

Manipulating the Hierarchy

A child object inherits the transforms of its parent, and the parent inherits the transforms of its ancestors all the way up the hierarchy to the root object. Because forward kinematics employs this method of inheritance, you must position and animate your hierarchies using a top-down method.

Manipulating the hierarchy of a leg.

Consider the linked mannequin in the figure. If you want to position the mannequin’s right foot to rest on top of the soccer ball beside it, you perform the following steps:

  1. Rotate the right thigh so the entire leg is above the soccer ball.
  2. Rotate the right shin so the foot is near the top of the soccer ball.
  3. Rotate the right foot so it is parallel with the top.
  4. Repeat steps 1 through 3 until the foot is properly placed.

You always start transforming objects at the highest-level parent affected by the motion and work your way down the hierarchy to the last child.

You have considerable control over the exact placement of every object in the hierarchy using forward kinematics. However, the process can become tedious with large and complex hierarchies. In such situations, you might want to use inverse kinematics.