Houdini 22.0 Nodes Geometry nodes

Orient Joints 2.0 geometry node

Orients joints on a target skeleton.

On this page
Since 22.0

This node recomputes the transform attribute of a skeleton’s joints by orienting a forward axis toward the joint’s children and an up axis toward the user’s choice.

The node also outputs the detail dictionary attribute from the jointorientparmsattrib so that its settings can be reused with the Invoke options on this node. The dictionary attribute can be used in a skel::OrientJoints graph node in an APEX graph.

This node is intended to work on sections of a skeleton at a time, and has multiple options for choosing which children to look at and how to orient the up vectors. On a humanoid skeleton, for example, you may want to treat the spine separately from the arms when calculating their up vectors. Chain Orientations are executed in order and read values from the computed results of previous Chain Orientations. For example, if you want a hand to inherit the arm’s up vector, you should first make an orientation for the arm, then the hand.

Tip

If you are working on a humanoid/biped character, you can use the Biped Setup SOP to generate biped_* groups to simplify the group selections.

Note

This node always outputs rigid transforms - transforms with a scale of 1 on all axes.

Tip

It’s recommended to use the viewer state along with the parameter editor to help visualize each Chain Operation.

Parameters

Group

The points to act on. This acts as an initial filter before running any Chain Orientation operations. Chain orientations only read from points inside of this group.

This can be used to remove any Leaf or Deform joints that would otherwise make it hard to create good orientations.

Tip

You can visualize this in the viewer state. Any points outside of this group are hidden.

Tip

Combine this with the Configuration option Append to create multiple filters, for example, one set of settings for the base skeleton and one set for the leaf and deformer joints.

Attribute

The attribute from which to read or write to.

This is essentially attribfromparms of the parameter dialog settings and is stored as a dictionary attribute on the skeleton. This value can be saved and reused on Orient Joint SOPs with the Invoke setting turned on.

Configuration

Specifies how to save your settings to the jointorientparmsattrib attribute.

Override

Writes values as is.

Append

Appends to any existing values in the attribute.

Invoke

When turned on, invokes the settings to show the results of the settings.

Tip

If you are appending multiple settings together, you may want to turn this off to prevent your settings from being invoked multiple times.

Compute Local Transforms

When turned on, computes localctransforms for all the points in the Group attribute.

Default Axes

Forward Vector

The axes on the joints that point toward the joint’s children. This can be overridden per Chain Orientation with the parameter in the Direction Overrides section.

Up Vector

The axis on the joint to be considered as the Up Vector. This vector will be decided by the various Chain Operations. This can be overridden per Chain Orientation from within the Direction Overrides section.

Post Mirror

Mirror Group

When turned on, performs joint mirroring, which appends a chain operation with the mirror settings after all the other Chain Orientations. This is the same as adding a new chain orientation with Chain Operation set to Do Nothing, and adding a mirror setting at the end. The specified points are the points to mirror.

Flip X

When turned on, flips the X axis.

Flip Y

When turned on, flips the Y axis.

Flip Z

When turned on, flips the Z axis.

Operations

The list of operations that are performed on various selections on the skeleton. The operations are performed in order, so you can run multiple operations on the same joints.

Chain Orientation

When turned on, performs the orientation operation on a group of points.

Chain Group

The points to run the chain operation on. If you are working on a creature, this selection is typically one limb at a time. For example, the first Chain Orientation handles the spine, the next one the arms, then the legs.

Split by Connectivity

When turned on, splits the group selection by connectivity. For example, if the Chain Group is set to work on arms, each arm is treated separately.

Chain Operation

The orientation operation to run on the Chain Group.

Do Nothing

Does not do the chain operation. Other operations like the Leaf and Mirror operations still run, so this can be used in combination with those operations.

Root Only

Only runs the settings from the Root section on the roots of the chain. A root is a joint that has no parent in the Chain Group. There can be multiple roots if the Chain Group is split up or if Split by Connectivity is turned on.

Tip

The settings in the Root section is used with other Chain Operation modes like Spine. This can be useful when trying to figure out what the Root operation is doing by isolating it.

Spine

Walks from the root of the chain up through all its children and aligns them using the smallest rotation.

Tip

Use the Root settings to align the root before doing the Spine operation.

Plane

Calculates an average plane from the selected points and gets the up vector from the plane.

Note

The Preferred Plane settings are designed to work together with this operation.

Warning

If the chain is perfectly straight, this operation is impossible. In that case, it will raise a warning and fall back to Spine mode. Because of this, it can still be a good idea to set up the Root settings.

Multi Plane

Calculates the plane from the parent, current, and child for each point and gets the up vector from the plane.

Note

The Preferred Plane settings are designed to work together with this operation.

World Up Vector

Points the up vector toward the World Up Vector.

Rotation Offset

Offsets the current rotation by the values in Rotation. This can be modified in the viewer state.

Multi Child Option

Specifies the behavior when the joint has more than one child to orient towards. All the options can be filtered with the Multi Child Group parameter.

Closest To Parent Direction

Gets the direction to the child that is most similar to the direction of the parent to the current point.

Average

Gets the direction to the average position of the current point’s children and uses that as the forward direction.

Index

Gets the direction to the Multi Child Index.

Most Significant

The most significant point is the node that has the greatest total length combined from all its descendants. This can be useful if you have a lot of deformer joints and want to ignore them. Since they typically have fewer descendants, they will have less significance.

Include Children Outside Chain Group

When turned on, the Chain Operation includes joints outside of the Chain Group when finding children.

Multi Child Group

The group of points to consider as children of the current joint. This affects all the options in the Multi Child Option parameter.

Root

The parameters in this section lets you specify how to orient the root of the Chain Group. This section is mainly used for Spine mode (in the Chain Operation parameter), but also affects the Multi Plane mode’s root joint. Since Spine mode works its way up from the parent to all its children and makes adjustments along the way based on the previous results, its important that the root of the spine is properly aligned before starting.

Keeping the default settings will have no effect on the joint. This essentially copies the values of Self onto itself.

Forward Axis

The forward axis on the root joint to align to another direction.

Forward Mode

Determines how to transfer a direction to the Forward Axis.

Copy

Sets the axis from Forward Axis to the values of the Forward Source Axis.

Look At

Points the Forward Axis toward the source position.

Include Nodes Outside Chain Group

When turned on, nodes outside the Chain Group are considered.

When turned off, you can use the Group modes to read from any joint in the hierarchy.

Source

The source to get the direction.

Self

The root targets itself.

Parent

The parent of the root. This always includes the parent outside the Chain Operation group.

Child Average

Gets the average values from the root’s children.

When Forward Mode is set to Copy, the children’s axes are individually averaged, then rigidified before getting the Forward Target Axis. So this is a pseudo average axis.

When Forward Mode is set to Look At, the average position of the children is used to align the Forward Current Axis.

Child Index

Gets the single child index from the root.

First Child Outside Group

Finds the first child outside of the Chain Group. For example, if the Chain Group is set to neck, the first child outside that group would typically be the head.

Group Average

Gets the average values from points in the Forward Source Group. This can be combined with the Include Nodes Outside Chain Group parameter to sample any points in the hierarchy.

When Forward Mode is set to Copy, the children’s axes are individually averaged, then rigidified before getting the Forward Target Axis. The accuracy of this average is not very reliable.

When Forward Mode is set to Look At, the average position of the children is used to align the Forward Current Axis.

Group Index

Gets a single point by index from points in the Forward Source Group. This can be combined with the Include Nodes Outside Chain Group parameter to sample any points in the hierarchy.

World

Samples world values. When Forward Mode is set to Copy, it copies the values from the Forward Target Axis. When Forward Mode is set to Look At, it looks toward the world origin.

Forward Source Axis

When Up Mode is set to Copy, this is the axis value that is assigned to the Up Axis.

Forward Source Group

When Source is set to Group Average or Group Index, this is the selection of points to use.

Forward Source Index

When Source is set to Child Index or Group Index, this is the index to use.

Up Axis

The up axis on the root joint to align to another direction.

Up Mode

Determines how to transfer a direction to the up axis.

Copy

Sets the axis from Up Axis to the values of Up Source Axis.

Look At

Points the Up Axis toward the source position.

Source

The source to get the direction.

Self

The root targets itself.

Parent

The parent of the root. This always includes the parent outside the Chain Operation group.

Child Average

Gets the average values from the root’s children.

When Up Mode is set to Copy, the children’s axes are individually averaged, then rigidified before getting the Up Target Axis. So this is a pseudo average axis.

When Up Mode is set to Look At, the average position of the children is used to align the Up Current Axis.

Child Index

Gets the single child index from the root.

First Child Outside Group

Find the first child outside of the Chain Group. For example, if the Chain Group is set to neck, the first child outside that group would typically be the head.

Group Average

Gets the average values from points in the Up Source Group. This can be combined with the Include Nodes Outside Chain Group setting to sample any points in the hierarchy.

When Up Mode is set to Copy, the children’s axes are individually averaged, then rigidified before getting the Up Target Axis. The accuracy of this average is not very reliable.

When Up Mode is set to Look At, the average position of the children is used to align the Up Current Axis.

Group Index

Gets a single point by index from points in the Up Source Group. This can be combined with the Include Nodes Outside Chain Group parameter to sample any points in the hierarchy.

World

Samples world values. When Up Mode is set to Copy, it copies the values from the Up Target Axis. When Up Mode is set to Look At, it looks toward the world origin.

Include Nodes Outside Chain Group

When turned on, nodes outside the Chain Group are considered.

When turned off, you can use the Group modes to read from any joint in the hierarchy.

Up Source Axis

When Up Mode is set to Copy, this is the axis values that is assigned to the Up Axis.

Root Source Group

When Source is set to Group Average or Group Index, this is the selection of points to use.

Root Source Index

When Source is set to Child Index or Group Index, this is index to use.

Preferred Plane

The parameters in this section can be used together with the Plane and Multi Plane modes to keep up vectors consistent and prevent orientations from flipping unexpectedly.

Preferred Plane

When turned on, enables the preferred plane setting.

Axis

The axis on the source to use as the preferred plane axis.

Source

The source to get the preferred plane axis from.

World

Gets global values.

Parent of Root

Gets the parent point from the root of the Chain Group. This always includes parents outside of the Chain Group.

First Child outside of Chain

Finds the first child outside of the Chain Group. For example, if the Chain Group is set to neck, the first child outside that group would typically be the head.

Group Index

Gets a single point by index from points in the Group and Index sections. This can be combined with the Include Nodes Outside Chain Group parameter to sample any points in the hierarchy.

Group Average

Gets a single point by index from points in the Group and Index sections. This can be combined with the Include Nodes Outside Chain Group parameter to sample any points in the hierarchy.

The group axes are individually averaged, then rigidified before getting the Axis. This is considered a pseudo average axis.

Leaf

A leaf joint is a joint at the end of a hierarchy. It is a joint that has one parent and no children. Since leaf joints don’t have any children, there is no clear decision on where to point them.

Leaf Operation

Specifies how to orient leaf joints based on their parent.

Do Nothing

Leaves leaves as is.

Copy from Parent

Copies the orientations from their direct parent.

Orient from Parent

First copies the orientations from the parent, then aligns the forward axis away from the parent.

Include Children Outside Chain Group

When turned on, considers children outside the chain group when finding leaf joints. For example, if the Chain Group is set to arm, when this value is turned off, the hand would be considered a leaf joint. When turned on, the hand joint would not be considered a leaf because the hand has fingers.

Include Parents Outside Chain Group

When turned on, consider parents outside the chain group when finding leaf joints. For example, if the Chain Group is set to deform_joints, when this value is turned off, the hand would be considered a leaf joint. When turned off, the hand joint would not be considered a leaf because the hand has fingers.

Direction Overrides

Overrides what is considered the forward vector within this Chain Group.

Forward Vector

When turned on, overrides the default forward vector within this Chain Group.

Up Vector

When turned on, overrides the default up vector within this Chain Group.

Mirror

When turned on, enables joint mirroring.

Mirror Group

The group selection of points to mirror.

Flip X

When turned on, flips the X axis.

Flip Y

When turned on, flips the Y axis.

Flip Z

When turned on, flips the Z axis.

Inputs

Skeleton

The skeleton whose joints to orient.

Outputs

Skeleton

The skeleton with the optionally oriented joints, and detail attribute with settings to recreate the orientations.

See also

Geometry nodes