Houdini 20.5 Nodes Geometry nodes

Orient Joints geometry node

Orients joints on a target skeleton.

On this page
Since 18.5

This node recomputes the transform attribute of a skeleton’s joints by orienting a reference axis to the joint’s children. It uses a lookat method to compute the orientation, starting with the root of the hierarchy.

This node can also recompute the transform attribute from an existing reference pose provided by the second input.

Warning

The lookat mathod (when Up Vector is turned on) does not support the case where a joint and its child are parallel to the world Y-axis. In this case, use the Reference Point Attribute for Lookat option.

Parameters

Orient Group

The list of joints to orient.

Targets Group

The list of the joint’s children to consider. If a joint has more than one child, the average position of all the children is used. Adding an entry in this field ensures that the joint is oriented to the added entry instead of to the other children.

Reference Vector

The local space vector of the points' transforms to point toward its child.

Up Vector

The local space vector of the points' transforms to point toward the pole vector direction. This determines the twist of the joint.

Reference Point Attribute for Lookat

When turned on, the specified matrix point attribute is used as the up reference for the lookat. The up vector used to orient the current joint is set as the direction between the current joint and this attribute’s transform. This parameter is available when Up Vector is turned on.

Note

If the translation values of the current joint’s matrix attribute are equal to the current joint’s world position, the lookat will use the default axes. In other words, if you provide the joint’s current world transform as a matrix attribute, it will have no effect. This is helpful if you only want to provide a custom lookat for a subset of joints.

Note

The up vector used by the lookat method is not the same as the Up Vector parameter. The lookat creates an initial orientation from a set of given axes (a direction and an up vector) that orients the joint to point toward its child. We then manipulate this orientation and change the pointing direction of the axis based on the Reference Vector and Up Vector.

Use Parent to Orient Leaf Joints

When turned on, uses the parent joint to compute the alignment for joints that don’t have a child.

Orient Overlapping Joints

When turned on, and a joint overlaps with all its children, this node attempts to find a descendant or ancestor joint that the current joint can use as a reference for the orientation. It first looks for any descendant joint that does not overlap with the current joint. If such a descendant is found, it is used as a reference, i.e. the Reference Vector is oriented toward the descendant. If no such descendant joint is found, this node attempts to find an ancestor joint that does not overlap with the current joint. If such an ancestor joint is found, it is used as a reference. If no valid descendant or ancestor joint is found, the orientation is not modified.

Inputs

Skeleton

The skeleton whose joints to orient.

Reference Skeleton

An optional reference skeleton whose orientation to use instead of computing an orientation from scratch.

Outputs

Skeleton

The skeleton with the oriented joints.

See also

Geometry nodes