Houdini 22.0 Character KineFX

Rigging a simple geometry

Use Houdini’s prebuilt rig components to add rig logic to a 3-joint tube geometry.

On this page

A complete character rig can be built up by piecing together smaller components of the rig. You can use the prebuilt rig components shipped with Houdini, or create your own components that can be reused in different rigs. Houdini’s prebuilt components are available from the APEX AutoRig Component SOP, which provides an interface for adding rig functionality such as FK, IK, and bone deform.

On this page, we introduce Houdini’s prebuilt rig components by adding FK, bone deform, and IK logic to a 3-joint tube geometry. We then use the transform driver rig component to create new controls that drive the existing controls on the tube skeleton.

FK

In this example, we add FK rig logic to a 3-joint tube geometry using the FK transform rig component:

  1. We start by drawing a skeleton for the tube geometry (see working with skeletons for more information on creating skeletons.):

    Create a skeleton for a tube geometry
    • On the Tube SOP, set Rows to 3 and adjust the other parameters to change the size of the tube.

    • Draw a skeleton with 3 joints - point_0, point_1, and point_2 - where point_0 is the parent of point_1, which is the parent of point_2.

      Tube skeleton
  2. Connect the network below, which adds FK rig logic to the character (in this example, we don’t add bone deformation to the rig logic, so the tube geometry is no longer needed):

    Add FK rig logic to the tube geometry
  3. The Pack Folder SOP adds the tube skeleton to a packed character folder structure. We name this skeleton tube.skel - on the Pack Folder SOP, set Name to tube and Type to skel.

  4. See the contents of the packed character folder structure in the rig tree view:

    • Select the Pack Folder SOP in the network editor.

    • At the top of a pane, click the New Tab icon and select New Pane Tab Type ▸ Animation ▸ Rig Tree.

    • In the rig tree view, beside the node name (in our case, add_to_packed_folder), set the drop-down box to the output.

    • Set Type to Packed Folders. The following packed folder structure is displayed:

      /
      -- tube.skel
      
  5. On the APEX AutoRig Component SOP, set the Component Source parameter to FK Transform. This FK rig component creates a rig graph by translating the tube skeleton into a rig hierarchy; it takes each of the skeleton joints and creates a TransformObject node in the rig graph. The TransformObject nodes can then be turned into controls that the user can interact with in the animate state.

    By default, the FK component adds the tag “bind” to all the TransformObject nodes it creates. This tag is specified in the Tags parameter. The bind tag is then picked up by other rig components downstream to add functionality to all the “joints” (TransformObject nodes) in the rig.

    Tip

    Because the FK component translates a skeleton into a rig hierarchy, it is useful to have this as the first prebuilt component when building a rig for a character.

    Note

    By default, the rig that is created by the FK component is named Base.rig (Rig section, Name parameter). You can change the name of the rig, but be aware that all the other prebuilt rig components also have their default rig name set to Base.rig, so you would have to update all the rig names down the chain of APEX AutoRig Component SOPs in your network.

  6. We don’t have a guide skeleton, so set Guide Source to tube.skel.

  7. In the Settings tab, Output Skeleton parameter, specify the skeleton to output, in our example, tube.skel.

  8. In the Source tab, Skeleton parameter, specify the skeleton to use to create the rig hierarchy, in our example, tube.skel.

  9. To create controls on the rig, populate the Promote* parameters in the Controls tab with the TransformObject nodes you want to turn into controls. You can use the APEX path pattern syntax to specify groups of TransformObject nodes. In our example, we want to promote the translation and rotation for all our controls, so we set Promote T and Promote R to *.

  10. The FK component adds the rig graph to the packed character folder structure, as seen in the rig tree view:

    /
    -- Base.rig
    -- tube.skel
    

    In the APEX network view, we can see the rig graph generated by the FK component, as shown below (nodes are rearranged and colors are added for clarity). The TransformObject nodes represent the skeleton joints, and are connected according to the skeleton joint hierarchy. The translate and rotate of each TransformObject node are promoted:

    Rig graph generated by the FK rig component

    See geometry deformation for more information on the TransformObject and skel::SetPointTransforms nodes.

  11. View the FK functionality in the animate state:

    • Select the APEX AutoRig Component SOP and turn on its display flag.

    • Click Animate on the left toolbar or press Enter in the viewport.

      FK functionality in the animate state

Bone deform

We now add bone deform logic to the FK rig graph using the bone deform rig component. To perform bone deformation, we first need to create capture weights on the geometry using the Joint Capture Biharmonic SOP. We then add the updated geometry to the packed character folder structure along with the skeleton:

Add bone deform rig logic

In other DCCs, weight creation often happens on the deformer. In Houdini, weight creation is separate from deformation, so we can prepare the input geometry with the correct weights before diving into APEX to create the rig logic.

  1. The Pack Folder SOP adds the tube geometry and skeleton to a packed character folder structure:

    • The first input to the Pack Folder SOP is the tube geometry used for the deformation. We name this geometry tube.shp (set Name to tube and Type to shp).

    • The second input is the tube skeleton. We name this skeleton tube.skel (set Name to tube and Type to skel).

    Note

    The order of the inputs to the Pack Folder SOP must match the order of the Name and Type parameters in the Pack Folder SOP. See assembling animation data for more information on naming character elements in the packed character folder structure.

    We can see the following packed folder structure in the rig tree view:

    /
    -- tube.shp
    -- tube.skel
    
  2. The APEX AutoRig Component SOP, bonedeform, adds bone deformation logic to the rig graph created by the FK component upstream. On the bonedeform node, set Component Source to Bone Deform. By default, the bone deform component adds logic to Base.rig (set in the Rig section, Name parameter).

  3. In the Settings tab, change the following parameters to match the names of the geometry and skeleton in the packed character folder structure:

    • Rest Geo = tube.shp. This is the geometry with the capture weights we want to deform.

    • Rest Skeleton = tube.skel. This is the name of the input skeleton that is the base for the capture weights. The joints of Rest Skeleton need to match up with the capture weights on Rest Geo.

    • Output Geo = tube.shp. This is the name of the output geometry we want to display. It is usually the same as Rest Geo.

  4. View the additional logic that the bone deform component has added to the FK rig graph (added bone deform logic is in purple):

    Bone deform logic
  5. View the bone deformation in the animate state:

IK

In this example, we start with the FK rig from the previous example and add IK functionality using the multi IK rig component:

Add IK rig logic
  1. We only want to manipulate the IK controls, so we don’t need to promote the FK joints to be controls. On the fk node, remove all the TransformObject nodes from the Promote* parameters in the Controls tab.

  2. On the APEX AutoRig Component SOP, ik, set the Component Source parameter to Multi IK.

  3. Set Guide Source to the skeleton in the packed character folder structure, tube.skel.

  4. In the Driven tab, set Segments to bind. You could also choose bind from the drop-down menu. bind is a tag that was previously added to the TransformObject nodes created by the FK transform rig component. By specifying bind in the Segments parameter, the multi IK component picks up the appropriate TransformObject nodes in the rig hierarchy and adds IK functionality to it.

  5. View the IK functionality in the animate state:

Transform driver

The transform driver rig component is used to create new controls that drive the transforms (translate, rotate, and scale) of existing controls in the skeleton - the existing controls are essentially constrained to the new controls. The transform driver component allows you to define different pivots and orientations for the existing joints without having to create new skeleton controls that would otherwise affect any bone deformation downstream.

In an APEX graph, the transform driver component creates new TransformObject nodes and adds a constraint between the new and existing nodes. The new nodes are not added to the skeleton; they are just extra controls used to drive the skeleton joints.

Note

While the FK transform component can only create controls from the existing joints in the guide skeleton, the transform driver component can add new controls and modify existing ones. You can also use the transform driver component to parent or constrain TransformObject nodes. For example, if you want to change the parenting setup of a specific component, you can use the transform driver to edit the parenting hierarchy.

In this example, we add new controls to the FK rig from the previous example:

Add transform driver rig logic
  1. On the APEX AutoRig Component SOP, transformdriver, set the Component Source parameter to Transform Driver.

  2. Set guidesource to the skeleton in the packed character folder structure, tube.skel.

  3. We add a transform driver control, root, that sits at the position of point_0 and drives the translation and rotation of point_0:

    • In the Settings tab, turn on use_t, use_r, and use_s.

    • In the Driven tab, set driventransforms to point_0. This is the joint that is driven by the control.

    • In the Control tab, driver parameter, specify a name for the new control. We set driver to root.

    • Set driverguide to point_0. This is the position of the new root control. (The restlocal parameters for the new root TransformObject node will be set to the position of point_0.) If nothing is set in driverguide, the new control is created at the origin.

    • Specify the transform components that are driven by the control - turn on makecontrol, promotet (translate), and promoter (rotate).

    • Configure the control shape in the Shape tab.

      Transform driver control sits at the root of the joint chain
  4. We now add a 2nd transform driver control, tip, that sits at the position of point_2 and drives the translation and rotation of point_2. Now when the root transform driver control is translated or rotated, point_2 no longer moves because it is constrained to the tip control:

    • Click beside the setups multiparm to add a new set of parameters for the tip control.

    • In the Settings tab, turn on use_t, use_r, and use_s.

    • In the Driven tab, set driventransforms to point_2.

    • In the Control tab, set driver to tip and driverguide to point_2.

    • Turn on makecontrol, promotet, and promoter.

    • Configure the control shape in the Shape tab.

    Transform driver controls at root and tip of joint chain
  5. When a transform driver control sits at a different position from the joint it is driving, the transform driver acts like a parent constraint - when the transform driver is rotated, the driven TransformObject and all its children rotate about the transform driver.

    Transform driver sits at point_0 and drives point_1
    Transform driver sits at point_0 and drives point_2
    Transform driver sits at point_2 and drives point_1

KineFX

Overview

Preparing character elements

Rigging with APEX graphs

  • APEX graph basics

    Introduction to the APEX graph evaluation framework.

  • APEX graph debugger

    Inspect the values of an APEX graph’s ports within the APEX network view.

  • APEX Script basics for graph building

    An overview of APEX Script, a code interface for building APEX graphs.

  • Graphs for numerical operations

    Example graphs of numerical operations like adding two values, fetching multiple results, and retrieving information from geometry.

  • Graphs for viewport animation

    Example graphs of animate state functionality like creating controls and constraints, and defining joint hierarchies.

  • Graphs for deforming geometry

    Example of a SOP network and APEX graph for deforming a 3-joint tube geometry.

  • Graph metadata

    Information added to graph nodes and ports.

  • APEX path pattern

    A set of rules that allow you to filter and select elements within graphs, skeletons, geometry, and the character folder structure.

  • APEX graph nodes

    APEX nodes provide operations for building up the functionality of APEX graphs, which are used in KineFX to create character rigs and perform other geometry manipulation.

  • APEX updates for H22

    New and updated APEX graph nodes for Houdini 22.

Building rig graphs with APEX Script

Rigging with rig components

Animating in the viewport

  • Animation workflow

    Example networks of adding characters, props, characters, and animation to a scene.

  • Animating in LOPs

    Rig and animate characters and props in the context of a USD stage.

  • Working in the animate state

    Select and manipulate controls, define transform limits for controls, and add skin controls to a character.

  • Animate state menus and HUDs

    Menus, HUDs, toolbars, and options in the animate state.

  • Animate state hotkeys

    Hotkeys available in the animate state.

  • Posing

    Pose characters in the animation scene by using locators, copying and pasting controls, and mirroring poses.

  • Motion paths

    Visualize the motion of controls as curves in 3D space.

  • Constraints

    Create relationships between controls in the animate state.

  • Dynamic motion

    Add physically-accurate projectile motion to your animation in the animate state.

  • Ragdoll

    Add a ragdoll simulation to your animation in the animate state.

  • Full body IK

    Apply full body inverse kinematics to pose the character using high-level targets rather than manipulating individual joints.

  • Secondary motion

    Add physically-accurate effects like lag/overshoot, jiggle, and spring to your animation in the animate state.

  • Control selection sets

    A tree view of controls, selections, and selection sets for the animate state. Allows management of control selection and visibility.

  • Motion mixer

    Combine and edit the animation clips of multiple characters in a timeline-based view.

  • Character picker

    Create a 2D layout with simple buttons for selecting character controls in an animation scene.

  • Animation catalog

    Save, manage, and apply animations and single-frame poses to an animation scene.

  • Animation layers

    Create multiple layers of animation without affecting the original animation.

  • Animation toolbar

    A customizable toolbar consisting of simple slider tools that quickly apply modifications to animation controls and curves.

  • Animation bookmarks

    Frame markers that help organize and identify the different parts of your animation.

Customizing the animate state

SOP-based animation

  • Physics-based motion

    Add physically-accurate motion to your animation using the Projectile Motion and Pendulum Motion SOPs.

  • Ragdoll simulations

    Add a ragdoll simulation to your animation using the Ragdoll Solver SOP.

Deformation

  • Blend shapes

    Create blend shapes using blend shape SOP nodes.

Animation retargeting

Pre-H20

Panes

  • Motion mixer

    A timeline-based view of the animation clips and motion effects of multiple characters.

  • Character picker

    Create a 2D layout with simple buttons to select character controls in an animation scene.

  • Rig tree view

    A hierarchical view of character components, including packed character folders, KineFX rigs, and Object node rigs.

  • Animation editor

    View and edit animated parameters and their transitions between keyframes.

  • Geometry spreadsheet

    Displays details about the geometry selected in the network editor.

Appendix