Houdini 20.5 Nodes Geometry nodes

Skeleton Mirror geometry node

Modifies an input skeleton by duplicating joints across a mirror plane.

On this page
Since 18.5

This node duplicates a set of points on the input skeleton in a mirrored fashion. For example, you could create half a skeleton using the Skeleton SOP and use this node to procedurally create the other half.

Parameters

Group

The points to duplicate and mirror. Supports the standard Houdini group syntax, for example:

  • @name=*_l* mirrors all points with _l in their name

  • @P.x<0.01 mirrors all points with x-coordinates less than 0.01

Attributes

Point Mirror Attribute

The name of the created attribute that contains the mirroring information. This is a dictionary attribute with the following key-value pairs:

  • reference: Its value is either ptnum or the name of the attribute to reference (for example, name).

  • value: If reference is ptnum, this is the point number of the mirrored point. Otherwise, this is the value of the attribute specified in the reference key.

  • flipaxes: An integer value that stores how the points are mirrored (By Scale or By Rotation)

Reference Attribute

The attribute used by downstream operations for matching the mirrored points. This attribute is stored as the value of the reference key in the Point Mirror Attribute dictionary. If left blank, the point number is used.

Attributes To Mirror

A list of point attributes in the input geometry to transform when the mirrored points are created. The attributes are transformed consistently with the mirroring operation, i.e. if the points contain a normal attribute that is aligned with the joint’s Y-axis, the normal on the mirrored joints will still align with the Y-axis of the mirrored joints regardless of the Mirroring Style.

This parameter supports the standard Houdini group syntax, so “* ^orient”" transforms all attributes except the orient attribute.

Mirror Groups

When turned on, the specified point groups on the input geometry are copied over as part of the mirroring operation. The groups can be renamed according to the patterns in Rename Group and New Group Name.

For example, if the skeleton has point groups L_arm and L_leg, Rename Group is set to L_*, and New Group Name is set to R_*, any mirrored points belonging to the original groups are added to the new groups R_arm and R_leg.

Leaving the Rename Group and New Group Name patterns as the default “*” keeps the group names the same.

Rename Group

When Mirror Groups is turned on, this is the pattern to search for in the input group names that is replaced with the pattern in New Group Name.

New Group Name

When Mirror Groups is turned on, this is the pattern that replaces the pattern in Rename Group.

Naming

Token Position

The position in the point name to look for the tokens in Find Tokens. For example, if the input names follow the pattern left_upperarm, left_lowerarm, left_hand, etc., set this parameter to Start. If the input names follow the pattern upperarm_left, lowerarm_left, hand_left, etc., set this parameter to End.

If Find Tokens is blank, the first token in Replace Tokens is added to the input point’s name at either the start or end.

Note

If Find Tokens is blank, the behavior for Middle is the same as that for End.

Find Tokens

A space-separated sequence of tokens to look for at the Token Position. This is replaced with the corresponding tokens in Replace Tokens.

Replace Tokens

A space-separated sequence of tokens to use as replacements for Find Tokens.

Mirror Plane

Mirroring Style

Specifies how the transforms of the input points are mirrored to the newly created points.

By Rotation

The points are mirrored by rotating the input transforms. The result is that downstream posing can only be mirrored in rotation, while animated translations are flipped. This style is most commonly found in pipelines when only FK rotations are expected to be animated, and negative scales are not desirable.

By Scale

The points are mirrored by negatively scaling the input transforms. This ensures that downstream posing can be mirrored in both rotation and translation. However, the resulting transforms are inversely scaled in comparison to the input, which can be problematic when exporting to game engines or other 3D packages.

Reflect Using

Specifies the plane that the input transforms are mirrored across.

Mirror Plane

Mirrors the input transforms across the plane defined by Direction and Origin.

Mirror Point

Mirrors the input transforms across the plane defined by Reference Point and Reference Point Axis.

Direction

When Reflect Using is set to Mirror Plane, this is the direction to perform mirroring, visualized as the normal of the plane in the viewport.

Origin

When Reflect Using is set to Mirror Plane, this is the origin of the plane used for mirroring.

Reference Point

When Reflect Using is set to Mirror Point, this is the point on the input that defines the plane used for mirroring.

Reference Point Axis

When Reflect Using is set to Mirror Point, this is the axis of Reference Point that is the normal of the mirroring plane.

Inputs

Skeleton

The skeleton whose points to mirror.

Outputs

Skeleton

The mirrored skeleton.

See also

Geometry nodes