Houdini 21.0 Character KineFX

Spline 2.0

Sets up a spline solver.

Since 21.0

This component sets up a spline solver and adds the controls for either a tangent control or a custom setup by the user. This component can be run in a loop over different segments, or parts, of the character.

This component creates the controls in the image below:

See rigging a character for an example use of this component.

Parameters

Name

The name to add to the nodes created by this component. When using Segments, the segment name is also added to the node names.

Settings

Curve

Type

The type of spline curve to create from the control points.

Curve Order

The number of control points used to construct the curve. By default, Curve Order is set to 4 because we have the following control points for the spline - the root control, root CV, tip CV, and tip control (see the parameters in the Driver tab).

A Bezier curve (curve type is set in parameter Type) requires that the number of control points is equal to the curve order. Compound curves share a control point between their individual curve segments, so each additional curve segment requires an additional order-1 control points. This requirement can be expressed by the equation <number_of_control_points> % (order-1) == 1. See control spline for more information.

Pin Root

When turned on, constrains the orientation of the driven root to the controls. When turned off, the spline solver determines the orientation of the root.

Pin Tip

When turned on, constrains the orientation of the driven tip to the controls. When turned off, the spline solver determines the orientation of the tip.

Stretch

Add Stretch Control

When turned on, adds an abstract control at the tip control that allows you to adjust the stretch of the spline.

Note

If Use Click and Drag in the handle parameters is turned off, you need to select the abstract control first, then drag to see the effects of the stretch. If Use Click and Drag is turned on, you can click and drag the abstract control in one step.

Stretch

Specifies whether to keep the length of the spline. When set to 0, the spline keeps its length. When set to 1, the spline stretches to follow the control point.

Stretch Scale

Controls the amount of stretch. Increasing this value increases the effect of the stretch.

Squash Scale

Controls the amount of squash. Increasing this value increases the effect of the squash.

Keep Tip Scale

When turned on, the scaling at the tip of the spline remains unchanged as you stretch the spline. When turned off, the tip of the spline is scaled as you stretch the spline.

Driven

Segments

Segments are tags that separate each spline chain. Tags can be set up on skeleton joints using an Attribute Adjust Array SOP. See preparing skeletons for rigging for more information.

If Segments is empty, the spline logic is run once.

Note

The Segments parameter does not take APEX path patterns, for example, the #<tag> function. Instead, specify the tag names directly in this field.

Driven

The TransformObject nodes to drive, for example, spine_01, spine_02, spine_03. This parameter also accepts APEX path patterns, so you can specify tags in this field, for example, #spline.

It’s good practice to also specify the bind tag that is set up by default on the FK transform component’s Tags parameter. The FK transform component is normally the first component used to start building a rig. Including the bind tag helps to ensure that you don’t include other controls that might have inherited, for example, the spline tag. So for this component, you can set Driven to “#bind & #spline”.

Driver

By default, the spline component sets up a tangent spline with 4 controls - Root Name, Root CV Name, Tip CV Name, and Tip Name. The controls are created automatically using the root and tip as references. Make sure the control names are unique and don’t conflict with any other controls.

To avoid naming conflicts when creating multiple splines, you can specify the spline segment using the string “{segment}”. For example, if your segment is named spine (Segments is set to spine), you can set Root Name to {segment}_root_ctrl. The value of Segments replaces the string “{segment}”, so the root control is named spine_root_ctrl.

Custom

When turned on, creates the number of controls specified in Num Controls.

Num Controls

When Custom is turned on, this is the number of controls to create.

Root Name

When Custom is turned off, this is the name of the root control.

Root CV Name

When Custom is turned off, this is the name of the root tangent CV.

Tip CV Name

When Custom is turned off, this is the name of the tip tangent CV.

Tip Name

When Custom is turned off, this is the name of the tip control.

Scale Inheritance

Sets the scale inheritance of the spline controls.

Promote T

When turned on, promotes the translate component of the spline controls.

Promote R

When turned on, promotes the rotate component of the spline controls.

Promote S

When turned on, promotes the scale component of the spline controls.

Root CV Offset

The offset to add to the root tangent CV.

Tip CV Offset

The offset to add to the tip tangent CV.

Parent

Root

The parent of the root control. If left empty, the root control is parented to its associated TransformObject node’s parent. For example, if the root control sits at node C_pelvis, and C_pelvis's parent is C_root, then the root control will be parented to C_root if this parameter is empty. If you are setting up multiple splines, you can leave this field empty.

You can also set parent tags on the skeleton, and use the parent tag plus the Segments tag to get the parent for each segment. For example, if your segment is named spine (Segments is set to spine), and you tag the parent joint with spine_parent, then you can set Root to {segment}_parent. The value of Segments is used to replace the string “{segment}”.

To unparent the root control, set this parameter to an underscore (“_”).

This parameter accepts APEX path patterns, so you can specify tags in this field, for example, #<tag>.

Tip

The parent of the tip control. If left empty, the tip is parented to the Root. To unparent the tip control, set this parameter to an underscore (“_”).

This parameter accepts APEX path patterns, so you can specify tags in this field.

CV

The parent of the CVs. If left empty, the CVs are parented to the closest outer control. To unparent the CV controls, set this parameter to an underscore (“_”).

This parameter accepts APEX path patterns, so you can specify tags in this field.

Tags

Component

The tags to add to the spline node created by this component.

Root

The tags to add to the root control TransformObject nodes created by this component.

Tip

The tags to add to the tip control TransformObject nodes created by this component.

CV

The tags to add to the CV TransformObject nodes created by this component.

Shape

Shape

The shape of the controls. It can be set to any of the built-in APEX control shapes.

Color

The color of the control shapes. To inherit the shape color from the skeleton, set this value to (0, 0, 0).

Translate

The translation of the control shapes.

Rotate

The rotation of the control shapes.

Scale

The scale of the control shapes. To inherit the shape scale from the skeleton, set this value to (0, 0, 0).

See also

KineFX

Overview

Preparing character elements

Rigging with APEX graphs

Building rig graphs with APEX Script

Rigging with rig components

Animating in the viewport

SOP-based animation

Deformation

Animation retargeting

Pre-H20

Panes

Appendix