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 |
|
Draw bones without kinematics |
|
Branch a new chain off an existing one |
|
Connect two existing chains with a new bone |
|
Split a bone into two new bones |
|
Create bones in the shape of an existing curve |
How to edit bones
To... | Do this |
---|---|
Examine the rotations on a bone |
|
Remove kinematics from existing bones |
|
Add kinematics to existing bones |
|
Change the kinematics solver of existing bones |
|
Edit bone lengths and zero positions |
|
Parent bones |
|
Remove a joint |
|
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
-
Draw an IK bone chain that has a thigh bone, shin bone, ankle bone, and foot bone.
-
Turn on Keep position when parenting on all the goal nulls.
-
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.
-
Create a new control Null and parent the ankle top goal to it.
-
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.
-
Use the control Null to pose the foot. Translating and rotating the control Null drives the foot, ankle, and leg bones nicely.
-
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.
-
Repeat the previous step for the for the ankle top and ankle bottom goals.
-
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.
-
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
Parameter reference method
-
Parent the Null to the bone.
-
Select the Bone object and in the parameter editor press on the Length parameter and choose Copy Parameter.
-
Select the Null object and in the parameter editor press 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.
-
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.