Houdini 20.5 Nodes Geometry nodes

Muscle ID geometry node

Creates and assigns Muscle IDs to each connected cluster of primitives on the input geometry.

On this page
Since 19.0

This node creates Muscle IDs and assigns them to each connected cluster of primitives on the input geometry. If muscle_id attributes already exists on the input geometry, then this node also allows you to change the name of the muscle_id attribute and modify its string values.

Example: Group and Attribute List with default Muscle ID values

Muscle IDs are used by downstream Muscle & Tissue nodes to identify each distinct muscle on the input geometry.

By default, each connected cluster of primitives on your input geometry is assigned an initial temporary Muscle ID value. For example, __piece_0, __piece_1, __piece_02, and so on. You can update your geometry’s Muscle ID values with the Renamings multiparms.

How-to

To...Do this

Rename a muscle from the viewport state

  1. -click on the muscle in the viewport and then press Enter.

  2. The renaming pop-up dialog appears.

  3. In the dialog window, type a new name for the current selected muscle and then click Accept.

    Example: Muscle ID renaming pop-up dialog

    A new Renaming multiparm appears in Parameter Editor for the muscle you selected. Its Group parameter field contains the muscle’s @muscle_id to default muscle name mapping and its (Name value) parameter field contains the new name you entered in the renaming pop-up dialog.

    Example: New muscle ID in a new Renaming multiparm

Rename a muscle from the Parameter Editor

  1. In the Parameter Editor, create a new Renaming multiparm.

  2. In the new multiparm, click the arrow icon next to the Group parameter.

  3. Do one of the following:

    • In the viewport state, turn on Select Groups or Connect Geometry Selection selection mode (9 or numpad 9), -click on the muscle, and then press Enter.

    • In the viewport state, show the Display Group and Attribute List pane.

      • In the list pane, click the cog icon and then select @muscle_id * from the menu list that appears.

      • In the list pane, select the Muscle ID that corresponds to the muscle you want to rename and then press Enter.

    The @muscle_id to default muscle name mapping for the muscle you selected appears in the Group field.

    Example: @muscle_id to default muscle name mapping
  4. In the multiparm, type a new name for the muscle in the (Name value) parameter field and then press Enter.

    Example: @muscle_id to default muscle name mapping

State

Muscle ID state hotkeys

Hotkey or Interaction

Action

=

Sets the Muscle ID value for the selected muscle.

-

Clears the current Muscle ID value for the selected muscle.

0

Clears all the Muscle ID values for the input muscle geometry.

9

Turns on Select Groups or Connected Geometry selection mode and shows the Group and Attribute List in the viewport.

Muscle ID state visualizers

Visual Feedback

Meaning

Gray muscle

Muscle with a default Muscle ID value.

Gold muscle

Current selected muscle geometry.

Red muscle

Muscle with a renamed Muscle ID value.

Example: Muscle colors in the Muscle ID state

Attributes

muscle_id

string
  • Defines a unique string value for a connected cluster of primitives that represents a muscle in the system. This attribute prevents conflicts with any other assignments of the name attribute in your network.

  • Used by the Muscle & Tissue system to identify individual muscles.

  • You can customize the name of this attribute with the Attribute Name parameter.

Parameters

Attribute Name

The name of the Muscle ID attribute the node creates. If you want to define a different name for the Muscle ID attribute, then you can use this parameter to specify a new name for it. For example, you could change muscle_id to muscle_name.

Default Name

The initial prefix string that is given to each connected piece of the input geometry. The default name then has a sequential number appended, and it is assigned to the Muscle ID attribute.

Renamings

The Renamings multiparms allow you to specify the muscle geometry pieces you want to rename and the new Muscle ID values you want to assign to them.

Number of Namings

  • The number of muscles. This count does not include the symmetrical muscle duplicates.

  • Adds or removes Renamings multiparms.

    1 - Deletes the currently selected multiparm tab.
    2 - Inserts a new multiparm tab to the right of the currently selected multiparm tab.
    3 - Currently selected mulitparm tab.
    4 - Adds or removes multiparm tabs from the end of the list. Increasing the number adds tabs and decreasing the number deletes tabs.
    5 - Adds a new multiparm tab to the end of the list.
    6 - Removes the multiparm tab from the end of the list.
    7 - Deletes all the current multiparm tabs.

Group

Determines which primitive, range of primitives, geometry group, or default @muscle_id to assign the specified Name (Muscle ID value) to. For example, 13929, 13929-13932, group_10, or @muscleid=__piece_01.

Name

Specifies the muscle_id string value for the defined Group. If the model for your creature or character is symmetrical, then also include an appropriate prefix (for the left or right side) with the value. For example, L_gastronemius or l_oblique.

Example: Group and Name for an L_rectus_femoris muscle

Mirror Group

For a symmetrical model with Group defined using the @muscle_id syntax, this field displays the mirror group definition that was automatically determined by the current Symmetry settings. For a symmetrical model with Group defined using a different method, you can use this field to specify the appropriate mirror group definition.

Mirror Group is only accessible when Expose Renaming Parameter is turned on.

Mirror Name

For a symmetrical model with Group defined using the @muscle_id syntax, this field displays the mirrored Muscle ID value that was automatically generated by the current Symmetry settings. For a symmetrical model with Group defined using a different method, you can use this field to specify the mirrored Muscle ID value.

Mirror Name is only accessible when Expose Renaming Parameter is turned on.

Example: Automatically generated Mirror Group and Mirror Name for the L_rectus_femoris muscle

Symmetry

The Symmetry parameters automatically determine and generate Mirror Group and Mirror Name values for the second half of a symmetrical model once you have defined the Group and Name values for the first half.

Automatic symmetry can only occur when you specify your Group values using the @muscle_id syntax. If you use any other method (like range of primitives or geometry group), then you will need to enter your muscles' Mirror Group and Mirror Name values manually.

Automatic symmetry is only applicable to whole intact symmetrical models. If your input muscle geometry is only one half of a symmetrical model, then you can use the Mirror Muscles SOP downstream in your Muscles & Tissue network to make sure that all your muscles are assigned the appropriate Muscle ID values.

Apply Symmetry

When on, if you have a full intact symmetrical model (not just one half a model), then when you use Group and Name to name your muscles, the muscles on the other side of the model will automatically be named using the rules defined by the Mirror Parameters settings.

Symmetry does not work when the Group parameter contains primitives or a range of primitives. It only works when it contains groups that you set-up upstream using one of the Group SOP nodes.

Mirror Parameters

The Mirror Parameters are only available when Apply Symmetry is on.

Expose Renaming Parameter

When on, the Mirror Group and Mirror Name parameters appear in each Renamings multiparm.

From Prefix

Specifies the name prefix that is used for the Name value. For example, this parameter value would be L_ if your Name values 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 Mirror Name values. 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.

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

  • Ideally non-intersecting polygonal manifold geometry for your muscles.

  • The muscle geometry data could come from a variety of sources.

    For example:

    • Geometry SOP nodes located in the same HIP file as your Muscle & Tissue network.

    • Stash SOP node containing the muscle geometry data.

    • Alembic SOP node that loads in an .abc file that contains the muscle geometry data.

    • File SOP that references a .bgeo on disk that contains the muscle geometry data.

Outputs

muscle_ids for each connected cluster of primitives that represents a muscle in your Muscle & Tissue network.

See also

Geometry nodes