Blending

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.

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.

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.

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.

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

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).

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

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

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

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

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

Dynamically unparent an object

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

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.