Houdini 20.5 Nodes VOP nodes

Curve Solver VOP node

Positions and orients KineFX points from a curve and a list of segment lengths.

On this page
Since 18.5

This solver generates world transforms from a curve and a list of segment lengths.

The curve can be defined by referencing existing points, point transforms, or a curve primitive.

Parameters

Signature

Specifies which inputs and parameters are used to create the world transforms.

The Curve Solver VOP node supports multiple signatures and its inputs and parameters are dynamic.

Target IDs, Control IDs Array

Use an array of Target Point IDs and an array of Control Points IDs.

Target IDs, 4 Control IDs

Use an array of Target Point IDs and 4 Control Points IDs (Root, Root Tangent, Tip Tangent, Tip).

This signature is a shortcut for easily creating a Bezier curve with 4 control points.

Target IDs, Control Transforms Array

Use an array of Target Point IDs and an array of Control Point matrices.

Target IDs, 4 Control Transforms

Use an array of Target Point IDs and a 4 Control Points matrix (Root,Root Tangent, Tip Tangent, Tip).

This signature is a shortcut for easily creating a Bezier curve with 4 control points.

Target IDs, Curve Geometry with Primitive Index

Use an array of Target Point IDs and curve from existing geometry.

Target Transforms, Control IDs Array

Use an array of target transforms and an array of Control Points IDs.

Target Transforms, 4 Control IDs

Use an array of target transforms and 4 Control Points IDs (Root,Root Tangent, Tip Tangent, Tip).

This signature is a shortcut to easily create a Bezier curve with 4 control points.

Target Transforms, Control Transforms Array

Use an array of target transforms and an array of Control Point matrices.

Target Transforms, 4 Control Transforms

Use an array of target transforms and a 4 Control Point matrix (Root,Root Tangent, Tip Tangent, Tip).

This signature is a shortcut for easily creating a Bezier curve with 4 control points.

Target Transforms, Curve Geometry with Primitive Index

Use an array of Target transforms and a curve from existing geometry.

Targets File

Specifies which input contains the geometry file to use for the targets point IDs.

Target Points

Specifies the target points as an array of point IDs or matrices. If an input is not connected, you can use the parameter field to create a point group.

Controls Input

Specifies where to find the geometry file to use for the controls point IDs.

Control Points

Specifies the control points as an array of point IDs or matrices. If an input is not connected, you can use the parameter field to create a point group.

Primitive Index

Specifies the primitive index in the ctrl_file to define which curve primitive to use.

Root

Specifies the root control point as a point index or a matrix.

Root Tangent

The root tangent control point as a point index or a matrix.

Tip Tangent

The tip tangent control point as a point index or a matrix.

Tip

The tip control point as a point index or a matrix.

Curve Type

Determines the type of curve to create.

Polygon Lines

Creates a curve made of straight lines.

Bezier Curve

Creates a Bezier curve from the Control Points.

Nurbs Curve

Create a NURBS curve from the Control Points.

Curve Order

Specifies the spline order for the generated curve.

Curve LOD

Specifies the curve’s level-of-detail. Uses a floating point level-of-detail to determine conversion resolution. A value of 1 keeps the same number of breakpoints as the number of control point.

Curve Divisions

Specifies the exact number of points to be computed within each span when determining the curve length. The curve length is used for stretching.

Stretch

Specifies the stretch factor. A value of 1 stretches the input lengths evenly to match the curve length before running the solver. A value of 0 keeps the input lengths as is. A value between 0 and 1 linearly interpolates the stretch factor. Scale along the curve direction is also adjusted.

Stretch Tolerance

Specifies a world space position tolerance that is used to snap the tip joint to the end of the curve.

Squash

Specifies the squash factor which controls the scaling on the 2 axes orthogonal to the curve. A value of 0 disables leaves the scales intact. A value of 1.0 will compress the scales when the curve is longer than the orignal curve, or expand the scales when it’s shorter. A value between 0 and 1 linearly inteporlates the scales.

Lookat Axis

Determines the axis that points in the curve tangent direction.

Up Axis

Determines the axis that points in the curve normal direction.

Twist Mode

Specifies how the curve normals are transferred to the bone chain. The normals are interpolated on the curve between the curve breakpoints. Since breakpoints (and not control points) lie on the curve, it is more meaningful to interpolate the breakpoints rather than the control vertex values even though breakpoint normals are calculated from the control vertices.

Default

The bone chain normals approximate the curve normals as much as the curve parameters allow. For example, Path parameters carry extra information that allow twists of more than 360 degrees.

None

The bone chain maintains its own normals defined by the rest position.

Quaternion

The bone chain normals interpolate the curve normals using quaternion rotation of the vectors. For example, the bone chain normals lie on the shortest arc defined by two curve normals on a unit sphere.

Clamped Angle

The bone chain normals are calculated using twist angles around the curve (between the curve points at which a normal is defined). The angle difference is restricted to the interval between -180 to 180 degrees.

Angle

The bone chain normals are calculated using twist angles. This parameter is similar to Clamped Angles, except the twist angles around the curve are not restricted. For this parameter, the curve must carry additional information (see Object Path Tool). Otherwise, this option is downgraded to Clamped Angle.

Twist Attribute

Defines the float attribute to use for the twist. This works only with when the controls are defined as a curve primitive or as point IDs. You can use the name of vector attribute with .x, .y, .z, [0], [1], [2] suffixes to access individual components.

This parameter only has an affect when Twist Mode is set to Clamped Angle or Angle.

Root Orientation

Specifies whether the the first joint keeps the orientation of the first control or uses the orientation from the computed curve.

Tip Orientation

Specifies whether the last joint keeps the orientation of the last control or uses the orientation at the tip of the computed curve.

Scale Mode

Specifies how the resulting joints are scaled. The joints can use a unit scale or keep the target scales.

Inputs

target_file

The geometry file to use for the target point IDs.

targets

The target points as an array of point IDs or matrices.

ctrl_file

The geometry file to use for the controls point IDs.

ctrl_prim

The primitive index in the ctrl_file that defines which curve primitive to use.

ctrls

The control points as an array of point IDs or matrices.

root

The root control point as a point index or a matrix.

root_tanget

The root tangent control point as a point index or a matrix.

tip_tangent

The tip tangent control point as a point index or a matrix.

tip

The tip control point as a point index or a matrix.

fmt

The type of curve to create. Can be polygon lines (straight lines), Bezier curve (from control points), or a NURBS curve (from control points).

order

Spline order of generated curve.

lodu

Level-of-detail for the generated curve. Uses a floating point level-of-detail to determine the conversion resolution.

divs

Exact number of points that are computed within each span to determine the curve length.

stretch

Scale factor (0-1) by which the input lengths are scaled to match the curve length before running the solver.

stretch_tol

The world space position tolerance that is used to snap the tip joint to the end of the curve.

lookataxis

The axis that points in the curve tangent direction.

lookupaxis

The axis that points in the curve normal direction.

twists

When using Clamped Angle or Angle twist mode, defines the twists as an array of floats. This overloads the angle from the Twist Attribute.

lengths

An array of floats to provide the rest lengths between each joint. The array must have the same number of elements as the number of input transforms or point ids. When not connected, the lengths are computed from the input transforms.

Outputs

file

A pass through returning the File Input. It is invalid when using a signature with Targets Transforms.

pts

An array of integer with Point IDs. It outputs the resolved target point IDs. It is invalid when using a signature with Targets Transforms.

xforms

An array of matrices with World Transforms for each target.

localxforms

Not yet implemented.

See also

VOP nodes