Houdini 20.5 Nodes APEX Nodes

rig::MultiBoneIKFromArray

Positions and orients joints from a root position, goal, and twist position using inverse kinematics, with inputs and outputs given as arrays.

On this page
Since 20.0

Positions and orients joints from a root position, goal, and twist position using inverse kinematics, with inputs and outputs given as arrays.

Inputs

in: Matrix4Array

An array of world space transforms of all the input joints.

rootdriver: Matrix4

The world space transform to place the root joint of the output.

twist: Matrix4

The pole vector for the solver. This is only used if usetwist is set to True.

goal: Matrix4

The world space goal transform for the IK solve. The rotation of the goal is used as the rotation of the tip.

stretch: Float

The stretch factor. A value of 1 stretches the input bone lengths evenly to reach the goal 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.

squash: Float

The squash factor, which controls the scaling on the 2 axes orthogonal to the bones when stretching. A value of 0 leaves the scaling intact, a value of 1 compresses the scaling when stretching, and a negative value increases the scaling when stretching. A value between 0 and 1 is recommended.

blend: Float

Controls how much of the result to blend with the input transforms.

dampen: Float

Specifies how easily the root can be pulled off the goal as the chain is stretched out.

trackingthreshold: Float

The accuracy threshold. Use smaller values for more accurate solutions at the expense of more computation time. Use larger values to save computation time at the expense of getting less accurate solutions.

twistoffset: Float

An additional twist rotation, in degrees, to apply post-solve.

usetwist: Bool

If set to True, applies a twist using the twist matrix.

resiststraight: Bool

If set to False, the IK chain completely straightens out in the direction of the goal if the IK goal is farther away than the length of the bone chain (with a tolerance of the trackingthreshold). If set to True, no attempt is made to further straighten the IK solution. By default, resiststraight is set to True because it improves the speed of the solve.

keeproot: Bool

If set to True, keeps the original transform from the rootdriver. If set to False, uses the root returned by the IK solver.

keepscales: Bool

If set to True, the output joints keep the same scaling as the input joints. If set to False, the output joints have unit scaling.

usegoalrot: Bool

If set to True, the last output joint has the same rotation as the goal. If set to False, the last output joint has the same local rotation as the last input joint.

Outputs

out: Matrix4Array

The world space transforms of all the output joints.

See also

APEX Nodes