Linking Strategy

Before you begin linking any but the simplest hierarchy you should take a few minutes to plan your linking strategy. Your choices for the root of the hierarchy and how the branches grow out to the leaf objects will have important effects on the usability of your model.

The strategy behind linking objects into a hierarchy can be reduced to two main principles:

Within these two principles you have almost unlimited flexibility as to how you link your objects. If you think about how you intend to use the hierarchy, and link it with that use in mind, you will rarely have a problem.

Progression from Parent to Child

Progression from parent to child means the links do not erratically jump from object to object. If two objects touch each other they should probably be linked as parent and child. There is nothing to prevent you from linking a body in the order of: Thigh->Foot->Shin->Waist. You would probably regret such a linking strategy later. The effort to figure out how to transform objects linked in such a strange way would be quite difficult. A more logical progression would be Foot->Shin->Thigh->Waist.

Using Multiple Hierarchies

Rather than build a single bone chain from a hip to a toe, you can make one chain from the hip to the ankle, and then a second independent chain from the heel to the toe. You would then link the chains together to form a complete leg assembly.

Because they are linked together, the leg and foot chains could be considered one chain. However, the way you animate them treats each chain separately, allowing fine control over the parts.

With this type of arrangement on leg and foot chains, the foot could be made to stay on the ground while the leg bends. It also allows for independent control of the foot's rotation, pivoting on the heel or toe, which would then cause the knee to bend.

Parents Move Less Than Descendants

Because of the way transforms are inherited from parent to child, small adjustments to a parent object might require you to adjust all of its descendants. The typical approach to linking is to choose as your root object the object that moves the least. Objects close to the root should move very little, and leaf objects should move the most.

This is especially true when you are linking jointed structures like robots or machinery, or intend to use the hierarchy with inverse kinematics.

An exception to this rule occurs when you are using the root object as a handle. All of the descendants of the root are just along for the ride. Consider a tray full of objects traveling on a conveyor belt. All the objects should be children of the tray even though the tray moves much more than any of the other objects.

Choosing the Root of a Hierarchy

You can find the best candidate for the root of your hierarchy by asking the following question:

If I move this object, should all of the other objects in the hierarchy move with it?

Once you have a few candidates for the root object, you can examine them in greater detail. Use these criteria to determine a good root object for your hierarchy:

The object that best satisfies these criteria is your root object. You then create your hierarchy with all of the other objects as descendants of that root object.

Linking Objects for Inverse Kinematics

Inverse kinematics (IK) uses the child object as the driving force for the animation. IK is less forgiving and is highly dependent on the linking strategy for performing calculations.

You need to consider two additional principles when linking hierarchies for use with inverse kinematics:

The figure above shows two approaches to linking a skeletal structure. Either structure is suitable for working with forward kinematics. The structure on the right, however, is a better choice for working with inverse kinematics.

The structure on the left has the arms and torso linked to the neck. The structure on the right links the arms and neck to the torso, a more realistic approach.

WarningBe sure to avoid using non-uniform scaling on objects in a hierarchy that will be animated using IK. You will see stretching and skewing if you do. Instead do all non-uniform scaling at the sub-object level, to avoid this problem. Use Reset XForm if you have objects that exhibit this behavior.

Linking Objects After Animation

When you link an object to another, the link relationship between the child and its parent is determined by the position, rotation and scale of the parent and child objects when the link is made.

Imagine linking a stationary sphere to an animated box.

Linking the sphere to the box causes the sphere to move with the box. The distance between the sphere and the box depends on the frame when the link is made. Linking the sphere on different frames has the following effects:

Unlinking Objects After Animation

When you unlink a child, its frame 0 transforms are taken from the transforms of its parent at the frame when the link is removed.

Imagine a sphere linked to a box moving around the face of a clock. The box starts at 12 o'clock and travels all the way around the face over 100 frames. The figure shows a box moving in a circle with a sphere linked above it.

Original animation, with ball linked to follow the animated box.

If you unlink the sphere, it stops following the box. The position of the sphere depends on its position, rotation or scale at the frame on which the link is removed. Unlinking the sphere on different frames has the following effects: