Houdini 20.0 Nodes Geometry nodes

Muscle Properties geometry node

Creates and modifies the physical properties for the input solid muscle geometry in preparation for the muscle solver.

On this page
Since 19.0

This node assigns physical properties to your character’s muscles that will determine how they are simulated by the muscle solver. These physical properties control muscle behaviors like how receptive or resistant muscles are to shape changes, which regions of a muscle are tendon, how stiff or floppy a muscle is, how much a muscle will bulge on contraction, and so on.

How-to

To...Do this

Set up muscle properties for your muscles

  1. Create your first Property Assignment multiparm.

  2. In the first multiparm’s tab, leave the Group parameter field empty and then set all the broad general settings that you want to apply to all the muscles for your character.

    This tab will be your settings master page, and most of these settings will most likely use the Absolute versions of the parameters.

  3. (Optional) Create a Muscle Paint SOP node and use that to paint a Tendon Mask for the Tendon Mask Radius parameter setting.

    This allows you to paint the tendon region directly on your muscles. If you want to paint any other properties, use an Attribute Paint SOP node.

  4. Create your second Property Assignment multiparm.

  5. In the second multiparm, type the names of the muscle or group of muscles you want to define the settings for in the Group parameter field using the @muscle_id grouping syntax, and then set all the settings that you want to apply to those muscles.

    This tab will be a specific behaviors page where you will dial in the physical properties for the muscles you specified, and most of these settings will most likely be a mixture of Absolute and Relative versions of the parameters.

  6. (Optional) Create a Muscle Paint SOP node and use that to paint a tendon mask for the Tendon Mask Radius parameter setting.

    This allows you to paint the tendon regions directly on your muscles. If you want to paint any other properties, use an Attribute Paint SOP node.

  7. Select your Muscle Solver Vellum SOP node, turn on its Display flag, and then flip book your simulation to view the result of your specific behaviors property set-up in MPlay.

  8. Repeat steps 6-8 for each additional page of properties you need to create.

State

Muscle Properties state hotkeys

Hotkey or Interaction

Action

Press A

Adds a new Property Assignment multiparm for the currently selected muscle in the viewport state.

Muscle Properties state visualizers

Visual Feedback

Meaning

Blue muscle

Muscle with default property values.

Red muscle

Muscle with modified property values.

White region

Tendon. This is the muscle region that has a high stiffness and very little flexion.

Red region

Belly of the muscle. This is the muscle region that has a high amount of flexion.

Example: Muscle colors in the Muscle Properties state
Muscle Properties right-click menu

Add New Properties for Selected Muscles

Adds a new Property Assignment multiparm for the currently selected muscle in the viewport state.

Attributes

fiberdamping

point

fiberstiffness

point
  • Set by Fiber Strength.

  • Stores the fiber scale force for each muscle point.

fibervolumescale

point

maxfiberscale

point
  • Set by Fiber Scale Range.

  • Stores the upper threshold or maximum for muscle tension per muscle point.

minfiberscale

point
  • Set by Fiber Scale Range.

  • Stores the lower threshold or minimum for muscle tension per muscle point.

soliddampingratio

point
  • Set by Damping Ratio.

  • Stores the amount of energy a muscle point is able to preserve as its muscle changes shape.

solidmassdensity

point
  • Set by Mass Density.

  • Stores the mass per volume for each muscle point.

solidshapestiffness

point

solidvolumestiffness

point

targetshape

point

Stores the rest shape for a muscle. By default, this is tpose. However, you can use this attribute to define your own target shape for a muscle.

tendonmask

point

tendonstiffness

point

Parameters

Tendon Radii use World Space Distance

When off, [Tendon Mask Range will be proportional to the computed length of a given muscle. The computed length of a muscle will be stored in the musclelength point attribute. If the musclelength attribute already exists, it will be used instead of being computed. When this parameter is on, Tendon Mask Regions disregards musclelength, and distances from the ends are measured in world units. Tendon regions use the axialramp attribute to determine the extents of individual muscles.

Axial Ramp Correction

When on, the axialramp attribute will tend to be more sensible about which way is up. This will affect the correlation between the Tendon Mask Radius parameters, and the orientation of the affected muscles. When off, this orientation can appear somewhat arbitrary. The axialramp attribute will only be computed if it doesn’t already exist. Therefore, this toggle will only have an effect when the incoming muscle geometry does not have an axialramp.

Property Assignments

When you first create a Property Assignment multiparm, all its parameters are off by default and each parameter has a default value. You can choose to enable only the parameters you want to use in that multiparm, and you can also choose to keep their default values or modify them. If you ever need to view the default values for the muscle proprieties, just look at the unmodified Absolute values of the parameters. Only parameters that are turned on (with the checkboxes next to their parameter names) are applied to their respective muscles.

Absolute and Relative parameters

Each parameter has an Absolute or Relative version of the setting.

When a parameter is Absolute, its value is explicit and it functions as an override. For example, if on multiparm tab 1 Shape Stiffness = 100 and then on multiparm on tab 2 Shape Stiffness = 50, then the shape stiffness property value the muscle solver will use is solidshapestiffness = 50.

When a parameter is Relative, it is a multiplier of the parameter’s default value (if only the Relative versions for a parameter are used across all Property Assignment multiparm tabs) or a multiplier of an Absolute value from a previous tab. For example, if on multiparm tab 1 Shape Stiffness = 100 and then on multiparm tab 2 Relative Shape Stiffness = 2, then the shape stiffness property value the muscle solver will use is solidshapestiffness = 200.

Number of Assignments

  • The number of defined muscle property setting assignments.

  • Adds or removes a Property Assignment multiparm.

Property Assignment multiparm tabs

  • A single multiparm tab can define the muscle property settings for a single muscle or multiple muscles (muscle_ids). See Group.

  • A single muscle can appear on multiple multiparm tabs.

  • Each multiparm tab is processed in sequential order, from lowest numbered tab to highest numbered tab. So if a muscle appears on more than one multiparm tab, then the property setting values on the highest numbered tab take priority and either multiply (when set to Relative) or override (when set to Absolute) the settings from lower numbered tabs.

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.

Property Label

This parameter allows you to enter a desctiptive string of text to help you name or identify the properties configured on this multiparm tab.

Group

Determines which muscle(s) to assign the current Property Assignment multiparm’s settings to.

This parameter only accepts single muscles or lists of muscles formatted in the @muscle_id grouping syntax. For example, @muscle_id=L_biceps, @muscle_id=L_biceps,L_triceps, or @muscle_id=L_biceps @muscle_id=L_triceps @muscle_id=L_deltoid. This parameter does not accept regular geometry groups.

You can specify the group selections for your Group parameter in the following ways:

  • In the viewport state, press A, select the muscle(s) you want to add to the group, and then press Enter. A new Property Assignment multiparm is created and the muscle(s) you selected are added to its Group.

  • In the Parameter Editor, click the arrow icon next to the Group parameter, select the muscle(s) you want to add to the group from the viewport state, and then press Enter. The muscle(s) you selected are added to the Group.

  • In the Parameter Editor, manually type the names (muscle_ids) of the muscles you want to add to the group in the Group field.

Tip

If you leave the Group parameter field empty, then its multiparm settings are applied to all your muscles.

Shape Stiffness

Override

When on, sets the stiffness of the muscle’s individual tetrahedrons. This determines how much a muscle wants to stay in its original shape (tpose).

This parameter is only available when the Absolute/Relative selector is set to Absolute.

Warning

For Muscle & Tissue set-ups and their .hip files that were created in Houdini v19.0.496 or earlier, please increase the Shape Stiffness/Relative Shape Stiffness parameter values by 10-100 times as the recently introduced Scale-Invariant ARAP method will apply stiffness values more accurately with respect to the area of triangles and the volume of tetrahedra.

Relative Shape Stiffness

Multiplier

See the Shape Stiffness parameter description.

This parameter is only available when the Absolute/Relative selector is set to Relative.

Damping Ratio

Override

When on, sets the amount of energy the muscle is able to preserve as it changes shape. With a low damping ratio, the muscle’s energy diminishes very little and its shape changes quickly. With a high damping ratio, the muscle’s shape changes more gradually.

This parameter is only available when the Absolute/Relative selector is set to Absolute.

Relative Damping Ratio

Multiplier

See the Damping Ratio parameter description.

This parameter is only available when the Absolute/Relative selector is set to Relative.

Mass Density

Override

When on, sets the mass per volume for the muscle’s tetrahedrons and controls how mass is computed per point. Formulating mass as density like this keeps the behavior resolution of the muscles independent. And the Shape Stiffness and Damping Ratio parameter values also help to keep the muscles' behavior predicable over varying resolutions. This means that when you use Mass Density with your muscles, changing the number of tetrahedra the muscles have will not affect their mass or how they appear in the simulation.

This parameter is only available when the Absolute/Relative selector is set to Absolute.

Relative Mass Density

Multiplier

See the Mass Density parameter description.

This parameter is only available when the Absolute/Relative selector is set to Relative.

Fiber Strength

Override

When on, generates the fiber scale force that is applied to the muscle’s tetrahedrons when it contracts (activates). Fiber Strength determines how strongly the muscle is squeezed. When and how much a muscle contracts is determined by muscletension (from the Muscle Flex SOP node) as it functions as a multiplier for Fiber Strength. The direction in which this scaling factor is applied to the muscle is determined by the fiber direction (materialW).

muscletension determines what percentage of fiber stiffness is used at any time.

With a Fiber Strength of 0, the muscle does not contract and is always limp. With a Fiber Strength of 1, the muscle fully contracts. If you want one muscle to have a stronger reaction to the fiber scale force and another muscle to have a weaker one, then vary the fiber strength across your muscles.

This parameter is only available when the Absolute/Relative selector is set to Absolute.

Warning

For Muscle & Tissue set-ups and their .hip files that were created in Houdini v19.0.496 or earlier, please increase the Fiber Strength/Relative Fiber Strength parameter values by 2-10 times as the recently introduced Scale-Invariant ARAP method will apply stiffness values more accurately with respect to the area of triangles and the volume of tetrahedra.

Relative Fiber Strength

Multiplier

See the Fiber Strength parameter description.

This parameter is only available when the Absolute/Relative selector is set to Relative.

Fiber Damping

Override

When on, reduces the amount of fiber scale force that is applied to the muscle’s individual tetrahedrons per iteration. Fiber damping also controls how rapidly a muscle can contract. The lower the fiber damping value, the more immediately you will see changes in your muscle. With a Fiber Damping of 0.001, the fiber scale force is allowed to change the muscle’s shape quickly. With a Fiber Damping of 0.7, the muscle has a very sluggish response to contraction (activation).

This parameter is only available when the Absolute/Relative selector is set to Absolute.

Caution

Fiber Damping can diminish fiber strength to an extent that you many never see a fiber reaction in your muscle (for example, like with a fiber damping value of 1). Be careful when adjusting this parameter value.

Relative Fiber Damping

Multiplier

See the Fiber Damping parameter description.

This parameter is only available when the Absolute/Relative selector is set to Relative.

Fiber Scale Range

Override

When on, sets the lower (first field) and upper (second field) thresholds or min/max for muscle tension (muscletension attribute). The first field determines the value of muscle tension when it is at rest, and the second field determines the value of muscle tension when it is at maximum contraction. By default, a muscle contracts in a range of 0 to 1. Muscle tension activation treats this range as fully relaxed to fully activated.

For example, if you set the first field’s value to 0.5, then when the muscle returns to its rest state it is actually returning to a 0.5 value. Or if you set the second field’s value to 0.75, then the muscle’s maximum contraction would be 75% that of any muscle that has a Fiber Scale Range max of 1.0.

This parameter is only available when the Absolute/Relative selector is set to Absolute.

Tip

You can make a muscle always be in a contracted (activated) state by raising its Fiber Scale Range’s minimum value (first field).

Relative Fiber Scale Range

Multiplier

See the Fiber Scale Range parameter description.

This parameter is only available when the Absolute/Relative selector is set to Relative.

Fiber Volume Scale

Override

When on, determines the scale force that is applied to the volume response when the muscle’s tetrahedrons are fully contracted (activated). This is called the volume scale force. This parameter provides an artificial boost to the muscle’s bulging action. Increasing the Fiber Volume Scale for the muscle will make it more plump when it is contracted.

The muscle solver applies volume preservation when a muscle’s fibers are scaled. So when a muscle tetrahedron is compressed in one direction by the fiber scale force, the volume scale force will automatically try to preserve volume and scale in the opposite (perpendicular) direction. For example, a Fiber Volume Scale of 2 generates twice the volume scale force and as a result twice the volume preservation.

This parameter is only available when the Absolute/Relative selector is set to Absolute.

Relative Fiber Volume Scale

Multiplier

See the Fiber Volume Scale parameter description.

This parameter is only available when the Absolute/Relative selector is set to Relative.

Tendon Stiffness

Override

When on, determines the scaling factor or scale force that is applied to the Shape Stiffness for the tendon regions of the muscle. The tendon regions of the muscle are much stiffer than the belly areas of the muscle, and they have a significantly reduced response to muscle contraction (activation). As such, tendon stiffness is considered a multiplier of the belly’s shape stiffness. For example, a Tendon Stiffness of 25 will make the tendon region of a muscle 25 times more stiff than the belly area of the muscle.

This parameter is only available when the Absolute/Relative selector is set to Absolute.

Example: Tendon regions on a muscle

Relative Tendon Stiffness

Multiplier

See the Tendon Stiffness parameter description.

This parameter is only available when the Absolute/Relative selector is set to Relative.

Tendon Mask Radius

When on, defines which parts of a muscle are the tendon regions and how far from the muscle’s ends the tendon regions extend. The tendon regions of the muscle are much stiffer than the belly areas of the muscle, and they have a significantly reduced response to muscle contraction (activation).

The Tendon Mask Radius is a procedural ramp control for assigning tendon regions and each of its fields represents a muscle end. In the viewport state, the white-colored areas on the muscle’s ends represent the tendon regions, and the red-colored area on the middle of the muscle represents the belly muscle region. On the red area of the muscle, more scale force is applied and it is more likely to bulge/expand. On the white areas of the muscle, the scale force is diminished and it is very unlikely to bulge/expand.

This parameter is only available when the Absolute/Relative selector is set to Absolute.

Example: Adjusting a muscles tendon mask radii

Tips

  • You cannot control which part of a muscle is the head (first field) and which is the tail (second field). So if the tendon region radii on the muscles in a group do not match, you can put the non-conforming muscles on different tabs and adjust their Tendon Mask Radii parameter values from there.

  • If you don’t like the results you are getting with Tendon Mask Radii, then you can always turn off this parameter and paint its attribute values with an Attribute Paint SOP node. In the Attribute Paint SOP's Group field, just use the @muscle_id grouping syntax (for example, @muscle_id=L_extensor_lateralis) to specify the muscles you want to paint the radii for and then in the Atribute Name field type the name of the Tendon Region Radii’s attribute (tendonmask).

Thickness Threshold

When on, sets the threshold value for Tendon Stiffness above which solid muscle geometry is considered belly muscle and below which it is considered tendon. You can use this parameter to make thin or big surface muscles (for example, like the pectoralis) act more like a tendon without having to define Tendon Mask Radius regions. Thickness Threshold is applied to entire the muscle.

Inputs

Input 1

Solid muscle geometry.

Outputs

Output 1

The physical property settings and corresponding attributes for all the incoming muscles.

See also

Geometry nodes