On this page

Overview

See the guidelines and rigging styles for general advice on bones and rigging in Houdini.

Use the Bones tool at the object level to create Bone objects. Please take care not to confuse them in the following instructions (I’ll try not to either).

Kinematics

Kinematics is the life-like movement of digital characters. There are two main ways to specify the movement of characters:

  • Manually set the rotation of each joint in a bone chain.

  • Inverse Kinematics (IK) lets you specify an endpoint that a bone chain should reach, and then an IK solver automatically finds a set of rotations for the joints that reach that goal. (This process is called “inverse” kinematics because the solver works “backward” from the required result to create the conditions necessary to create it).

    In a bone chain representing an arm for example, this lets you specify the position of the hand, and the solver will automatically rotate the shoulder and elbow joints.

    You can give the solver “hints” that help it create more natural solutions. For example, you can specify a rest angle that tells the solver the natural way a joint bends.

KIN_Chops

Whenever you create bones with kinematic solvers, Houdini creates a CHOP network called KIN_Chops that contains the kinematic solver engines for the various bone set-ups. You can create separate CHOP networks manually if you want, but Houdini will create KIN_Chops automatically.

The solvers inside the CHOP network are simply CHOPs that take bones and goals as inputs and spit out rotations back to the bones. You can even choose/blend between different kinematics solvers with the Composite CHOP.

How to draw bones

Tip

As you're drawing, use the text field in the operation controls toolbar to name the bone.

Tip

Houdini uses an optimized IK solver for bone chains with two bones. If you have a natural two-bone part of the system, try to draw it separately to take advantage of the optimized solver.

To...Do this

Draw bones with kinematics

  1. At the object level, choose the Bones tool.

  2. Use the operation controls toolbar or press RMB to choose a kinematics solver (such as Inverse Kinematics).

  3. Click LMBto draw bones in the viewer. Click RMB to finish drawing.

    In the viewer, the bones are connected in a chain with a small sphere at the root. In the network editor, each bone has a node and the root and chain goals are Null objects. Houdini also creates a CHOP network containing the CHOPs that drive the kinematics.

Draw bones without kinematics

  1. At the object level, choose the Bones tool.

  2. Click LMBto draw bones in the viewer. Click RMB to finish drawing.

    In the viewer, the bones are connected in a chain with a small sphere at the root. In the network editor, each bone has a node and the root is a Null object.

Branch a new chain off an existing one

  • At the object level, choose the Bones tool.

  • To draw from the end of an existing bone, ⇧ Shift + LMB the bone.

  • To parent your new chain to the end of an existing bone but not draw from it, ⌃ Ctrl + MMB the bone.

Connect two existing chains with a new bone

  1. At the object level, choose the Bones tool.

  2. Shift-click the end bone of the first chain to start a new bone from it.

  3. Press ⌃ Ctrl + J to turn on snapping.

  4. Click the root of the start bone of the second chain.

  5. Parent the second chain to the new bone.

Split a bone into two new bones

  1. At the object level, choose the Bones tool.

  2. ⌃ Ctrl + LMB the bone you want to split.

Create bones in the shape of an existing curve

How to edit bones

To...Do this

Examine the rotations on a bone

  • Press MMB on a bone to show its pre-transforms and the actual rotations if the bones are driven by an IK solver.

Remove kinematics from existing bones

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

  2. Press RMB to show the Bones tool’s tool menu and choose Remove Kinematics.

  3. Select the bones you want to remove kinematics from, then click RMB to finish.

Add kinematics to existing bones

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

  2. In the operation controls toolbar , use the pop-up menu to set the kind of kinematics you want to add.

  3. Press RMB to show the Bones tool’s tool menu and choose Add Kinematics.

  4. Select the first bone of the chain and press RMB, then select the last bone and click RMB to finish.

Change the kinematics solver of existing bones

  • Remove the existing kinematics, then add the new kinematics (see above).

  • If you have an existing kinematics solver CHOP you want to use for a bone, enter its path in the bone’s Kinematic solver parameter (on the Bones tab in the parameter editor).

Edit bone lengths and zero positions

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

  2. Click the small squares at the joints between bones and use the translate (T), rotate (R), and scale (E) manipulators to edit them.

    You can also use the special manipulator (Y) to move a joint relative to the chain: along the upper or lower bone axis, or in and out along an axis halfway between the two bone axes.

Parent bones

  1. Houdini will move the child bone to the position of the parent and set them up as a hierarchy in the Network pane.

    If you do not want the child chain to move when it’s parented, turn on the child object’s Keep position when parenting parameter.

    (You can turn this setting off globally in the Objects and Geometry section of the Houdini Preferences window.)

  2. Use the Parent tool, or connect the output of the parent bone to the input of the child.

    If the “child” chain had a null root object, it will not be part of the chain and you can delete it.

Remove a joint

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

  2. Press RMB on the joint you want to remove and choose Delete Joint. Houdini merges the two bones on either side of the joint into one.

Note

Do not to use the transform tools to rotate joints during set-up because these will alter the Rotate values of the bone. Use the Bones tool instead.

Use the transform tool when you are animating the bone chain after setting up the rest pose.

How to create a reverse foot setup

  1. Draw an IK bone chain that has a thigh bone, shin bone, ankle bone, and foot bone.

  2. Turn on Keep position when parenting on all the goal nulls.

  3. Parent the goal at the bottom of the ankle to the goal at the top of the ankle, and parent the toe goal to the ankle bottom goal.

  4. Create a new control Null and parent the ankle top goal to it.

  5. Turn on the control Null’s Keep position when parenting parameter and parent it to the character root Null to put it in character space instead of world space.

  6. Use the control Null to pose the foot. Translating and rotating the control Null drives the foot, ankle, and leg bones nicely.

  7. Clean transforms on the toe goal and then lock the translate parameters and the Y and Z rotation parameters. Only leaving X rotations on the toe unlocked gives nice rotations with the reverse foot setup.

  8. Repeat the previous step for the for the ankle top and ankle bottom goals.

  9. Change the appearance of the control null to reflect its function. For example, you can position it under the foot bone and make it look like a footprint.

  10. You can optionally make the ankle top, ankle bottom, and toe goals invisible and unselectable .

How to position a Null at the end of a bone

Positioning a Null at the start of a bone is fairly easy: parent the Null to the Bone object and set its position and rotation to (0, 0, 0).

To position a Null at the end of a bone, do one of the following.

Snapping method

  1. Turn on display of points .

  2. Parent the Null to the bone.

  3. Use the Pose or Move tool and snapping to snap the Null to the endpoint of the bone.

Parameter reference method

  1. Parent the Null to the bone.

  2. Select the Bone object and in the parameter editor press RMB on the Length parameter and choose Copy Parameter.

  3. Select the Null object and in the parameter editor press RMB on the Translate Z parameter and choose Paste Relative Reference.

    This pastes a parameter reference to the bone’s length, so the Null will always be offset in the bone’s space by the bone’s length. Unfortunately, the referenced length is positive, and we need to offset by a negative number.

  4. Put a minus sign in front of the expression inserted by Paste Relative Reference to reverse the sign (for example, ch("../L_hip_bone1/length)).

Troubleshooting characters

IK-driven movement is jittery

The solver applies transformations hierarchically to objects. In a very large and complex rig network, errors can accumulate which make movement less smooth.

In the kinematic solver CHOP, reduce the tracking threshold factor. This increases the accuracy of transformations but also increases cooking time.

Building rigs