Houdini 22.0 Nodes Geometry nodes

ML Pose Deserialize geometry node

Obtain a pose from a float point attribute.

On this page

Overview

This node reconverts the transforms from a specified subset of joints from a float point attribute. A joint group can be specified. Only joints from the joint group will have components of their transforms deserialized.

This deserialization is consistent with ML Pose Serialize:. With the same settings on both ML Pose Serialize: and ML Pose Deserialize:, a rig pose or part of it can be converted into a point float attribute and reconstructed again. This consistency only applies if the transforms on the skeleton that goes into ML Pose Serialize: are actual rotation matrices (e.g., no scaling, shear, etc.).

Treatment of Rotation Matrices

The incoming serialized data consists of matrix components. The serial values that are stored in the Serial Attribute may represent rotations and translations. This attribute may consists specifically of the components of 3×3 matrices that represent rotations and the components of translation vectors. The 3×3 rotation representation matrices would correspond to a 3×3 global transform matrix or the upper 3×3 submatrix of a local transform matrix. Each 3×3 matrix that represents a rotation is stored as 9 contiguous floating-point values in the Serial Attribute, in row-major form. Although these serialize stored 3×3 matrix components are used to represent rotations; ML Pose Deserialize does not assume that they are components of actual rotations. In order to obtain actual rotations, ML Pose Deserialize takes the matrix components and constructs a valid 3D rotation from these components by enforcing that the 3×3 matrix it constructs has three normalized, mutually orthogonal columns.

ML Pose Deserialize supports the ML-friendly 6D rotation representation proposed by Zhou et al. in On the Continuity of Rotation Representations in Neural Networks''. In order to use this representation as an input for ML Pose Deserialize, you would need to assign dummy values to the locations in Serial Attribute that correspond to the third column of each 3×3 submatrix that represents a rotation. Within each contiguous block of 9 values that represent a submatrix in Serial Attribute, each third value would belong to the third column. These dummy values would not be part of the prediction of an ML model; they would just be hardcoded after the inference or at the final stage of the inference.

See Machine Learning documentation for more general information.

Context

When the ML nodes are used to train a model that predicts rig poses, then the prediction of the model will be a float point attribute. This node can be used to convert such a flat point attribute into an actual rig pose.

Parameters

Joint Group

The name of the group of joints whose transforms to serialize. If no group name is specified, then all joint transforms are processed.

Mode

Subskeleton

Treat the skeleton as the subskeleton that has only the joints specified in Joint Group. For each joint of Joint Group that has a parent also in Joint Group, the local transformation is processed. The processing of joints of Joint Group without a parent in Joint Group is controlled by the Include World Rotation option.

All Joints as Local

Process only the local transformation of each joint of Joint Group. Which components of each local transformation is considered depends on the parameters Include Rotation, Local Rotation Group, Include Translation, and Local Translation Group.

Include World Rotation

Process the world transformation of the subskeleton root(s). This means for each joint of Joint Group that does not have a parent in Joint Group (a root of the subskeleton) the world transformation is processed. When off, then these subskeleton roots are not processed at all.

Include Rotation

Of each local transformation, include the rotation component when it’s processed.

Local Rotation Group

Limit the local transformations for which the rotation component is processed to this group of joints.

Include Translation

Of each local transformation, include the translation component when it’s processed.

Local Translation Group

Limit the local transformations for which the translation component is processed to this group of joints.

Serial Attribute

The name of the point float attribute that stores serialized data.

Inputs

Pose

The pose to extract joint transforms.

Outputs

Serialized Pose

A geometry with a point float attribute that encodes the pose.

Geometry nodes