Houdini 18.5 Character KineFX

Setting up control geometry

Example: KineFX node network with control geometry

Control objects or geometry are simple packed or unpacked primitives that you can attach to the joints (points) in your KineFX skeleton using the Attach Control Geometry SOP node.

Once you have attached control geometry to your joints, you can use the controls as selectors for those joints. These controls make it easier to select your skeleton’s joints when posing your character with the Rig Pose SOP node.

How to

Set up primitive geometry for a control

  1. In the Network Editor, create your unpacked or packed primitive geometry object that you want to use as a control.

    Tips

    As alternatives to creating control geometry directly in your scene, you can use the following:

    • A File SOP node to reference a .bgeo file on disk that contains all the primitives that you want to use as your controls.

    • A Skeleton SOP node to create KineFX points that you can use as your controls.

    • A Control SOP node to create the same geometry controls that Object Nulls use.

  2. Create a Transform SOP node, connect the output of your control geometry to the input of the Transform node, adjust the scale of the control geometry, and then move your control geometry to the location near your character where you want it to be positioned.

  3. Create a Color SOP node, connect the output of Translate node to the input of Color node, and then in the Color node’s parameters do one of the following:

    • If you want to choose a custom color for the control geometry, set the Class parameter to Primitive and then use the Color parameter to select a color for the control.

    • If you want your control geometry to inherit the color of the joint (point) to which it will be attached, then set the Class parameter to Point and set the Color parameter to white.

  4. (Required) The Attach Control Geometry node requires that each control have a name attribute. As such, create a Name SOP node, connect the output of Color node to the input of Name node, and then type a meaningful name (so that it is easy to identify which joint the control is attached to) for the control in the Name multiparm field. For example, head_control or hand_l_selector.

    Example: Name node parameters

Attach a control geometry to a joint

  1. (Optional) If you have set-up multiple pieces of geometry for multiple uniquely named controls, then connect them all to a Merge SOP node before connecting them to the Attach Control Geometry node.

    Example: Multiple pieces of control geometry with a merge

    Notes

    • Whenever you use a Merge node with the Attach Control Geometry node, the most granular color setting on the controls wins out. For example, vertex color overrides point color, point color overrides primitive color, and primitive color overrides detail color.

    • If the Merge node finds a given attribute (like color) on one node and not another, it will give the components with the missing attribute the found attribute’s default value.

    • If you need to resize all your controls at once, then add another Transform node after the Merge node.

  2. Create an Attach Control Geometry SOP node.

  3. Do the following:

    • Connect your network’s animated pose (like the FBX Character Import SOP node’s animated skeleton output) to the first input of the Attach Control Geometry node.

    • Connect the output from the control geometry’s Name (or Merge) node to the second input on the Attach Control Geometry node.

      Example: Network with a single piece of control geometry
      Example: Network with multiple unique pieces of control geometry

    Notes

    • Once you connect your controls to the Attach Control Geometry node, you can no longer interactively transform them in the viewport.

    • If you have more than one piece of control geometry as inputs to the Attach Control Geometry node, and one of the control’s Color Class parameters is set to Point, then all the controls connected to the Attach Control Geometry node will inherit their joint colors regardless of their class and color settings on their individual Color nodes.

    • If your controls disappear from view after you connect them to the Attach Control Geometry node, then check your joint scales. Your controls inherit the transforms from the joints they are attached to. For example, if your skeleton has 0.01 joint scales, then your controls will get scaled down to match the scale of the joints (and seem to disappear in the viewport) and you would need to resize them. To resize your controls, turn on the Display flag for the Attach Control Geometry node and then select the Transform nodes for each control or add a new Transform node after the merge to scale all the controls at once. Then scale up the controls until they are the right size.

  4. In the Attach Control Geometry node’s parameters, set the following:

    • In the Control Group Name field, specify a group name for the control inputs.

    • Add a Controls multiparm for each control input.

    • For each Controls multiparm you added:

      • In the Group field, specify the group that contains the point(s) you will attach the control to.

        The select geometry arrow icon located next to the Group parameter also allows you to select the skeleton points for the Group from the viewport.

        Tip

        If you type * in the Group field, then control will be attached to all the points in the input skeleton.

      • In the Control Name field, type the name attribute for the control. For example, head_control or hand_l_selector

        All the names of the control geometry inputs also appear in the Control Name parameter’s drop-down list.

    Example: Attach Control Geometry parameters for multiple unique controls

Pose a character with a control

  1. Create a Rig Pose node and then connect the output of the Attach Control Geometry node to the input of the Rig Pose node.

  2. In the Rig Pose node’s parameters lock any transform parameters that you don’t want the control to access. For example, for a head_control you may want the control to only access the Rotate parameter, and not the Translate or Scale parameters.

  3. Turn on the Display flag for your network’s Bone Deform node and then select the Rig Pose node.

    Example: Bone Deform node with Display flag on & Attach Control Geometry node selected. Character model courtesy of Christophe Desse.
  4. In the viewport, select the control.

    The manipulator handles appear around the joint the control is attached to.

    Example: Selected control. Character model courtesy of Christophe Desse.

    A new Transformations multiparm for the control appears in the Rig Pose node’s parameters.

    Example: Rig Pose node’s parameters with new multiparm
  5. Transform the joint as you desire.

    Any transform changes you make to the control’s target joint are inherited by the control’s geometry. This way you will always know the transform state of a joint just by looking at its control.

    Example: Adjusting the rotation and scale of the head with the control. Character model courtesy of Christophe Desse.
See also

KineFX

Procedural Rigging

Animation Retargeting

Panes