Houdini: Rigging Guide
Houdini: Rigging Guide
RIGGING GUIDE
BY BENJAMIN YDE
ABOUT
This document is made arround begin Februari 2020.
SUMMARY
ABOUT ........................................................................................................................................... 2
SUMMARY...................................................................................................................................... 3
LEARN ............................................................................................................................................ 4
RIGGING BASICS ............................................................................................................................. 5
WHAT IS RIGGING .............................................................................................................................5
RIGGING IN GAMES VS FILM .............................................................................................................5
RIGGING WORKFLOW .......................................................................................................................6
DEFORMATION SYSTEMS ..................................................................................................................7
THINGS YOU NEED TO KNOW BEFORE STARTING ...........................................................................11
RIGGING IN HOUDINI .................................................................................................................... 15
SKELETAL SYSTEMS .........................................................................................................................15
INVERSE KINEMATICS ......................................................................................................................20
BLENDING BETWEEN IK AND FK ......................................................................................................26
SKINNING/CAPTURING ....................................................................................................................27
PYTHON ..........................................................................................................................................32
REFERENCES ................................................................................................................................. 36
LEARN
About: Rigging Autodesk https://www.autodesk.com/autodesk-university/class/Film-
Versus-Game-Rigging-2012#presentation
RIGGING BASICS
WHAT IS RIGGING
3D rigging is in effect the process of creating an invisible skeleton that defines how an object moves.
An animation or 3D rig usually comprises a system of ‘invisible’ objects that can be seen in a 3D
viewport but not in a final render.
At the most basic level, these objects are nulls/groups and joints.
Joints are objects that essentially act as the bones of the skeleton,
where the nulls/groups/ targets act as the cartilage to define the
range of movement. Nulls can also create controllers that are tied
to specific objects within a skeleton, to allow an artist to move and
control elements much more easily than actually trying to select
the specific points themselves.
RIGGING WORKFLOW
1 Analayse the model
4 Test
Test everything and make sure it works.
Try to break the rig.
Are all contraints working?
Make sure it’s ready so it can be used by the animators.
DEFORMATION SYSTEMS
Skeleton
An animation of a character or a mechanical object can be made with a skeletal mesh. The system
provides a way of transformation with use of a hierarchical bone-system which can be defined by
the user. Vertex positions follow the transforms of the assigned bone. It is possible to have
multiple bones assigned to a vertex, which will be blended via the help of a weight-system.
Advantages Disadvantages
Simple Weighted painting
Fast Can be hard to have fine control
Not enough quality for film or vfx
Can be time-consuming
Limited amount of bones
Morphing
Morphing is a technique where vertex positions of a mesh are being blended from a source to a
destination position. Morph target or blend shapes are synonyms that can be used for this
technique. It can be used to animate the face of a character to represent a certain expression. To
move one expression to another, one or more parameters have be to blended. Everything is
precalculated and thus not dynamic. No vertices are skinned to obtain this result.
Advantages Disadvantages
More control over the mesh because the Takes a while when everything is modelled.
pose can be chosen. Everything is pre-calculated and thus less
Easy to use in a 3D-program. dynamic.
Easy to change parameters. Heavy performance because the whole
mesh needs to be recalculated.
When rendering, distortion can happen due
to linear movement.
Each pose needs to be morphed apart
Cage Deformer
Cage Deforming is an intuitive animation tool that allows you to freely edit the mesh deformation
of your object by wrapping with low-resolution geometry called Cage. The object is deformed
along with the cage when you edit the cage. With cage editing tool, you can easily and dynamically
edit the cage by grabbing, stretching, rotating, twisting, distorting. Cage Deformer is very useful
for various purposes, such as correcting errors, secondary action, animation without any bones,
and more.
Advantages Disadvantages
Detailed Control Can make the rig complex
Can add detail to specific area of the rig Can be very slow
Too expensive for game engines
Advantages Disadvantages
Very realistic and accurate in simulations Can appear sloppy
It has a lot of properties to modify the Not standard in engines
object Not easy to implement soft bodies
Merging or splitting of particle groups
Displacement Shader
Shaders are written in code (HLSL, GLSL, Cg) or they can be made in a shader graph, a tool that
works with nodes. The most famous shader graph is the one of Unreal Engine. Shaders are
calculated on the GPU because parallel operations are much faster processed.
First of all, the vertex shader transforms all the vertices from objects space to the projection
space. Further there are more things that happen in here like skinning, displacement mapping and
light calculations (per vertex).
The geometry shader allows us to calculate more geometry on the mesh like fi fur or change the
geomerty by transforming the vertices. Tesselation is often used here.
The rasterizer takes care of the culling, clipping, rasterization, … In general, transferring an image
to pixels. Afterwards the pixel shader calculates the color of a pixel.
In Houdini, VEX is a high-performance expression language used in many places in Houdini, such as
writing shaders for displacement.
Advantages Disadvantages
Displacement happens on the vertex No shader graph in UE4
shader, which makes it much faster (GPU)
Can write own displacement shader
Advantages Disadvantages
Coded At runtime (must be performant)
Can write own displacement Need to iterate over a lot of vertices (cpu)
At runtime
Muscle System
The muscular system is an organ system consisting of skeletal, smooth and cardiac muscles. It
permits movement of the body, maintains posture and circulates blood throughout the body.
Muscle objects populate the skeletal figure in the same manner that actual muscles are arranged.
Anatomy is used as a guide for analysis of the character form. When trying to accurately represent
an animal or human in a muscle simulation, an identical representation of the muscular system is
best. However, using muscles can be computationally expensive and many of the muscles in
smaller areas could cause binding errors.
Advantages Disadvantages
Realistic Complicated
Allows for muscle dynamics Time consuming setup
Slow to compute
Too expensive for game engines
Contraints
With parenting, you are taking an object or a node and directly popping it under another. Constraints
on the other hand, allow you to build relationships without changing the hierarchical structure of the
objects. Further to this, where parenting affects all the transformation channels in one hit,
constraints allow you to break the relationships down into smaller chunks. For example, you can
Point Constrain one object to another so only the translation of an object is affected. When an object
is constrained, you cannot manipulate the channels that are constrained as you can a parent-child
relationship. The object constrained will simply snap back to the leading object.
Joints
Okay, so now we come to the nuts and bolts of
rigging: joints. Like all other objects, joints
have a transform; they can be translated,
rotated and scaled. But joints are unique and
what makes them unique is the fact that they,
and only they, have orientation. It allows a
joint to orient along an axis. You'll notice this
when you have a chain of joints: each parent
joint will be orientated to aim at its child joint.
Joints are the basic building blocks or the rig
and are comparable with bones. This is in the
end exported to the engine.
IK And FK
Forward Kinematics FK (Forward Kinematics) Forward Kinematics means your character rig will
follow the hierarchal chain. This means more control over your chain, but
also means you'd need to position each joint in your chain independently
of each other. For example, with FK if you positioned the character’s hand
the rest of the arm wouldn't follow like it does with IK. Instead you would
need to position each joint independently, starting with the upper arm, the
elbow and then the wrist. This obviously takes more time than IK, but can
give the animator much more control of the poses. Most times riggers will
incorporate both FK and IK into the rig to meet the animator's needs.
Inverse Kinematics IK (Inverse Kinematics) Inverse Kinematics means that the child node
within your rig's hierarchy can influence the movement of its parents. For
ex ample, if you use IK for your character's arm you can position your
character’s hand and the rest of the arm chain will be calculated. This
allows the animator to animate independently of the chain’s hierarchy.
Because of this IK is great when needing to have a character's arm stay
planted on something. For example, pushing against a wall or swinging on
a bar.
Weighted Painting
Weight Painting Weight painting is a vital step once the skeleton has been created. Even though the
bones are put into place, it doesn't mean the 3D model will be able to deform exactly how you want.
When a mesh is bound to the skeleton, the computer doesn't know how much influence each joint
should have over each vertex, so it averages the weight out based on the distance from the joint to
the mesh. Basically painting weights allows you to manually set how much influence a joint has on a
particular area of the model and correct the deformations on the 3D mesh. For example, if the leg
joint has too much influence on the model it might affect the torso area giving you unrealistic results.
Skinning Or Capturing
Skinning (= capturing) is the process of taking the joints or bones of the rig and binding them to the
actual 3D mesh. When the joints are bound to the 3D mesh it allows you to move the joints and the
mesh will follow. Without skinning the mesh to the joints the joints will have no influence on the
actual 3D model. Skinning can be a rigid bind (hard surface meshes = no deformation) or a soft
bind(organic meshes = deformation).
T-Pose Or A-Pose
RIGGING IN HOUDINI
SKELETAL SYSTEMS
Pre-Transforms
The pre-transform is like an invisible parent Null inside each object. The pre-transform can be
useful for setting a certain transform as the "rest" or "zero" state for that object. After that,
values you enter are relative to the pre-transform values. Connecting nodes are the same as
parenting. The child object inherits the transform of the parent and adds its local transform to it.
Object Netwerk Scene View Node Information
Modify Pre-Transform
Clean Transform
This sets the transform parameters to their
default values while maintaining the same
overall transform. Can be done seperatly (next
line).
Clean Translates/Rotates/Scales
This sets the parameter to default while
maintaining the same overall transform.
Extract Pre-transform
Keep Position When Parenting This removes the pre-transform by setting the
When the object is re-parented, maintain its translate, rotate, and scale parameters in order
current world position by changing the object’s to maintain the same overall transform. Note
transform parameters. that if there were shears in the pre-transform, it
can not be completely removed.
Child Compensation
When the object is being transformed, maintain Reset Pre-transform
the current world transforms of its children by This completely removes the pre-transform
changing their transform parameters. without changing any parameters. This will
change the overall transform of the object if
there are any non-default values in the
translate, rotate, and scale parameters.
Bones
Bones can be made manually by creating nodes called “Bone”or via the scene view and the shelf tool
named “Bones” in the shelf Rigging. Don’t forget to set the root of a bone structure when creating
them manually. Grey is manually placed, colored is placed via the shelf tools.
Bones vs Joints
Houdini operates on a bone based system, whereas Maya operates on a joints based system. Bone
based systems allow riggers to rotate bones around their parents and scale the length. Joint based
systems, on the other hand, allow riggers to move joint orientations liberally in space.
In Maya you have joints where the equivalent in Houdini would be a null object with a look-at object
specified as the Aim constraint (don’t rig this way). You can clearly see the underlying difference
when you draw a bone chain in Houdini in the Bone state tool and then import a Maya rig via FBX.
The imported FBX rig will have the null-joint arrangement that you get in Maya. It is not recommend
that you rig this way in Houdini.
Joint based systems provide the flexibility and control of being able to move joints freely; however,
improper joint orientations often produce unwanted artifacts which require post-processing. Bones,
on the other hand, have an orientation. They always point down the -z axis, while up is the y
dimension and x is the flat dimension. Bone hierarchies can also understand the whole bone chain,
which makes it easier to squash and stretch rigs with bones.
Although Houdini operates on a bone based system, you can simulate joint based systems with null
nodes and bones filled in between them. However, for every joint, you will need an IK Solver
constrained to the next null.
Control Objects
Creating A Control Object
Control objects can be made with a null-node. In the misc tab it is possible to
set the shape with extra settings to change the color or shape. Important is to
set a clear color or shape so the animator can use it easly. Mostly see-through
shapes like curves are used so most of the mesh is still visible . If the rig has a
symmetrical system, like for instance a right and left shoulder-elbow-wrist
setup, It’s recommened to use an oposide color, e.g. blue&orange or
green&red. This gives a good contrast when using control objects.
You may ask yourself why not change the default rotation value of the bone itself? You’ll never need
to think of the problem anymore. This will not solve the problem because when doing Inverse
Kinematics, the solver is based on Rz Ry Rx. The only solution is changing the order in the control
object/nullnode. That’s why the rotation order in the bones aren’t visible anymore in the
parameters. You can set them visible again when editing the parameter view, but I see no reason
why you would do that.
Good Bad
or
or
INVERSE KINEMATICS
Basic Setup (manual and automatic)
To use inverse kinematics or simply IK in Houdini you will be in need of an chop (channel operator)
node called “inverse kin”. The node can be made in a custom chop network inside the obj network.
Every IK setup need an end affector point, root bone and end bone, which needs to be specified in
the solver. Every bone in the setup needs to be assigned a solver to as well so the IK system/solver
can do its thing.
An IK solver uses the rest angle to choose how the joint bends as the goal is moved. For example, you
can set the rest angle of the bones around an elbow joint to control which way the elbow bends.
When you create a bone, the rest angle is 0, 0, 0. (The actual angles are defined in the bone’s pre-
transform values.)
To set the rest position of an IK setup you can go to Edit > Objects > IK Rest Pose. This can be used to
let the IK bend in another direction/angle.
Automatic setup
Ofcourse it is possible to setup this system in a few clicks but it is important to know what is
hapenning and why. To setup an automatic system you can click on the “Bones”-tool in the shelf
tools under rigging. Before drawing the bones in the viewport you must select Inverse Kinematics or
else you will create normal bones.
Twist Affector
For the Inverse Kinematics solver, this
specifies an object that controls the twist
orientation of the solution bone angles. This
can be handy when getting the orientation of
an elbow right when using IK on an arm. The
affector can make orientations more
believable when using IK.
Other Paramters
IK Dampening How easily the End Bone can be pulled off the End Affector as the bone
chain is stretched out.
Blend Blend between local bone rotation and IK.
Straighten Solution Will straighten the IK setup when the end affector is out of reach.
Tracking Treshold Specifies how accurate the IK will be performed.
FK Controlled With IK
Forward Kinematics can be done with control object that can be rotated as done before but also with
IK. The system behind this setup is the same setting up a basic IK system. When setup, each bone will
have its own IK solver. The “Bones”-tool in the shelf tools under rigging can help us with setting this
up very quickly.
Constraints
Contraints are transform attributes that can be influenced (position, rotation and scale). The settings
can be set in each bone in the bone tab. Constraints will only work when the solver type is set to “IK
with Constraints”. When using this setup, IK twisting will not be accessible anymore. More on that
later on.
Angle Range Specifies the minimum and maximum rotation angles that this bone can have in
each axis.
Damping Applies damping to the rotation of the bone when the rotation in each axis falls
Angle within the specified angle of its minimum or maximum value. The damping occurs
when the solved angle is within this angle value from the angle range.
Damping Specifies the rate at which damping increases as the rotation varies within the
Rolloff damping angle of the minimum or maximum angles. This can also be thought of as
the linear slope value at the damping angle region.
The constraint shel footls is a common way to create constraints. A few examples:
Follow Path Will position an object on a curve or path and orient it following the path
direction, picking up twist or other attributes from the path.
Blend Will blend the current object transform with other objects.
Parent Blend Will blend the transform of the current parent with other objects and apply
the current local object local transform on top.
Points Will position and orient the current object using point attributes from a SOP
node. It can also be used to get the closest point on geometry.
Surface Will position and orient the current object using interpolated surface
attributes from a SOP node. It can use UV space, parametric coordinates, or
closest distance to the geometry surface.
Blend Pose Will create a series of relationships between several objects, where target
objects will react to driver objects.
The Pose tool can be accesed with the tab in the scene view and type pose or by clicking on the pose
tool icon on the shelf tools on the left. (little person with wires around it). There are 2 Handle Modes
in the tool, Object Specifiek Handles (work with ik) and Global Transform Handle (work with fk).
Imortant to know is that you need to select one of the bones if you want to change the mode. Won’t
doing this will result in the pose tool not working properly.
Snapping Tool
With the snap tool you can snap the IK Pose
Handle to the FK end or the FK end to the IK Pose
Handle.
SKINNING/CAPTURING
Capture And Deform Regions
To bind surfaces to bones, you specify a 3D volume around the bone, inside which
the bone will "capture" surfaces. You will control the capture regions using
manipulators that define the volume in which the capturing will occur. The skeleton
and skin surfaces should overlap in 3D. The Capture Region volume is a tube with
hemispheres at each end. By adjusting the shape of the capture region, you can
affect how points are weighted by the Capture operation. The closer a point is to
the edge of a region, the lighter the weight. Thus you can increase point weighting
by increasing the size of the region.
The capture position (rest position/begin position) can be viewed via Edit > Objects > Capture Pose.
3. Capture Capture it with the bones you just created. Check use capture pose &
color by capture region
When u go back to the network you will see that the tool
automaticly added a capture override node.
The tool can be used on external geometry as well. Like you can
add a grid, select the points you want to deform with the tool
and set the weight with the sliders.
The tool will create a node called capturelayerpaint inside the network.
Basic parameters like changing the radius can be adjusted at the top of the scene view
Using multiple layers can be handy to have a good overview. A similar example is Photoshop.
If you want to smooth out these groups you can simply add a smooth
node and select the attribute boneCapture to smooth instead of the P
attribute.
If you do not get the desired results, you can specify the exact
bones or muscles to mirror to by clicking the Spreadsheet
button on the operation controls toolbar and choosing the
corresponding bones or muscles in the drop-down menu.
PYTHON
Auto FK System
Create a new shelf tool and add the following pictures to the script
FK To IK Matching
IK To FK Matching
REFERENCES
Plural Sight https://www.pluralsight.com/blog/film-games/key-rigging-terms-get-moving
Autodesk https://www.autodesk.com/autodesk-university/class/Film-Versus-Game-
Rigging-2012#presentation
3d total https://3dtotal.com/
SideFx https://www.sidefx.com/
Creative Bloq https://www.creativebloq.com/