On this page
This feature is still under development. The current functionality is unfinished and subject to change, and may have thin or no documentation. Please bear this in mind when using it.

Overview

The behavior of a rig can be built up by manually creating a graph or by piecing together rig components. Rig components are either pre-built components shipped with Houdini, or you can create your own components to be reused in different rigs. The APEX Autorig Component SOP is an interface to several pre-built rig components that add functionality such as FK, IK, and bone deform to build up the rig logic of a character.

We start by introducing Houdini’s pre-built rig components through several simple examples. We then use the rig components to build a basic rig for the Electra test geometry. Finally, different approaches are presented for building character rigs.

Pre-built rig components

This section presents several basic examples of the pre-built rig components available in the APEX Autorig Component SOP. We start with adding FK, bone deform, and control shapes to a 3-joint tube geometry. We then introduce the IK, spine, and transform driver rig components.

FK

In this example, FK rig logic is added to a 3-joint tube geometry using the APEX Autorig Component SOP.

  1. Start by drawing a skeleton for the tube geometry. The skeleton has joints point_0, point_1, and point_2, where point_0 is the parent of point_1, which is the parent of point_2. See working with skeletons for more information on creating skeletons.

    Create skeleton for tube geometry
    Draw a skeleton

    In this example, bone deformation is not added to the rig logic, so from this point onward, the tube geometry is no longer needed.

  2. Add the skeleton to a packed folder structure which holds the different input elements (geometry, skeleton, and rig) for our tube “character”. Only elements that are added to a packed folder structure can be displayed in the animate state. See the packed character format for more information on how to prepare character data for evaluation in the animate state.

    Note

    The term “character” within the packed folder structure refers to a generic container that contains a piece of rig logic and the elements referenced by the rig logic’s inputs. In practice, a character container could be a character, a prop, or an asset.

  3. Create a rig graph using an APEX Autorig Component SOP. An easy way to start building up rig logic is by using the FK rig component, which creates an FK hierarchy based on the joint hierarchy of a skeleton.

    Add FK rig logic to tube

Node

Description

add_to_packed_folder

Adds character elements to a packed folder structure. In this example, the tube skeleton is added to the packed folder structure and named tube.skel (set Name to tube, and Type to skel).

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

  1. Select the Pack Folder SOP in the network editor.

  2. At the top of the pane where you want to open the rig tree view, click the New Tab icon and select New Pane Tab Type ▸ Animation ▸ Rig Tree.

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

  4. Set Type to Packed Folders.

The following packed folder hierarchy is displayed:

/
-- tube.skel

A rig graph can now be added to the packed folder structure using the APEX Autorig Component SOP.

fk

This pre-built FK rig component creates a rig graph by translating the tube skeleton in the packed folder structure into a rig hierarchy. It takes each of the skeleton joints and creates a TransformObject node that represents the skeleton joint position, with its restlocal parameter set to the rest position of the joint. The TransformObject nodes can then be turned into controls that the user can interact with in the animate state. The FK component adds the rig graph to the packed folder structure.

In the APEX Autorig Component SOP, set the Component parameter to fktransform.

Note

The FK component translates the skeleton into a rig hierarchy, so it is useful to have this as the first pre-built component when building up rig logic.

Setting

Parameter

Rig name

By default, the rig that is created by the FK component is named Base.rig (specified in the Rig section, Name parameter). You can change the name of the rig, but be aware that all of the other pre-built 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.

Source skeleton

In the Source tab, skeleton parameter, specify the skeleton that is used to create the rig hierarchy. By default, it is set to Base.skel. Change the skeleton to match the name of the skeleton in the packed folder structure, in our case, tube.skel.

Create controls

To create controls on the rig, populate the *promotegroup parameters in the Controls tab with the TransformObject nodes you want to turn into controls. TransformObject nodes are turned into controls when their parameters are promoted (connected to the graph input node). See APEX graphs for more information on creating controls.

In the *promotegroup parameters, use the APEX path pattern syntax to specify groups of TransformObject nodes.

The packed folder structure now contains the skeleton and the rig graph. Select the fk APEX Autorig Component SOP and open the rig tree view to see the following packed folder hierarchy:

/
-- tube.skel
-- Base.rig

Open the APEX network view to see the rig graph generated by the FK rig component, as shown below (nodes are rearranged and colors are added for clarity). The green 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 (their t and r ports are connected to the graph input node). See parent-child hierarchies for information on how TransformObject nodes are connected to define node hierarchies.

Rig graph generated by FK rig component

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

View the FK functionality in the animate state:

  1. Select the fk APEX Autorig Component SOP and turn on its display flag.

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

FK functionality in animate state

Bone deform

Bone deform rig logic is now added to the previous FK rig. To perform bone deformation, first create capture weights on the geometry using the Joint Capture Biharmonic SOP. The updated geometry is then added to the packed folder structure along with the skeleton.

Note

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

Add bone deform rig logic

Node

Description

add_to_packed_folder

Adds the following character elements to a packed folder structure:

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

  • The tube skeleton used to generate the rig logic. This is the second input to the Pack Folder SOP. We name the 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 that the Name and Type parameters are listed in the Pack Folder SOP parameters. See the packed character format for more information on naming character elements in the packed character format.

The following packed folder hierarchy is displayed in the rig tree view:

/
-- tube.skel
-- tube.shp

bonedeform

Adds bone deformation logic to the rig graph created by the FK component upstream. In the APEX Autorig Component SOP, set the Component parameter to bonedeform.

Setting

Parameter

Rig name

By default, this component adds logic to Base.rig, set in the Rig section, Name parameter.

Animated skeleton

The output of the SetPointTransforms graph node is the animated skeleton. Set the animatedskeleton parameter to <Name of SetPointTransforms node>.<output>. By default, it is set to pointtransform.geo, which matches the SetPointTransforms node name and output port in the rig graph generated by the FK component.

See APEX graphs for more information on the SetPointTransforms node.

Source geometry and skeleton

Under the Settings tab, change the following parameters to match the names of the geometry and skeleton in the packed folder structure:

  • restgeo = tube.shp

    The geometry with the capture weights we want to deform.

  • restskeleton = tube.skel

    The name of the input skeleton that is the base for the capture weights. The joints of restskeleton need to match up with the capture weights on restgeo.

  • outputgeo = tube.shp

    The name of the output geometry we want to display. It usually matches the name of the geometry on the graph input node.

The bone deform rig component adds additional logic to the FK rig graph from the previous example.

Rig graph generated by FK rig component
Rig graph with added bone deform logic

In the animate state, the tube geometry has controls that can be selected to perform FK posing.

Bone deformation in the animate state

Configure controls

Use the APEX Configure Controls SOP to configure the shapes and colors of the controls.

Configure controls

Node

Description

adjust_control_ shapes_colors

Add configurations for different groups of controls by clicking beside Control Configs.

Setting

Parameter

Rig name

Specify the rig to configure the controls for in the Rig Source parameter. In our example, we set Rig Source to /Base.rig.

Controls to configure

In the Control Group parameter, choose from the drop-down list or use the APEX path pattern syntax to specify groups of TransformObject nodes.

Control shape, size, and color

For each group of controls in the Control Configs multiparm, turn on the desired Use Shape Override, Use Shapeoffset, and Use Color parameters.

Configured control shapes and colors

IK

In this example, an IK rig is built for the tube skeleton. An FK rig hierarchy is first created from the skeleton, and then IK functionality is added on top of the FK rig.

Add IK rig logic

Node

Description

add_to_packed_folder

Adds the tube skeleton to the packed folder structure. We name the skeleton tube.skel (set Name to tube, and Type to skel).

fk

Translates the tube skeleton into a rig hierarchy. In the APEX Autorig Component SOP, set the Component parameter to fktransform.

Setting

Parameter

Source skeleton

In the Source tab, skeleton parameter, specify the skeleton that is used to create the rig hierarchy. Change the skeleton parameter to match the name of the skeleton in the packed folder structure, in our case, tube.skel.

Controls

Since we only want to manipulate the IK controls in this example, we don’t promote the FK joints to be controls, so remove all the TransformObject nodes from the *promotegroup parameters in the Controls tab.

ik

Adds IK logic to the rig graph created by the FK component upstream. In the APEX Autorig Component SOP, set the Component parameter to smoothik.

Setting

Parameter

Source skeleton

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

Turn off mirroring

In the Settings tab, turn off mirror since we don’t have a left and right side in the rig hierarchy.

Joints driven by the IK controls

In the Driven tab, set the driven joints based on the parent-child joint hierarchy in the skeleton:

  • root = point_0

  • mid = point_1

  • tip = point_2

IK controls

In the Controls tab, specify the names for the IK controls to create, for example:

  • polevector = pole

  • ikhandle = ikhandle

The driverparent parameter defines the control that the polevector and ikhandle controls are parented under. If you move the driverparent control, the polevector and ikhandle controls move with it. If you leave driverparent empty, the polevector and ikhandle controls are not parented to anything.

IK functionality in the animate state:

Spine

The spine autorig component adds a basic spine setup based on a spline curve. It can be used as a starting point for a bendy or twist setup. In this example, spine rig logic is added to the tube skeleton.

Add spine rig logic

Node

Description

tube_skeleton

We create a 9-joint skeleton to better see the effects of the spine rig.

add_to_packed_folder

Adds the tube skeleton to the packed folder structure. We name the skeleton tube.skel (set Name to tube, and Type to skel).

fk

Translates the tube skeleton into a rig hierarchy. In the APEX Autorig Component SOP, set the Component parameter to fktransform.

Setting

Parameter

Source skeleton

Specify the skeleton that is used to create the rig hierarchy in the Source tab, skeleton parameter. Change the skeleton parameter to match the name of the skeleton that is in the packed folder structure, in our case, tube.skel.

spine

Adds spline rig logic to the rig graph created by the FK component upstream. In the APEX Autorig Component SOP, set the Component parameter to spine.

Setting

Parameter

Joints driven by the spine controls

In the Driven tab, add a transform parameter for each of the 9 joints and set the parameters to point_0, point_1, etc.

Spine controls

In the Controls tab, 4 spine controls are created by default and placed evenly spaced along the joint chain. The hierarchical behavior of these controls are set in the controlhierarchy parameter:

  • fk - The controls are in an FK hierarchy based on the order that they are listed in the Controls tab.

  • flat - There is no hierarchy for the spine controls - the controls are not parented to anything.

  • tangent - The spine controls in the middle of the joint chain are parented to the closest outer control.

adjust_control_ shapes_colors

Configures the shapes and colors of the joints and controls.

Select this SOP and enter the animate state to view the spine functionality. The skeleton joints are red, and the spine controls are blue:

Spine functionality with middle controls parented to closest outer control

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 new transform driver controls allow you to define different pivots and orientations for the existing skeleton joints without having to create new skeleton controls that would otherwise affect any bone deformation downstream.

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

Add transform driver rig logic

Node

Description

tube_skeleton

We start with a 3-joint skeleton.

transformdriver

Adds new controls that drive existing controls on the skeleton. In the APEX Autorig Component SOP, set the Component parameter to transformdriver.

In this example, we add a transform driver control, root, that sits at the location of point_0 and drives the translation and rotation of point_0. Click beside the setups multiparm to add and define the parameters for each of the new transform driver controls. (Remove any extraneous controls that are created by default in the setups multiparm.)

Setting

Parameter

Source skeleton

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

Control name

In the Control tab, set driver to root.

Control location

The new root control sits at the location of the driverguide parameter (in the Control tab). Set driverguide to point_0. 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.

Transform components driven by the control

In the Control tab, turn on makecontrol, promotet (translate), and promoter (rotate).

Joints driven by the control

In the Driven tab, set driventransforms to point_0.

Transform driver control sits at root of joint chain

Add a 2nd transform driver control

We now add a 2nd transform driver control, tip, that sits at the location of point_2 and drives the translation and rotation of point_2. When the root transform driver control is translated or rotated, point_2 no longer moves because it is constrained to the tip control.

Transform driver controls at root and tip of joint chain

Transform driver drives a joint at a different position

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 of 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

Build a character rig

In this example, pre-built rig components are used to build a rig for the Electra test geometry. The following pieces are added to build the final rig:

  • FK rig hierarchy based on the Electra skeleton joint hierarchy

  • IK logic

  • Additional controls

  • Spine logic

  • Configure controls

Create an FK rig

An FK rig is created for the Electra test geometry, and bone deform logic is added to the rig graph in order to view the FK functionality on the character.

Add FK and bone deform rig logic using pre-built rig components

Node

Description

Electra test geometry

On the Electra test geometry, set the Output parameter to Skin Surface. This outputs Electra’s shape as its 1st output. The 2nd output is Electra’s skeleton.

start_character

Adds the following character elements from the Electra test geometry to a packed folder structure:

  • A shape that is used as the rest skin for deformation. This is the first input to the Pack Folder SOP. We name this skin Base.shp (set Name to Base, and Type to shp).

  • The Electra skeleton. This is the second input to the Pack Folder SOP. We name this skeleton Base.skel (set Name to Base, and Type to skel).

At this point, the Electra skin and skeleton are added to a packed folder structure. The following packed folder hierarchy is displayed in the rig tree view:

/
-- Base.shp
-- Base.skel

fk

Creates a rig graph by translating the Electra skeleton into a rig hierarchy. The rig graph is added to the packed folder structure. In the APEX Autorig Component SOP, set the Component parameter to fktransform.

Setting

Parameter

Rig name

By default, the rig that is created by the FK rig component is named Base.rig (specified in the Rig section, Name parameter).

Source skeleton

The name of the source skeleton is specified in the Source tab, skeleton parameter. By default, it is set to Base.skel, which matches the name of the skeleton in the packed folder structure.

The following packed folder hierarchy is now displayed in the rig tree view:

/
-- Base.shp
-- Base.skel
-- Base.rig

bonedeform

Adds bone deformation logic to the rig graph. In the APEX Autorig Component SOP, set the Component parameter to bonedeform.

The default values in the restgeo, restskeleton, and outputgeo parameters match the names of the character elements in the packed folder structure.

Perform FK posing on Electra in the animate state:

  1. Select the bonedeform APEX Autorig Component SOP and turn on its display flag.

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

Electra with FK rig logic

Add IK rig logic

We build on the above FK rig logic by adding IK functionality for the arms and legs. The IK rig component defines the functionality for a single IK chain (and optionally its mirrored joints), so an IK component is needed for the arms and another for the legs.

Add IK rig logic for arms and legs

Node

Description

ik_arms

Adds IK functionality to the character’s arms. In the APEX Autorig Component SOP, set the Component parameter to smoothik.

Setting

Parameter

Source skeleton

Set guidesource to the skeleton in the packed folder structure, Base.skel.

Mirroring

In the Settings tab, turn on the mirror parameter so that the IK functionality is mirrored on the right arm of Electra.

Arm joints driven by the IK controls

In the Driven tab, set the driven joints based on the skeleton joint hierarchy:

  • root = upperarm_l

  • mid = lowerarm_l

  • tip = hand_l

Skeleton arm joints

IK arm controls

In the Controls tab, specify the names for the IK arm controls that are created by this component, for example:

  • polevector = arm_pole_l

  • ikhandle = arm_ikhandle_l

The driverparent parameter defines the control that the polevector and ikhandle controls are parented under. If you move the driverparent control, the polevector and ikhandle controls move with it. If you leave driverparent empty, the polevector and ikhandle controls are not parented to anything.

ik_legs

Adds IK functionality to the character’s legs. In the APEX Autorig Component SOP, set the Component parameter to Use Second Input, which copies the settings from the previous APEX Autorig Component SOP to the current SOP. You can then turn on various parameters to override the previous component’s settings.

Setting

Parameter

Leg joints driven by the IK controls

In the Driven tab, turn on and set the driven leg joints based on the skeleton joint hierarchy:

  • root = thigh_l

  • mid = calf_l

  • tip = foot_l

Skeleton leg joints

IK leg controls

In the Controls tab, turn on and specify the names for the IK leg controls that are created by this component, for example:

  • polevector = leg_pole_l

  • ikhandle = leg_ikhandle_l

bonedeform

View the IK behavior on Electra:

  1. Select the bonedeform APEX Autorig Component SOP and turn on its display flag.

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

Character with IK rig logic

Add spine rig logic

We now add spine logic to the Electra rig. Before adding the spine rig component, we add a hierarchy of additional controls to the rig, where one of the controls is used by the spine component as a spine control.

Add spine rig logic

Node

Description

additional_controls

Adds two controls to the rig - a main control that sits at the skeleton’s root joint, and a cog control that sits at the skeleton’s pelvis joint. The cog control is used by the spine rig component as the parent of the spine joint chain.

In the APEX Autorig Component SOP, set the Component parameter to transformdriver. Click beside the setups multiparm to add a set of parameters for each of the new controls.

Setting

Parameter

Source skeleton

Set guidesource to the skeleton in the packed folder structure, Base.skel.

Control name

In the Control tab, set driver to main or cog.

Control location

In the Control tab:

  • main control: Leave driverguide blank. The control is created at the origin.

  • cog control: Set driverguide to pelvis.

Control parent

In the Control tab:

  • main control: Leave driverparent blank because main has no parent.

  • cog control: Set driverparent to main.

Joints driven by the control

In the Driven tab:

  • main control: Set driventransforms to root.

  • cog control: Set driventransforms to pelvis.

Transform components driven by the control

In the Control tab, turn on makecontrol, promotet (translate), and promoter (rotate).

Added main and cog controls

spine

Adds spline logic to the rig. In the APEX Autorig Component SOP, set the Component parameter to spine.

Setting

Parameter

Joints driven by the spine controls

In the Driven tab, set the transform parameters to the skeleton joints that are driven by the spine controls: pelvis, spine_01, spine_02, and spine_03.

Pelvis and spine joints

Spine controls

In the Controls tab, 4 spine controls are created by default and are placed at the 4 joints specified in the transform parameters.

The video below shows the difference between a rig with and without spline logic. The skeleton spine joints are yellow, and the spine controls in the spline logic (right video) are green.

Rig without spline logic
Rig with spline logic

Configure controls

Use the APEX Configure Controls SOP to configure the shapes and colors of the controls. Specify the rig to configure the controls for in the Rig Source parameter. In our example, we set Rig Source to Base.rig.

After configuring the controls, we are finished building the rig for Electra.

Final Electra rig
Before (left) and after (right) configuring control shapes and colors

Using a guide skeleton to create a rig hierarchy

In this example, joints are added to a base skeleton to create a guide skeleton. The guide skeleton is used to create an initial rig hierarchy, and rig logic pieces are added to the hierarchy to build the final rig. The added joints are used later as a reference for creating controls - essentially, they are controls represented as joints. For this reason, you would need to know beforehand the controls you would like in your rig so that the appropriate joints are added to the base skeleton. Because the controls are represented as joints, we can define the hierarchy and rest positions of the controls as part of the guide skeleton.

The steps to building the rig:

  1. Add joints to the base skeleton to create a guide skeleton.

  2. Create an FK hierarchy rig graph from the guide skeleton using the FK rig component. After this point, the guide skeleton is no longer used. All the information that is needed to build the rig will come from the rig graph.

  3. Add rig logic pieces (IK, bone deform, etc.) to build the final rig.

Create a character

We start with the Electra test geometry and use its skeleton as the base skeleton. Joints are then added to the base skeleton to create a guide skeleton. The Electra skin, base skeleton, and guide skeleton are then added to a packed folder structure.

Create a character with a guide skeleton

Node

Note

Electra test geometry

On the Electra test geometry, set the Output parameter to Skin Surface. This outputs Electra’s shape as its 1st output. The 2nd output is Electra’s skeleton, which is used as the base skeleton.

guide_skeleton

The Skeleton SOP creates a copy of the Electra skeleton, and additional joints are added to this copy, referred to as a guide skeleton. The joints that are added are used later as a reference for creating controls.

Original Electra skeleton (left); guide skeleton with added joints in black (right)

start_character

Adds the following character elements to a packed folder structure:

  • A shape that is used as rest skin for deformation. This is the first input to the Pack Folder SOP. We name this skin Base.shp (set Name to Base, and Type to shp).

  • The Electra skeleton. This is the second input to the Pack Folder SOP. We name this skeleton Base.skel (set Name to Base, and Type to skel).

  • The guide skeleton with the added joints. This is the third input to the Pack Folder SOP. We name the guide skeleton Guides.skel (set Name to Guides, and Type to skel).

Build the rig logic

Several pre-built rig components are used to build up the rig logic of the character. Each of the APEX Autorig Component SOPs below adds a piece of rig logic to the overall rig logic of the character.

Rig components build up the rig logic of a character

For more information on the individual rig components, see pre-built rig components. The table below highlights the settings specific to building a rig with a guide skeleton.

Node

Rig component

Note

fk_from_skeleton

fktransform

Creates a rig graph by translating the guide skeleton in the packed folder structure into a rig hierarchy. After this point, the guide skeleton is no longer used. All the information needed to build the rig will come from the rig graph created by this FK component.

In the Source tab, set the skeleton parameter to Guides.skel.

additional_controls

transformdriver

Turn off the guidesource parameter because information is being retrieved from the rig graph and not the guide skeleton.

spine

spine

Turn off the guidesource parameter.

arm_ik

smoothik

Turn off the guidesource parameter.

leg_ik

Use Second Input

Turn off the guidesource parameter.

Add the character to a scene

Use the APEX Scene Add Character SOP and APEX Scene Animate SOP to add the character to a scene to be animated. See the animation workflow for more information.

Using a guide skeleton with added control shapes

In this example, joints are added to a base skeleton to create a guide skeleton. Control shapes are then added to the guide skeleton, and this final guide skeleton is added to a packed folder structure.

When building the rig logic further down, information on the control positions and shapes is retrieved from the guide skeleton, which is faster than retrieving information from the rig graph.

Build rig using a guide skeleton
Guide skeleton with control shapes

Node

Rig component

Note

fk_from_skeleton

fktransform

Creates a rig graph by translating the base Electra skeleton into a rig hierarchy. In the Source tab, set the skeleton parameter to Base.skel.

additional_controls

transformdriver

Adds additional controls to the rig and checks the guide skeleton to get the correct positions. Set the guidesource parameter to Guides.skel.

spine

spine

Turn off the guidesource parameter.

arm_ik

smoothik

Turn off the guidesource parameter.

leg_ik

Use Second Input

Turn off the guidesource parameter.

adjust_control_colors

N/A

Set the Guide Source parameter to Guides.skel so that the control shapes are picked up from the guide skeleton.

KineFX

Preparing character inputs

Rigging with rig components

Rigging with APEX graphs

Building graphs with APEX Script

Animating in the viewport

Technical Animation

Deformation

Animation Retargeting

Pre-H20

Panes

Appendix