Houdini 20.5 Nodes Geometry nodes

Extract Locomotion geometry node

Extracts translation and orientation from a character using a given input joint.

On this page
Since 18.5

This node extracts the locomotion from the given input joint (the joint in the character skeleton that has translation channels that move it forward in space). When Convert to In-Place is enabled, this is used to remove the translation from the character animation to keep it in place. Similarly, the Extract Orientation option can be used to remove the orientation from the specified joint.

The locomotion animation is placed on a new joint, named __locomotion__, outside of the main skeleton hierarchy.

Parameters

Locomotion Source

The source of the locomotion of the animation.

Joint

A joint in the input skeleton will be used as a reference for extracting the locomotion.

Center of Mass

A joint for the center of mass of the skeleton will be created and used as a reference for extracting the locomotion.

Locomotion Joint

Name of the joint in the input skeleton to use as reference for extracting the translation and orientation.

COM Joint

Name of the COM joint in the input skeleton to use as reference for extracting the translation and orientation.

Configuration Attribute

The name of the configuration point attribute from which to read the mass and local_com attributes from. See /nodes/sop/kinefx__configurejoints.html.

Start Frame Source

Read the frame from the clipinfo detail attribute on the input geometry or set a custom value.

Anim Start Frame

The first frame of the animation that will be used as a reference when extracting the translation and orientation.

Color

Color of the created __locomotion__ joint.

Use Rest Skeleton

These parameters are available when the Rest Skeleton input is connected.

As Translation Reference

Shift the Target Skeleton relative to the Rest Skeleton when Shift to Origin or Convert to In-Place are enabled. When Shift to Origin is enabled, the target skeleton will be translated by the amount needed to translate the Rest Skeleton to the origin, on the specified axes. When Convert to In-Place is enabled, the target skeleton will be translated, on the specified axes, to where the Rest Skeleton is. The locomotion joint will not follow.

As Orientation Reference

The orientation data that will be used for extraction will be the difference between the animation frames and the Rest Skeleton.

Tip

Using this option could prove useful if an animation starts with the character oriented in a different direction than the rest pose and you want to extract that part too.

As Projection Reference

The __locomotion__ joint will be projected on the ground plane from the Rest Skeleton.

Tip

Using this option could prove useful if the animation has an offset on the up axis, for example, and you want to remove this offset.

Translation

Method

Specify which method to use when creating the __locomotion__ joint. See below for details on the parameters for each of these options.

Project On Ground Plane

Create the __locomotion__ joint at the same position as the joint provided in the Locomotion Joint parameter and then project it on the ground plane specified in the Ground Plane parameter.

Use Joint Position

Create the __locomotion__ joint at the same position as the joint provided in the Locomotion Joint parameter.

Ground Plane

Specify which plane acts as the ground plane.

Shift To Origin

Translate the character so that the __locomotion__ joint, of the Rest Skeleton if As Translation Reference is enabled, sits at the origin.

Shift To Origin

Choose on which axis to shift the __locomotion__ joint, of the Rest Skeleton if As Translation Reference is enabled, towards the origin.

Convert to In-Place

Convert a moving character animation to an in-place animation.

Convert to In-Place

Choose on which axis to extract the translation from the character animation. Selecting an axis will remove the translation on that axis from the character animation and add it to the __locomotion__ joint.

Orientation

Method

Specify around which axes to extract the orientation. See below for details on the parameters for each of these options.

None

Do not extract orientation.

Around Up Axis

Extract the orientation around the Up axis of the character. The Up axis will be deduced from the viewport orientation option.

Around All Axes

Extract the orientation around all axes of the character.

Custom

Customize which axis and which method for extraction you want to use for factoring out the orientation of the character.

Up Axis

Specify which method to use when extracting the orientation around the Up axis.

Use Joint Orientation

Extract the orientation by pulling out the Euler angles from the Locomotion Joint and using those to extract orientation data around the chosen axis.

Direction Vector Between Joints

Extract the orientation by specifying an extra joint and drawing a direction vector between the Locomotion Joint and the Look At Joint. This direction vector will be projected on the relevant plane and used to extract orientation data around the chosen axis.

Look At Joint

Specify an extra joint that will act as the tip of the direction vector.

Rotation Order

Specify which rotation order to use when extracting out the orientation from the character animation.

X Axis

Specify which method to use when extracting the orientation around the X axis. See the Up Axis above for details on the parameters for each of these options.

Y Axis

Specify which method to use when extracting the orientation around the Y axis. See the Up Axis above for details on the parameters for each of these options.

Z Axis

Specify which method to use when extracting the orientation around the Z axis. See the Up Axis above for details on the parameters for each of these options.

Trajectory

Visualize Trajectory

Visualize the motion trail of the __locomotion__ joint.

Translate

Move the __locomotion__ joint in space. The translation is applied right after the __locomotion__ joint is initialized, so before the Shift to Origin and Convert to In-Place options.

Rotate

Rotate the __locomotion__ joint using the world origin as the pivot. The rotation is applied last so it will not interfere with the previous operations.

Extraction

Factor Out Translation

Choose which joint to factor out the translation from. See below for details on the parameters for each of these options. The translation will be extracted from the selected joint as well as from all the children of the selected joint.

Locomotion Joint

Use the same joint provided in the Locomotion Joint parameter for the extraction.

Custom Joint

Use a custom joint for the extraction.

Factor Out From Joint

The custom joint for the translation extraction.

Factor Out Orientation

Choose which joint to factor out the orientation from. See Factor Out Translation for details on the parameters for each of these options. The orientation will be extracted from the selected joint as well as from all the children of the selected joint.

Extraction Pivot

Choose which joint to use as the pivot while the orientation is being extracted.

This parameter is only available when Factor Out Orientation is set to Custom Joint.

Locomotion Joint

Use the same joint provided in the Locomotion Joint parameter as the pivot.

Orientation Joint

Use the same joint provided in the Factor Out Orientation parameter as the pivot.

Custom Joint

Use a custom joint as the pivot.

Tip

When the Locomotion Joint is a member of the same skeleton as the joint provided in the Factor Out Orientation parameter, the Locomotion Joint option should be used. Otherwise, the Orientation Joint option should be used.

Pivot Joint

The custom joint which is used as the pivot during the extraction of the orientation.

Inputs

Target Skeleton

The input skeleton from which to extract the locomotion.

Rest Skeleton

The rest input skeleton. Useful if the Target Skeleton is offset from the Ground Plane in the up direction but you want to initialize the __locomotion__ joint at the bottom of the Target Skeleton bounding box instead of on the Ground Plane.

Note

When this input is provided and the options under Use Rest Skeleton are all enabled, this node can be compiled using the Delay Incompatible Node Errors Until Cooked option of the Compile End SOP.

Outputs

Target Skeleton

The input skeleton and the __locomotion__ point that holds the locomotion transforms.

See also

Geometry nodes