Home Character animation Pose and animate a character 

Blend parenting of objects

In Houdini, you can parent an object to multiple parents and blend between their influence using a Blend node. This has several important uses, and depending on which way you want to use the feature, you will use different user interface tools:

  • Parenting parts of a character in different spaces depending on different animation needs at different moments. For example, you can set up a character’s head to be pose-able in character space or shoulder space, depending on what kind of movements you're animating at the time.

  • To animate characters picking up, putting down, or handing off objects, you can keyframe parenting relationships. For example, to animate a character picking up an object, you would make the character’s hand become the parent of the object at the moment the character touches it. Then the object will stick with the hand as the character moves.

You can set up dynamic parenting in different ways, which are suited for different uses:

  • You can set up the parents and Blend node manually in the network editor. For dynamic parenting that will be set up once (as in character rigging), this is easier than using the interactive Dynamic Parent tool.

  • The Dynamic Parent tool lets you animate switches between parentage, and automatically creates the needed Blend nodes and expressions to support the transitions. For animating multiple switches, this can be more convenient than setting up the nodes manually.

Set up a blend manually

  1. In the network editor, use the tab menu to create a Blend node.

  2. Connect the parents to the Blend node’s inputs.

  3. In the Blend node’s parameters, choose which parameters you want to import from the various parents. If you used the character root Null as one of the dynamic parents, you probably want to turn off importing its translate parameters (tx, ty, and tz).

  4. The Blend node has separate Weight sliders for each input, letting you mix them arbitrarily. In a two-parent scenario however, you probably only want one slider control that blends between the two inputs. To do that, you need to link the second slider to the first slider so it automatically goes down/up as the other goes up/down.

    Press RMB on the first slider’s value and choose Copy Parameter. Then press RMB on the second slider’s value and choose Paste Relative Reference. Houdini inserts a parameter reference expression to the first slider. Finally, to make the second slider invert the value of the first slider, insert 1- in front of the expression.

Note

In some cases, blending between different parents will introduce unwanted rotations, because the parents have different orientations.

To correct for this, create a new Null and parent it to one of the dynamic parents you want to use, then add counter-rotations to the new Null to correct for the orientation. Finally, wire the new Null into the Blend instead of the original dynamic parent.

For example, if you draw a head bone and dynamically parent it to both the character root Null and a neck bone root, the head may rotate 90 degrees in Z as it blends because the bone is oriented differently from the character root Null. To correct for this, create a new Null parented to the character root, set its Z rotation to -90, then connect the new Null into the blend instead of the character root.

Tip

Make the first Weight slider into a HUD slider to make it easily available as a control for animators.

Use the Dynamic parent tool

To...Do this

Set up for dynamic parenting

  1. Use the tab menu to choose the Dynamic Parent tool.

  2. Select the object(s) you want to dynamically parent (for example, the object that will be picked up or handed off), then click RMB to finish the selection.

    At this point nothing has changed. To actually parent the object, you need to specify transitions (see below).

Dynamically change an object’s parent

  1. Move the time slider to the frame where you want the object to be parented.

  2. Click Add Transition in the operator toolbar at the top of the viewer.

  3. Select the new parent (for example, the goal of a bone chain), then click RMB to finish the selection.

Dynamically unparent an object

  1. Move the time slider to the frame where you want the object to be unparented.

  2. Click End Transition in the operator toolbar at the top of the viewer.

Tip

A chain’s goal is not the ideal parent object because it generally remains oriented to world space while the arm rotates. In a real setup you will probably parent some control object into the hand that will rotate with the arm setup.

How it works

Houdini creates a blend node to parent the child to both a hidden null object (which controls the child’s stationary pose) and the dynamic parent. Keyframes are set on the blend operator’s Sequence parameter which controls which parent is used.