Houdini 20.5 Nodes Geometry nodes

Muscle Solidify geometry node

Converts input surface geometry to a tetrahedral mesh for use as muscles.

On this page
Since 19.0

This node iterates on each piece of input surface geometry, freezes them at the Initialization Frame if animated, and converts them into tetrahedral meshes using Tet Conform.

This conversion helps with:

For the Muscles & Tissue system, muscles are required to be solid tetrahedral structures, but input surfaces do not need to be tessellated as triangles since the Muscle Solidify SOP node will automatically convert your surfaces to triangles using its Remesh Surfaces settings or its internal default remesh mechanism.

However for best results, it’s recommended to use an external Remesh SOP node to convert your input surfaces to triangles before tetrahedralization because it has additional parameters that control tessellation quality that the Muscle Solidify SOP node does not have.

Example: Tessellation quality differences between remesh methods

Warning

Any deformations to solid tetrahedral geometry can potentially create inverted tetrahedra (tetrahedra that have overlapping adjacent components and negative signed volumes). You cannot produce a successful muscle simulation with solid geometry that contains inverted tetrahedra.

Attributes

maxthickness

primitive

Measures and stores the outer thickness (layer of tets) of the muscle’s tetrahedra. This is used by the muscle constraints to vary how strong an attachment is.

musclethickness

point

Measures and stores the thickness of the entire muscle. This is used by the muscle properties like Thickness Threshold to determine what parts of a muscle are tendon.

tpose

point

Sets and stores the rest position or t-pose pose for the muscles.

Parameters

Max Tet Size

Sets the upper size limit for individual generated tetrahedrons. The volume of a regular tetrahedron is determined by its side length. Max Tet Size specifies this side length, and as a result determines the maximum volume of the tetrahedra generated by the Muscle Solidify SOP.

The size of a muscle’s surface triangles does not necessarily determine the size of its interior tets. A muscle can have larger surface triangles and smaller interior tetrahedrons depending on the current Max Tet Size setting.

For example, in the images below, the surface triangles remain constant while the size and number of the interior tetrahedrons change depending on the Max Tet Size setting.

Example: Max Tet Size muscle interior close-ups

T-Pose

Specifies which muscle geometry pose to use as its rest position or t-pose. Your muscles need to be at their t-pose positions when they are tetrahedralized.

Use Initialization Frame

Use the muscle geometry’s pose at the specified Initialization Frame.

From Attribute

Use the muscle geometry pose defined by the specified T-Pose Attribute.

Initialization Frame

Specifies the frame at which to evaluate the input muscle geometry and hold it static while it is converted into a tetrahedral mesh. By default, the initialization frame is set to the first frame of your playback bar’s range ($FSTART).

This parameter is only available when T-Pose is set to Use Initialization Frame.

T-Pose Attribute

Specifies the name of the attribute that contains the t-pose at which to evaluate the input muscle geometry and hold it static while it is converted into a tetrahedral mesh. By default, this attribute is tpose.

This parameter is only available when T-Pose is set to From T-Pose.

Enable Multithreading

When on, the node will try to tetrahedralize all your muscles at the same time up by assigning one muscle_id per thread up to the capacity of your system’s multithreading capabilities. This method is a lot faster than the sequential method. Enable Multithreading is on by default.

When off, the node goes muscle-by-muscle and tetrahedralizes each muscle one at a time. This operation in performed sequentially by muscle_id in a loop and it will wait to complete one muscle’s tetrahedralization before moving on to the next.

Remesh Surfaces

There are two methods for handling the remeshing process: internal remesh and external remesh.

For external remeshing, complete this process before using solidfying your muscles. When using external remeshing, the order of the min/max size parameters is reversed between the Muscle Solidify SOP and Remesh SOP:

  • Muscle Solidify: min size → max size

  • Remesh SOP: max size → min size

  1. Internal Remeshing (Default):

    • Simpler approach using the node’s built-in remesh settings.

    • Automatically handles self-intersections.

    • Controlled through the Remesh Surfaces parameter.

  2. External Remeshing:

    • Uses an external Remesh SOP for more control

    • Requires manual handling of self-intersections

    • Allows finer control over surface tessellation

    Remesh surfaces

    When on, converts the input muscle surfaces into triangles.

    These parameters control the size and number of each muscle surface’s triangles.

    NOTE: Adjusting tetrahedron sizes can be computationally intensive. Since this process only needs to be performed once, it’s recommended to cache the results for better performance.

    Min Size

    The minimum target edge length of the triangles on the exterior of the muscle pieces. Increasing this value makes the triangles bigger.

    Max Size

    The maximum target edge length of the triangles on the exterior of the muscle pieces. Decreasing this value makes the triangles smaller.

    Relative Density

    Determines the number and size of the triangles on the exterior of the muscle pieces. A higher value produces triangles that are both smaller and greater in number. Values less than 1 have a decimating/coarsening affect on the exterior of the muscle pieces. Gradation also lessens the affect of Relative Density.

    Gradation

    The rate at which edge lengths are allowed to change from one surface triangle to the next. Higher values generate fewer triangles, but they also lower the overall quality of muscle piece exteriors.

Inputs

Input 1

The muscle geometry to convert from surfaces to tetrahedral meshes.

If the muscleid attribute or the tpose attribute are not present on the input muscle geometry, then the Muscle Solidify SOP will:

  • Create the tpose attribute and set its value to the geometry’s pose at the Initialization Frame.

  • Create the muscle_id attributes for each connected cluster of primitives (muscle) on the input geometry and assign them a default muscle ID (for example, muscle_0, muscle_1, muscle_2, and so on).

Outputs

Output 1

  • Static tetrahedral meshes for each muscle.

  • maxthickness point attribute and the musclethickness primitive attribute.

See also

Geometry nodes