Houdini 20.0 Nodes Geometry nodes

Orient Joints geometry node

Orient Joints on a target skeleton.

On this page
Since 18.5

This node recomputes the transform attribute by orienting a reference axis to the children joints in the hierarchy. By using an up vector, the orientation will be performed iteratively starting from the root of the hierarchy and will use a lookat method for computing this orientation. The node can also recompute the transform attribute from an existing reference pose given by the second input.


Cases where the joint and its child are parallel to the world Y axis are not supported by the lookat (when Use Up Vector is enabled). In order to get a correct result in these cases, please use the Reference Point Attribute for Lookat option.


Orient Group

The list of joints to orient.

Targets Group

The list of children to consider. If a joint has more than one child, an average position of all of the children will be used. Adding an entry in this group field will make sure to orient the joint to the added entry rather than any of the other children.

Reference Vector

The local space vector of the points' transforms that should point towards the given points child.

Up Vector

The local space vector of the points' transforms that should point towards the pole vector direction. This determines the twist of the joint.

Use Reference Point Attribute for Lookat

Specify a matrix point attribute that will be used as the up reference for the lookat(when Use Up Vector is enabled). When this is enabled, the up vector used to orient the current joint will be set as the direction between the current joint and the transform specified by this attribute.


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


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

Reference Point Attribute for Lookat

Name of the matrix point attribute to use.

Use Parent to Orient Leaf Joints

When a joint doesn’t have a child, use the parent joint to compute the alignment. This orients the leaf joints.

Orient Overlapping Joints

When turned on, and a joint overlaps with all of its children, this node attempts to find a descendant or ancestor joint that the current joint can use as a reference for the orientation.

This node will first look for any descendant joint that does not overlap with the current joint. If such a descendant is found, it will be used as a reference, i.e. the Reference Vector will be oriented towards the descendant. If no such descendant joint is found, this node will attempt to find an ancestor joint that does not overlap with the current joint. If such an ancestor joint is found, it will be used as a reference.

If no valid descendant or ancestor joint is found, the orientation will not be modified.



The skeleton to orient.

Reference Joints

Optional reference skeleton to use. The orientation from the Reference Joints will be kept instead of computing an orientation from scratch.

See also

Geometry nodes