All About Hierarchical Parenting & Constraints in Maya

Creating relationships between objects for rigging and animation

Hierarchical Parenting

This is where an object is placed under another in the hierarchy so it becomes the child of the object above it. This will create a relationship where the transformation (translate, rotate, and scale) of the parent object causes an equal transformation by the child. The relationship is also known, in more technical terms, as superordinate to subordinate, but parent to child is easier to visualise and understand.


Generally, this relationship cannot be broken, but the parent/child behaviour can be turned on and off with attributes in the transform node of the child. While enabling and disabling the relationship can be keyframed, it cannot be gradually changed. It can merely be switched off and on.


The relationship also cannot be applied to specific transforms between the parent and the child, such as rotation only, or a single channel, like rotating on the y only, so when enabled whatever happens to the parent happens to the child in all transforms. You can transform any child object individually, but when the parent object is moved, the child objects move as well.

For Hierarchical Parenting, a parent object can have multiple children, but a child cannot have multiple parents. This is visualised in the Maya Outliner.

Parent one object to another


  1. Select several objects by either selecting an object then hold down the Shift key and select other objects in the main Viewport, or in the Outliner, select an object then hold down the Control key then select other objects.
  2. The last object selected will become the parent to the previous objects selected.
  3. Press the P key.

You will see the child underneath the parent in the Outliner, the child objects will be visible when you expand the parent.


Unparent an object


  1. Select the child object to remove from the parent.
  2. Hold down the Shift key and press the P key.
  3. The selected object will be removed from the Parent group and placed in the root hierarchy so that it will have no parent.

Turn off the parent (without unparenting)

  1. Select the child object to disable translations from the parent.
  2. Open the Attribute Editor, either by pressing Ctrl+A or selecting the Attribute Editor tab to the right of the Maya window (if visible).
  3. Select the left-most tab (the object's transform node).
  4. In the Transform Attributes section, uncheck (disable) the Inherits Transform attribute.
  5. The child object, while still under the parent object, will not transform with the parent object until the Inherits Transform is enabled.

In Hierarchical Parenting you can turn off the parenting on a child node in the Attribute Editor using the Inherits Transform option.

To keyframe the attribute, right-click on the Inherits Transform label and choose Set Key to keyframe the attribute. This will not be keyframed when pressing s on the keyboard.

Keyframing the Inherits Transform Hierarchical to animate the Parenting on and off from the Attribute Editor.

Constraints

Similar to Hierarchical Parenting allows one object to be transformed by another object. This can be turned off and on, or anywhere in between. Therefore, the connection between them can be keyframed gradually, blending the transformations.


Constraints can also be added to specific individual transforms, such as translate, rotate, and scale, or even individual channels like rotate y. You can also adjust and keyframe the offset from parent to child.


Driver (constraining) Object

The object that leads, or drives, the movement is the Source, which acts as the superordinate (parent) which leads the movement of the constrained object.


Target (constrained) Object

The object that is connected to the Source object by a constraint is the Target object (the subordinate), or the constrained object which is sometimes called the child.


As opposed to Hierarchical Parenting, a constrained object can have multiple sources or parents. Targets (children) can have multiple parents and can also have multiple siblings, which are other children of the same parent object.

Constant Options

The following are common options for many of the Constraints.


Maintain Offset

If you need the constrained object to keep its original distance from the constraining object, open the option box for the constraint, and check (enable) the Maintain Offset option.


Offset

You can set the constrained object at a position that is distanced from the constraining object using translate X, Y, and Z values. The target point is the position of the target object's pivot, for the average position of the rotate pivots of the target objects. Default values are all 0.


Constraint Axes

Select an axis from the Constraint Axes to limit the axes to change with the constraining object. Determines if the constrained object is restricted to a specific axis (X, Y, Z) or to All axes. When All is checked, the X, Y, and Z boxes are dimmed.


Weight

The weight is usually at 1, meaning 100%. It can be set to less which will only partially have the constrained (driven) object follow the constraining (driver) object.


Buttons

Click the Add button to apply the constraint and close the option box, or to keep the window open after applying the constraint click the Apply button.

Examples

The following examples are some of the constraints used in Maya. Constraints are commonly used in Rigging and used in Animation. There are more constraints in Maya than displayed here.


Parent Constraint

To cause the translation and rotation of the constrained (child) object to the constraining (parent) object, so that they behave similarly to Hierarchical Parenting, use a parent constraint. A parent constraint can be isolated to individual translation channels, such as translate x, or only rotations.

An example of an object with a Parent Constraint. Notice how the constrained object orbits around the constraining object

To add a Parent constraint, select the driven object first, then select the driver object next and choose Parent from the Constrain menu. Click the option box to change initial settings.

Point Constraint

Causes the constrained object (child) to move (translate) with the position of the target (parent) object, or the average position of several objects.

In the Parent Constraint options, showing the defaults. Maintain Offset is on by default for a Parent Constraint.

An example of an object with a Point Constraint

In the Point Constraint options, showing the defaults. Maintain Offset is off by default for a Point Constraint.

Orient Constraint

Causes the orientation (rotation) of the constrained object (child) to match the target (parent) object. This constraint is useful for making several objects rotate simultaneously.

An example of an object with an Orient Constraint. Notice how the constrained object rotates on its local axis mirroring the rotation of the constraining object

In the Orient Constraint options, showing the defaults. Maintain Offset is off by default for a Orient Constraint.

Aim Constraint

Causes the constrained (child) object's axis to aim at the target (parent) object or objects. A typical use of an aim constraint is to set up a locator that controls eyeball movement.

An example of an object with a Aim Constraint where the constrained object points at the constraining object

In the Aim Constraint options, showing the defaults.

Aim Vector

The aim vector will point at the target point, forcing the constrained object to orient itself accordingly. The direction of the aim vector relative to the constrained object's local space. The default specifies that the object's local rotation positive X-axis aligns with the aim vector to point at the target point (1.0000, 0.0000, 0.0000).


Up Vector

Specifies the direction of the up vector relative to the constrained object's local space. The default specifies that the object's local rotation positive Y-axis will align with the up vector. In turn, by default, the up vector will try to align with the world up vector. Further, by default, the world up vector will point in the direction of the world space's positive Y-axis (0.0000, 1.0000, 0.0000).


World Up Vector

Specifies the direction of the world up vector relative to the scene's world space. Because Maya's world space is "Y-up" by default, the default world up vector points in the direction of the world space's positive Y-axis (0.0000, 1.0000, 0.0000).


World Up Object

Specifies that the up vector tries to aim at the origin of a specified object instead of aligning with the world up vector. The world up vector is ignored. The object whose origin the up vector tries to aim at is called the world up object.

Pole Vector Constraint

Causes the direction of an IK joint chain to point toward the target (parent) object. The IK pole vector rotate plane handle for a joint chain is constrained to a locator, or controller, to determine the direction a joint chain will bend. This is ideal for arms and legs when rigging a character.

An example of an object with a Pole Vector Constraint where the constrained object points at the constraining object

The only options for the Pole Vector Constraint is the weight. Usually, this would be 1, meaning 100%. It can be set to less which will only partially have the pole vector follow the constraining (Driver) object.

The following video goes through constraints and how they can be used. The video covers Maya 2019, but the same procedures apply to more recent versions of Maya.