On this page

Introduction to KineFX skeletons

In KineFX, everything is a SOP point. The world transform of a point is defined by position + a 3×3 transform matrix (Translation, Rotation, Scale).

A point is a joint when it has a transform attribute and a name attribute.

A KineFX hierarchy or skeleton is represented by a collection of points connected by polygon lines. The parent-child relationship between joints in a hierarchy is determined by vertex order. However, point ordering is not considered when traversing the hierarchy.

You can create skeletons from scratch, bring them in from object-level, or import them from other DCC packages.

KineFX skeletons vs. Object-level skeletons

KineFX is similar to Crowds in Houdini as it is a joint-based system, unlike the Object- level rigging tools which are bone-based.

There are several key differences between the bones found at the Object-level and the points in a geometry-level SOP skeleton:

  • Bones have length. Whereas joints only take their local space translation into account in order to offset themselves from their parents.

  • Bones have a fixed orientation. This means that a bone’s child will always be offset in -Z by the distance specified by the length of its parent.

  • Bones do not support scale compensation. This makes squash and stretch animation pipelines very unwieldy and impacts performance.

  • Deformation of a capture (skin) is not driven by the bone itself. It is instead driven by the Capture Region SOP inside the bone Object. It is the difference between this Capture Region SOP’s capture pose and the current pose that drives the object-level skin’s deformation.

  • Object-level capture poses are attached to their skins. This means that you will break its skin if you start deleting parts its skeleton. However with SOP skeletons, their capture poses are defined by the Bone Deform SOP’s second input. This means that you can alter a SOP capture pose without having to re-capture (re-skin) its geometry. For example, you can make changes to a skeleton’s joint orientations or tweak a character’s pivots and it will not affect their skin.

Creating skeletons

Skeleton interaction basics and hokeys

When drawing joints while in the Skeleton interaction state, please keep the following information in mind.

Hotkey or Interaction

Action

Enter

Toggles between Create and Modify mode.

Clicking in empty space while in Create mode

Creates a new joint.

⇧ Shift-click in empty space while in Create mode

Creates a floating, unparented joint.

-click or -click a joint while in Modify mode

Selects a joint.

-click or -click a joint while in Create mode

Creates a new joint with the clicked joint as its parent.

Double-click a joint

Selects the clicked joint and all its descendants.

⇧ Shift-click a joint

Adds the joint to the selection group.

⌃ Ctrl-click a joint

Removes the joint from the selection group.

⇧ Shift + ⌃ Ctrl-click a joint’s link or poly line (geometry)

Adds a new joint between the existing joints effectively splitting the poly line in half.

Delete

Remove the selected joint and reparents its descendants to the joint’s former parent.

⇧ Shift + Delete

Removes the selected joint and does not reparent its descendants.

⇧ Shift-drag a poly line while in Tweak mode

Twists or rotates the poly line and its parent/child pair of joints.

⌃ Ctrl-drag a poly line while in Tweak mode

Rotates the poly line using its parent joint as a pivot. This is also called trackball rotation.

⌃ Ctrl + ⇧ Shift-drag a poly line while in Tweak mode

Rotates the poly line along the existing curvature.

⎋ Esc

Exits the Skeleton state.

Visual Feedback

Meaning

White joint

Unselected joint.

Yellow joint

Selected joint.

Red joints

Indicates a cyclical (invalid) hierarchy.

Drawing a skeleton

  1. In the Network Editor, create a Skeleton SOP node.

  2. Turn on the Template flag for your character’s geometry node, select the Skeleton SOP, and then turn on the Display flag for the Skeleton SOP.

    You will now be able to see your character’s geometry while drawing its skeleton.

    Example: Initial Skeleton SOP node network

    Tip

    You can change how your templated character geometry is displayed in the viewport by opening the Display Options window (press D), selecting Set display options for > Display Template Model Geometry, and then setting the Draw mode. We recommend either the Smooth Shaded or the Smooth Wire Shaded mode.

  3. Select the new Skeleton SOP, click in the viewport, and then press Enter.

    You are now in the Skeleton interaction state.

    In this state, you now have access to the Skeleton toolbar, menu, and hotkeys.

    Example: Skeleton state with the Skeleton toolbar and right-click pop-up menu
  4. In the Skeleton toolbar, do one of the following:

    • Select Joint Placement > Freehand.

      Example: Freehand option in the Skeleton toolbar
      Example: Free-drawing joints
    • Select Joint Placement > View Based.

      Example: View Placed option in the Skeleton toolbar

      Recommendation

      When working in the View Based joint placement mode, you should switch to an orthographic view that splits your character down the middle (for example, the Right view).

      Example: Drawing joints along a specific view’s plane
      Example: Resulting joint chain
    • Select Joint Placement > Surface.

      Example: Surface option in the Skeleton toolbar
      Example: Drawing joints along a surface
  5. Set any of the other toolbar options you want.

  6. When you are ready to start drawing your joints, select Create from the Mode drop-down list or press Enter.

    Tip

    Enter toggles the Mode between Modify and Create.

You can now draw your joint chain in the viewport.

Drawing a skeleton on the Construction Plane

  1. In the Network Editor, create a Skeleton SOP node.

  2. Turn on the Template flag for your character’s geometry node, select the Skeleton SOP, and then turn on the Display flag for the Skeleton SOP.

    You will now be able to see your character’s geometry while drawing its skeleton.

    Tip

    You can change how your templated character geometry is displayed in the viewport by opening the Display Options window (press D), selecting Set display options for > Display Template Model Geometry, and then setting the Draw mode. We recommend either the Smooth Shaded or the Smooth Wire Shaded mode.

  3. Click in the viewport and then press Enter.

    You are now in the Skeleton interaction state.

    In this state, you now have access to the Skeleton toolbar, menu, and hotkeys.

    Example: Skeleton state with the Skeleton toolbar and right-click pop-up menu
  4. Show the Construction Plane in the viewport.

    Example: Construction Plane in the viewport
  5. -click on the Construction Plane handle and make sure that the orientation of the Construction Plane is the way you want it to be.

    Example: Construction Plane align normal options

    For example, select the Align normal with world X axis option.

    The orientation of the Construction Plane becomes vertical along the X-axis.

    Example: New Construction Plane alignment
  6. In the Skeleton toolbar, select Joint Placement > Freehand.

    Example: Freehand option in the Skeleton toolbar
  7. Set any of the other toolbar options you want.

  8. Draw your joints.

    The joint chain you draw will auto snap to the Construction Plane.

    Example: Joints snapping to the Construction Plane

Orienting joints

There are many possible reasons you may want to reorient joints in a hierarchy: you may be working with motion capture skeletons that have strange joint rotations, you may be building a skeleton from scratch and you want to make sure that its arms bend at a good angle, or you maybe you added or deleted something from your skeleton and now the angles of your joints are off.

Whatever your reason, KineFX has several tools for and methods of dealing with joint orientations. The following sections are just three examples.

Automatically re-orient joints

For simple joints chains, you can automatically re-orient their joints using the Re-Orient Joints SOP node.

Example: Joints with varying rotations
  1. Create a Re-Orient Joints SOP node.

  2. Connect the output of your skeleton to the input of the Re-Orient Joints SOP.

  3. In the Parameter Editor, specify a Reference Vector for the reorient operation.

    Example: X-axis reference vector specified

    This determines which axis to reorient the joints by. For example, if you want to reorient the joints in your joint chain so that their X-axes look at their child joints, the you would specify a Reference Vector of 1 in the X-axis field.

The joints in your joint chain automatically reorient to the Reference Vector you specified.

Example: X-axes now point down the joint chain

Reorienting joints with orientation picking

There is a handy little mode in Houdini called orientation picking that allows you to quickly assign a primary and secondary axis to any joint.

You can use orientation picking with the Skeleton SOP node when creating your skeletons or adding joints, or with the Rig Pose SOP node when cleaning up your retargets.

  1. In the Node Editor, select your Skeleton SOP node or Rig Pose SOP node.

  2. Click in the viewport and then press Enter to enter the Skeleton SOP or Rig Pose SOP node’s interaction state.

  3. Zoom in on the joint you want to reorient.

    Example: Rig Pose joints that need to be reoriented
    Example: Joint’s original rotation behavior
  4. Select the joint whose orientation you want to change and press ; to enter the orientation picking mode.

    The manipulator handle changes to the orientation picker handle.

    Example: Orientation picker handle
  5. Do the following:

    • ⌃ Ctrl-click on the axis you want as the primary axis. This is the main axis the joint will rotate around. For example, the X-axis.

      The axis handle end will turn from a box shape to a pyramid shape.

      Example: Orientation picker with selected primary axis
    • (Optional) Click the axis you want as the secondary axis. For example, the Y-axis.

    • Click the edge or poly line upstream from the joint you are currently adjusting the orientation for.

    Your joint’s orientation should now use the new primary and secondary axes you defined.

    Example: Rig Pose joint that is now reoriented

    This technique will give you really nice orientations for elbows and knees.

    Example: Joint’s new rotation behavior after orientation picking
  6. Press ; to exit the orientation picking mode.

Tip

Whenever you need to visualize your skeleton outside the Skeleton SOP, Rig Doctor SOP, or Rig Pose SOP nodes, you can use the Visualize Rig SOP node.

Reorienting joints using the Construction Plane

You can adjust the joint rotation axes for a joint chain with the Construction Plane.

In this example, we will be reorienting the axes of an elbow in a biped arm.

  1. In the Node Editor, select your Skeleton SOP node.

  2. Click in the viewport and then press Enter to enter the Skeleton SOP node’s interaction state.

  3. Zoom in on the joints you want to reorient. For example, the elbow joint.

    Example: Original orientations for the joint chain
  4. Show the Construction Plane.

    Example: Skeleton and Construction Plane in the viewport
  5. Select all the main joints in the joint chain where the joint you want to reorient lives. For example, if the joint you want to reorient is an elbow, then select the shoulder, elbow, and hand joints.

    Example: Joints before reorienting using the construction plane
  6. -click the Construction Plane and then select Orient Construction Plane to Selection from the pop-up menu that appears.

    Example: Orient Construction Plane to Selection pop-up menu item

    The Construction Plane orients itself to the joints you selected.

    Example: Construction Plane’s new orientation
  7. Now select the joint in the middle of the chain you want to reorient. For example, for this example we will select the elbow joint.

    Example: Elbow joint before reorienting using the construction plane
  8. -click the Construction Plane and then select Snap Selection to Construction Plane from the pop-up menu that appears.

    Example: Snap Selection to Construction Plane pop-up menu item

    Your joints in the joint chain should now have better orientations.

    This technique will give you really nice orientations for elbows and knees.

    Example: Elbow’s new rotation behavior after snapping to the Construction Plane

Mirroring a skeleton

  1. Draw half your skeleton.

    For steps on how to draw a skeleton, see Drawing a skeleton or Drawing a skeleton on the Construction Plane.

    Alternatively, if you already have a skeleton that you want to mirror, then delete the joints from the half of the skeleton you do not want to keep.

  2. Show the Construction Plane in the viewport.

    Example: Construction Plane in the viewport
  3. -click the Construction Plane handle and then select Align normal with world X axis from the pop-up menu that appears.

    Example: Align normal with world X axis right-click menu item

    The orientation of the Construction Plane becomes vertical along the X-axis.

    Example: New Construction Plane alignment
  4. Select the median joints (for example, for a biped or quadruped these would be the spine joints) from your skeleton.

  5. -click the skeleton and select Snap Selection to Construction Plane from the Skeleton pop-up menu that appears.

    Example: Snap Selection to Construction Plane right-click menu item
    Example: Before & after snapping the character’s joints to the Construction Plane.
  6. Create a Skeleton Mirror SOP node.

  7. Connect the output from your Skeleton SOP node to the input of the Skeleton Mirror SOP.

  8. Make sure that the the Template flag is turned on for your character’s geometry node, select the Skeleton Mirror SOP, and then turn on the Display flag for the Skeleton Mirror SOP.

    Example: Skeleton Mirror SOP node in the network

    You will now be able to see your character’s geometry while mirroring its skeleton.

    Tip

    You can change how your templated character geometry is displayed in the viewport by opening the Display Options window (press D), selecting Set display options for > Display Template Model Geometry, and then setting the Draw mode. We recommend either the Smooth Shaded or the Smooth Wire Shaded mode.

  9. In the Parameter Editor, click the Group parameter’s arrow selection icon, in the viewport ⇧ Shift-click select all the joints that you want to mirror (for example, all the limbs), and then press Enter.

    Example: Joints to mirror selected in the viewport

    The joints you selected are added to the Group field. These are the joints that will now be mirrored.

    Example: Group parameter field
    Example: Initial results of the Skeleton Mirror operation
    Example: Initial results of the Skeleton Mirror operation
  10. Select a Mirroring Style.

    This parameter determines how the transforms of the original joints are mirrored to the new mirrored joints.

    • Choose By Rotation if you want to mirror your joints by rotating their input transforms. This makes it so that any downstream posing can only be done with FK rotations, as this mode will flip animated translations. This useful if you only plan to pose the skeleton using FK rotations and you do not want any negative joint scales.

    • Choose By Scale if you want to mirror your joints by negatively scaling their input transforms. This makes it so that any downstream posing can be mirrored in both rotation and translation. However, all the transforms will be negatively scaled. As such, this style may be problematic if you will be exporting your skeleton to a game editor or other DCC.

  11. Adjust any of the other Skeleton Mirror SOP parameters as needed.

Blending skeletons

You can blend the transforms between two animation skeletons (whole or partial) with the Skeleton Blend SOP node. This is useful when you need to blend a sparse hierarchy to a dense hierarchy, or a dense hierarchy to a sparse hierarchy.

In this example, we will blend an animated biped upper body to an animated whole body biped, retain the character’s skeleton deformations, and even increase or decrease the amount of the blend.

How-to

  1. Use a KineFx import node to bring in your animation skeleton.

    See Bringing animation and character data into KineFX for steps on how to import different data types into SOPs.

    For this example, we will import a single FBX character and then create a subset of its hierarchy using a Delete Joints SOP.

    Example: Animation inputs in the network
    Example: Animation skeletons in the viewport
  2. Create a Skeleton Blend SOP node and a Bone Deform SOP node.

  3. Do the following:

    • Connect the animated pose output (output 3) from your first KineFX import node to input 1 on the Skeleton Blend SOP.

    • Connect the animated pose output (output 3) from your second KineFX import node to the input 2 on the Skeleton Blend SOP.

    • Connect the output from the Skeleton Blend SOP to the Bone Deform SOP node.

    For this example, we will connect the animated pose output (output 3) from the FBX Character Import SOP node to the input 1 on the Skeleton Blend SOP, and then connect the output from the Delete Joints SOP to the input 2 on the Skeleton Blend SOP. We also added two Rig Pose SOP nodes to the network to animate the two different inputs.

    Example: Skeleton Blend SOP in the network
  4. Select the Skeleton Blend SOP and then in the Parameter Editor, adjust its parameter settings.

    The Group parameter on the Skeleton Blend SOP allows you to pick which joints are blended.

    The Bias parameter allows you to adjust the amount of influence the blend has on the output transforms.

    You can also choose to blend in local space or world space.

    Note

    If you are blending animation skeletons in world space, then they need to be in the same world space location before to the blend operation.

    Example: Skeleton Blend SOP parameter settings
    Example: Each input’s animation
    Example: Skeleton blend result

Turning a polygonal line into a joint chain

In addition to drawing your own skeleton joints, you can also turn any SOP polygonal line into a joint chain with the Skeleton SOP node or the Rig Doctor SOP node node.

How-to

  1. In the Network Editor, create a SOP node that will generate a polygonal line.

    For example, like a Line SOP node.

    Example: Line SOP as the beginning of a KineFX rig network
  2. Select the new geometry SOP node you just created, click in the viewport, and then press Enter.

    You should now be able to see your geometry object in the viewport.

    For example, your geometry could be a polygonal line segment or curve.

    Example: Polygonal line input in the viewport
  3. In the Parameter Editor, adjust the properties of your geometry. For example, like its number of points or its length.

    Each point in the geometry will become a joint in your skeleton.

  4. In the Network Editor, create a Skeleton SOP node or a Rig Doctor SOP node.

  5. Connect the output from the geometry node to the input of the Skeleton SOP or Rig Doctor SOP.

    Example: Rig Doctor SOP and Skeleton SOP in the network

    These nodes initialize the point transforms for the geometry as well as give them valid names. In KineFX, a valid hierarchy requires valid point names.

    Example: Rig Doctor SOP and Skeleton SOP parameters side-by-side

You can now see your new KineFX skeleton in the viewport.

Example: Joint chains generated by the Rig Doctor SOP and the Skeleton SOP side-by-side

Tip

Whenever you need to visualize your joint chain outside the Skeleton SOP node or Rig Doctor SOP nodes, you can use the Visualize Rig SOP node.

Adding new joints to an imported skinned character

You can add new joints to the skeleton of a character imported into KineFX, add those new joints to the character’s existing capture (skin), and paint new capture weights for the new joints with the following operators:

Example: Bone Capture Proximity KineFX network

How-to

  1. Create Skeleton SOP node.

  2. Connect the animation skeleton output (output 3) from your KineFX import node to the input on the Skeleton SOP node.

  3. Select the Skeleton SOP node, click in the viewport, and then press Enter.

    You are now in the Skeleton interaction state.

    This node will allow you to add the new joints to your character and have them be part of the capture.

    However, these joints will not be able to drive the capture until they have capture weights. You will be adding those weights with the Capture Layer Paint SOP.

  4. Create a Bone Capture Proximity SOP.

    This node will add any new joints you create with the Skeleton SOP to your character’s capture.

  5. Do the following:

    • Connect the rest geometry output (output 1) from your KineFX import node to the geometry to capture input (input 1) on the Bone Capture Proximity SOP node.

    • Connect the output from the Skeleton SOP node to the extra capture regions input (input 2) on the the Bone Capture Proximity SOP node.

  6. Create a Capture Layer Paint SOP.

    This node will allow you to assign capture weights to the new joints.

  7. Do the following:

    • Connect the output from the Bone Capture Proximity SOP node to the geometry to capture layer paint input (input 1) on the Capture Layer Paint SOP.

    • Connect the output from your Skeleton SOP node (or Rig Pose SOP if you have one for posing) to the intersection geometry (input 2) on the the Capture Layer Paint SOP.

    • Connect the output from the Bone Capture Proximity SOP to the Bone Deform SOP.

  8. Turn on the Display flag on the Bone Capture Proximity SOP and then select the Capture Layer Paint SOP.

  9. In the viewport, paint the capture weights for your new joints.

Your new joints should now affect your character’s capture.

KineFX

Procedural Rigging

Animation Retargeting

Panes