Houdini 20.5 Nodes Geometry nodes

Muscle Mirror geometry node

Duplicates muscle geometry with symmetry. Muscle attributes are also copied/renamed with symmetry.

On this page
Since 19.0

This node duplicates the muscle geometry for one half of a symmetrical model. When it creates the muscle geometry for the other side of your model, it also creates mirrored proper muscle_ids for those muscles.

Mirror groups

An important parameter in the Muscle Mirror node is the group setting, which controls which muscles get mirrored. Incorrect group configuration may cause central muscles to be duplicated, which will break attachment constraints in the muscle solver.

The node has a few key parameters to control the mirroring behavior. You can adjust the From/To prefix to control naming conventions, by default it will convert L_ prefixes to R_ for the mirrored geometry, but if you have a different naming convention, or different side to mirror, you can change these as needed.

Understanding constraint mirroring

When mirroring constraints, there are three primary types of detail attributes:

  • musclegluedict for all Muscle glue constraints

  • muscletobonedict for all Muscle to bone constraints

  • muscletomuscledict for all Muscle to muscle constraints.

The mirroring process duplicates entries in each of the above attributes for left side muscles and replaces L_ prefixes with R_ in the duplicates. For central muscles, those with a C_ prefix, the node preserves the entries without duplication while maintaining proper constraint relationships between mirrored pairs.

Troubleshooting

After creating your mirrored muscles, you can use Muscle Constraint Properties Vellum SOP node to verify that the constraints were mirrored correctly:

  1. Create a Muscle Constraint Properties Vellum SOP node after your Muscle Mirror SOP.

  2. Connect your bone geometry to its second input.

  3. Select the checkbox for Enable All to turn it on. This helps to preview your constraints without making any unwanted changes to them.

  4. Toggle between the Muscle to Muscle and Muscle to Bone tabs to check that the mirror looks correct.

  5. If one side shows tangled or incorrect constraint connections, check the Group parameter in your Muscle Mirror SOP. You may need to exclude central muscles that shouldn’t be mirrored.

Parameters

Group

Specifies the muscle(s) to apply the mirroring parameter. If left blank, all input muscles will be mirrored.

Naming

From Prefix

Specifies the name prefix that is used for the muscle_id value. For example, this parameter value would be L_ if your muscles were names are L_gastronemius, or L_oblique, and so on.

To Prefix

Specifies the name prefix that will replace the From Prefix in all of the automatically generated muscle geometry. For example, if the parameter value for From Prefix is L_, then your To Prefix parameter value should be R_ for R_gastronemius, or R_oblique, and so on.

Mirror Plane

Origin

XYZ position of the mirror plane relative to the origin of the muscles.

Distance

Distance offset of the mirror plane from the Origin.

Direction

Across which plane (X, Y, or Z) to mirror the muscles. Also determines the normal direction of the mirror plane.

Inputs

Input 1

Solid muscle geometry.

Outputs

Output 1

Duplicate mirrored muscles with proper muscle_id attributes.

See also

Geometry nodes