On this page

Blend between IK and rotations

When you animate a bone chain you sometimes want to use bone rotations to drive the motion while other times you want to use an IK goal.

Houdini’s IK set-up lets you smoothly transition between the two control schemes with a blend attribute you can set with an interactive handle in the Pose tool.

Tip

The blend handle and Snap to IK/Rotates menu items mentioned below are available when using the default, single goal setup. If you change the default setup to blend between multiple goals, these UI convenience features will not work. See approaches to rigging for details.

To...Do this

Blend/switch between IK and rotations

  1. Use the tab menu to choose the Pose tool.

  2. Click an IK bone chain. The goal lets you move the end of the chain. Press R to show rotation manipulators for the bones. Because the IK solver is controlling the chain, the rotation handles have no effect.

  3. In the operation control toolbar at the top of the viewer, make sure Handle Mode is set to Object specific handles.

  4. Select the last bone.

  5. Press on the goal handle and choose Show Blend Handle.

    A new handle appears at the bottom of the chain’s axis line.

  6. Drag the blend handle back along its slider line. The closer it is to the root end of the line, the more joint rotations affect the chain.

  7. You can now select joints and use the rotate manipulator (R) to rotate them.

    The rotations are proportionally modified by the blend handle. Large rotations will have a small effect if the blend factor is low. If you then go back and turn up the blend factor, the effect of the rotation will magnified.

Reset the bones to match the IK or rotations

  1. Use the tab menu to choose the Pose tool.

  2. Select the last bone.

  3. Press on the goal handle and choose Snap to IK or Snap to Rotations.

Keyframe IK/rotation blending setups

Note

The blend parameter is part of the kinematics channel operation (kin_chop) that is driving the Inverse Kinematics solution. When you adjust this value using the handle, Houdini updates the parameter on the channel operator.

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 on the first slider’s value and choose Copy Parameter. Then press 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 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 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.

Misc

  • In Houdini, you generally use the Blend Object or the Blend Sticky Object if you want to target onto a uv set on geometry.

  • There are many ways to create parameter relationships in Houdini, such as a maya-like set driven key tool called Blend Pose to help you set up the ch() parameter references (equivalent to mel).

See also

Object-level characters

Rigging

Panes

Animation