Houdini 20.0 Nodes Geometry nodes

Skeleton Mirror geometry node

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

On this page
Since 18.5

This node is for duplicating a set of points on the input skeleton in a mirrored fashion. For example, having created one half of a skeleton using the Skeleton SOP you can use this node to procedurally create the other half of the skeleton based upon the specified Group. The standard Houdini group syntax is supported, so two such examples could be:

@name=*_l* // mirror all points with '_l' in their name

@P.x<0.01 // mirror all points whose 'x' coordinate in less that 0.01



The points that we wish to duplicate and mirror.

Point Mirror Attribute

The name of the attribute which will be created to contain the mirroring information. This will be a dictionary attribute containing the following keys:

    'reference': "ptnum" or the name of the attribute to reference (e.g. "name"),
    'value':     The value of the attribute specified in the 'reference' key or the point number of the mirrored point if 'reference' is "ptnum",
    'flipaxes':  An integer value that stores how the points were mirrored (__By Scale__ or __By Rotation__)

Reference Attribute

The attribute whose value will be used to match the mirrored points by any downstream operations that support mirroring. The value entered here will be stored under the Point Mirror Attrib ['reference'] key. If left blank the point number will be used.

Attributes To Mirror

A list of point attributes in the input geometry to transform when the mirrored points are created, note that the attributes will be transformed consistently with the mirroring operation - i.e. if the points to be mirrored contain a normal attribute aligned with the joints Y-axis then the normal on the newly created joints will still align with the Y-axis of those new joints, regardless of which Mirroring Style has been used.


This parameter supports standard Houdini group syntax, so * ^orient will transform all attributes except the orient attribute.

Mirror Groups

If enabled any point groups listed on the input geometry will be copied over as part of the mirroring operation. The groups can also be renamed according to the patterns supplied in Group Rename and Group New Name parameters.

For example, if the skeleton has point groups L_arm and L_leg, setting Group Rename to L_* and New Group Name to R_* will add any mirrored points belonging to those groups to new groups R_arm and R_leg respectively. Keeping the Group Rename and New Group Name patterns to the default * will simply keep the group names the same.

Group Rename

A pattern to search for in the input group names, this will be replaced with the pattern supplied in New Group Name when creating any mirrored group.

Group New Name

A pattern with which the Group Rename pattern will be replaced when creating any mirrored groups.

Token Position

Where in the point name to look for the tokens specified by in Find Tokens. This will depend upon the naming scheme on the input, for example if the input names follow this kind of pattern:

left_upperarm, left_lowerarm, left_hand

Then we would set this to 'Start'. On the other hand, the following scheme would require this parameter to be set to 'End':

upperarm_left, lowerarm_left, hand_left

If Find Tokens is left blank then the first token specified in Replace Tokens will simply be added to the input point’s name at either the start or end.


If Find Tokens is left 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 position specified in Token Position in the input points' names. This will be replaced with the corresponding tokens in the sequence of tokens provided in Replace Tokens.

Replace Tokens

A space separated sequence of tokens to use as replacements for the tokens provided in Find Tokens.

Mirroring Style

This parameter sets how the transforms of the input points should be mirrored to the newly created points.

By Rotation

The points will be mirrored by rotating the input transform. The effect of this is that down stream posing can be mirrored in rotation only, whilst animated translations will be flipped. This style would most commonly be found in pipelines when only FK rotation is expected to be animated and negative scales are not desirable.

By Scale

The will be mirrored by negatively scaling the input transform. This ensures that downstream posing can be mirrored in both rotation and translation, however the resulting transforms will be inversely scaled in comparison to the input which can be problematic for export to game engines or other 3d packages.

Reflect Using

Mirror Plane

Mirror the input transforms through the plane defined by the Direction and Origin parameters.


The direction in which to perform the mirroring operation. This is visualized as the normal of the plane presented in the viewport.


This parameter is disabled when Reflect Using is set to Mirror Point.


The origin of the plane used for mirroring.


This parameter is disabled when Reflect Using is set to Mirror Point.

Reference Point

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


This parameter is disabled when Reflect Using is set to Mirror Plane.

Reference Point Axis

When Reflect Using is set to Mirror Point, this is the axis of the point specified in Reference Point that will be used as the normal of the mirroring plane.


This parameter is disabled when Reflect Using is set to Mirror Plane.



The skeleton on which to generate the mirrored points.



The mirrored skeleton.

See also

Geometry nodes