¶AdnMuscle
AdnMuscle is a Maya deformer for fast, robust and easy-to-configure volumetric muscle simulation for digital assets. Thanks to the combination of internal (structural) and external (attachments and slide on segment) constraints, this deformer can produce dynamics that allow the mesh to acquire the simulated characteristics of a muscle with realistic volume preservation, fibers activations to modulate the rigidity, and attachments properties to external objects to follow the global kinematics of the character.
The influence these constraints have on the simulated mesh can be freely modified by painting them via the AdonisFX Paint Tool or by uniformly regulating their influence via multipliers in the Attribute Editor. Besides the maps and multipliers there are many other parameters to regulate the muscle's dynamics and behaviour to a wide array of options.
¶How To Use
The AdnMuscle deformer is of great simplicity to set up and apply to a mesh within a Maya scene. The way this deformer works is by applying simulation on top a mesh emulating a muscle which follows the dynamics of attachment points. Those attachments mark the anchor points for the muscle, prepared to act as tendons, and will introduce great part of the dynamics of the deformer.
An AdnMuscle requires the following inputs to be provided:
- Attachments (A): Attachment anchors to which the simulated muscle will be attached to. Any transform node can be used (e.g. joints, locators, meshes, etc). This input is optional and unlimited.
- Muscle Geometry (M): Mesh that the muscle deformer will be applied onto.
It is not mandatory to select the attachments on creation of the AdnMuscle deformer. Attachments can be added and removed after creating the deformer. For more information check the advance section.
To create an AdnMuscle, follow these steps:
- Select the Attachments (if any), then the Muscle Geometry.
- Press the button in the AdonisFX shelf or press Muscle in the AdonisFX menu. If the shelf button is double-clicked or the option box in the menu is selected a window will be displayed where a custom name and initial attribute values can be set.
- AdnMuscle is ready to simulate with default settings. Check the next section to customize their configuration.
¶Attributes
¶Solver Attributes
Name | Type | Default | Animatable | Description |
---|---|---|---|---|
Enable | Boolean | True | ✓ | Flag to enable or disable the deformer computation. |
Iterations | Integer | 10 | ✓ | Number of iterations that the solver will execute per simulation step. Greater values mean greater computational cost. Has a range of [1, 10]. Upper limit is soft, higher values can be used. |
Material | Enumerator | Muscle | ✓ | Solver stiffness presets per material. The materials are listed from lowest to highest stiffness. There are 7 different presets: Fat: 103, Muscle: 5e3, Rubber: 106, Tendon: 5e7, Leather: 106, Wood: 6e9, Concrete: 2.5e10. |
Stiffness Multiplier | Float | 1.0 | ✓ | Multiplier factor to scale up or down the material stiffness. Has a range of [0.0, 2.0]. Upper limit is soft, higher values can be used. |
Activation | Float | 0.0 | ✓ | Current activation of the deformed muscle. The activation modifies the stiffness of the muscle depending on the fibers direction of the muscle. Has a range of [0.0, 1.0]. |
Rest Activation | Float | 0.0 | ✓ | Value representing the amount of rest activation to apply to the muscle. Has a range of [0.0, 1.0]. |
Volume Preservation | Float | 1.0 | ✓ | The amout of volume to preserve of the current simulated muscle. Has a range of [0.0, 1.0]. Upper limit is soft, higher values can be used. |
Volume Ratio | Float | 1.0 | ✓ | The amount of volume ratio increase or decrease to apply to the simulated muscle. Has a range of [0.0, 2.0]. Upper limit is soft, higher values can be used. |
¶Time Attributes
Name | Type | Default | Animatable | Description |
---|---|---|---|---|
Preroll Start Time | Time | Current frame | ✗ | Sets the frame at which the preroll begins. The preroll ends at Start Time. |
Start Time | Time | Current frame | ✗ | Determines the frame at which the simulation starts. |
Current Time | Time | Current frame | ✓ | Current playback frame. |
¶Scale Attributes
Name | Type | Default | Animatable | Description |
---|---|---|---|---|
Time Scale | Float | 1.0 | ✓ | Sets the scaling factor applied to the simulation time step. Has a range of [0.0, 2.0]. Upper limit is soft, higher values can be used. |
Space Scale | Float | 1.0 | ✓ | Sets the scaling factor applied to the masses and/or the forces. AdonisFX interprets the scene units in meters. Because of that, to simulate external forces in the right scale, the Space Scale may need to be adjusted. For example, to apply Gravity with a value of 9.8 m/s^2^, the Space Scale should be set to 0.01. Has a range of [0.0, 2.0]. Upper limit is soft, higher values can be used. |
¶Gravity
Name | Type | Default | Animatable | Description |
---|---|---|---|---|
Gravity | Float | 0.0 | ✓ | Sets the magnitude of the gravity acceleration. Has a range of [0.0, 100.0]. Upper limit is soft, higher values can be used. |
Gravity Direction | Float3 | {0.0, -1.0, 0.0} | ✓ | Sets the direction of the gravity acceleration. Vectors introduced do not need to be normalized, but they will get normalized internally. |
¶Advanced Settings
Stiffness Settings
Name | Type | Default | Animatable | Description |
---|---|---|---|---|
Use Custom Stiffness | Boolean | False | ✓ | Toggles the use of a custom stiffness value. If custom stiffness is used, Material and Stiffness Multiplier will be disabled and Stiffness will be used instead. |
Stiffness | Float | 105 | ✓ | Sets the custom stiffness value. Its value must be greater than 0.0. |
Dynamic Properties
Name | Type | Default | Animatable | Description |
---|---|---|---|---|
Global Damping Multiplier | Float | 0.75 | ✓ | Sets the scaling factor applied to the global damping of every point. Has a range of [0.0, 1.0]. Upper limit is soft, higher values can be used. |
Inertia Damper | Float | 0.0 | ✓ | Sets the linear damping applied to the dynamics of every point. Has a range of [0.0, 1.0]. Upper limit is soft, higher values can be used. |
Rest Length Multiplier | Float | 1.0 | ✓ | Sets the scaling factor applied to the edge lengths at rest. Has a range of [0.0, 2.0]. Upper limit is soft, higher values can be used. |
Compression Multiplier | Float | 1.0 | ✓ | Sets the scaling factor applied to the compression resistance of every point. Has a range of [0.0, 2.0]. Upper limit is soft, higher values can be used. |
Stretching Multiplier | Float | 1.0 | ✓ | Sets the scaling factor applied to the stretching resistance of every point. Has a range of [0.0, 2.0]. Upper limit is soft, higher values can be used. |
Attenuation Velocity Factor | Float | 1.0 | ✓ | Sets the weight of the attenuation applied to the velocities of the simulated vertices driven by the Attenuation Matrix. Has a range of [0.0, 1.0]. Upper limit is soft, higher values can be used. |
Hard Attachments | Boolean | True | ✓ | If enabled, attachment constraints will force the vertices to stick to target transformation completely. |
¶Debug Attributes
Name | Type | Default | Animatable | Description |
---|---|---|---|---|
Debug | Boolean | False | ✓ | Enable or Disable the debug functionalities in the viewport for the AdnMuscle deformer. |
Feature | Enumerator | Muscle Fibers | ✓ | A list of debuggable features for this deformer.
|
Width Scale | Float | 1.0 | ✓ | Modifies the width of all lines. |
Color | Color Picker | ✓ | Selects the line color from a color wheel. Its saturation can be modified using the slider. | |
Fiber Scale | Float | 3.0 | ✓ | The scale can be modified to set a custom fiber length. |
¶Connectable Attributes
Name | Type | Default | Animatable | Description |
---|---|---|---|---|
Attenuation Matrix | Matrix | Identity | ✓ | Transformation matrix to drive the attenuation. |
Attachment Matrix | Matrix | Identity | ✓ | List of attachment matrices (from a compound attribute) used for setting up attachments. |
Slide On Segment Root Matrix | Matrix | Identity | ✓ | List of root matrices (from a compound attribute) used for setting up segments of slide on segment constraints. |
Slide On Segment Tip Matrix | Matrix | Identity | ✓ | List of tip matrices (from a compound attribute) used for setting up segments of slide on segment constraints. |
¶Attribute Editor Template
¶Paintable Weights
In order to provide more artistic control, some key parameters of the muscle solver are exposed as paintable attributes in the deformer. The AdonisFX Paint Tool must be used to paint those parameters to ensure that the values satisfy the solver requirements.
Name | Default | Description |
---|---|---|
Attachment Constraints | 0.0 | Weight to indicate the influence of each attachment at each vertex of the muscle. |
Tendons | 0.0 | Floating values to indicate the source of the muscle fibers. The solver will use that information to make an estimation of the fiber direction at each vertex. It is recommended to set a value of 1.0 wherever the tendinous tissue would be in an anatomically realistic muscle and a value of 0.0 in the rest of the mesh. |
Fibers | {0.0, 0.0, 0.0} | The deformer estimates the fiber directions at each vertex based on the tendon weights. In case that the estimated fibers do not fit well to the desired directions, the paint tool can be used to comb the fibers manually. The fibers can be displayed using the Muscle Fibers option in the debugger. |
Compression Resistance | 1.0 | Force to correct the edge lengths if the current length is smaller than the rest length. A higher value represents higher correction. |
Stretching Resistance | 1.0 | Force to correct the edge lengths if the current length is greater than the rest length. A higher value represents higher correction. |
Global Damping | 1.0 | Set global damping per vertex in the simulated mesh. The greater the value per vertex is the more it will attempt to retain its previous position. |
Slide on Segment Constraints | 0.0 | Weight to force vertices to displace only in the direction of a user-specified group of segments. |
- The attachment weights are normalised at each vertex. This normalisation is applied when a stroke is finished. The use of the AdonisFX Paint Tool is mandatory for that.
- It is recommended to paint the values for the most influent attractors at the end in order to avoid the internal normalisation override them in further strokes.
¶Debugger
In order to better visualize deformer constraints and attributes in the Maya viewport there is the option to enable the debugger, found in the dropdown menu labeled Debug in the attribute editor.
To enable the debugger the Debug checkbox must be marked. To select the specific feature to be visualized, choose it from the list provided in Features. The features that can be visualized with the debugger in the AdnMuscle deformer are:
- Muscle Fibers: For each vertex, a line will be drawn showing the direction of the muscle fibers.
- Attachments Constraints: For each vertex with an attachment constraint weight greater than 0.0, a line will be drawn from the mesh vertex to its respective attachment.
- Slide on Segment Constraints: For each vertex with a slide on segment weight greater than 0.0, a line will be drawn from the mesh vertex to the closest point to its respective segment.
¶Advanced
¶Attachments
Once the AdnMuscle deformer is created, it is possible to add and remove new attachments to the system.
-
Add attachments:
- Select the transform nodes (one or more) to be assigned as attachments to the AdnMuscle.
- Select the mesh that has the AdnMuscle deformer applied.
- Press the button in the AdonisFX shelf or press Add Attachments in the AdonisFX menu from the Edit Muscle submenu.
-
Remove attachments:
- Select one or more transform nodes that are assigned as attachments to the muscle.
- Select the mesh that has the AdnMuscle deformer applied.
- Press the button in the AdonisFX shelf or press Remove Attachments in the AdonisFX menu from the Edit Muscle submenu.
- Alternatively, if only the mesh with the AdnMuscle deformer is selected, when pressing the button, all attachments will be removed.
¶Slide On Segment Constraint
Additionally to all previously mentioned constraints, muscles can have an additional, optional constraint that can define a segment over which the muscle will slide.
-
Add Segment:
- Select the transform nodes from which a segment would be created for the muscle to slide on.
- Select the mesh that has the AdnMuscle deformer applied.
- Press Add Slide On Segment Constraint in the AdonisFX menu from the Edit Muscle submenu.
- The transform nodes selection must follow a parent to child relationship in the hierarchy (like rig joints do).
- It also recommended to paint only the vertices that are not attached to the rig, i.e. excluding the tendon vertices.
- This constraint is recommended especially for muscles on the limbs.
-
Remove Segment:
- Select one or more transform nodes that are assigned as segment anchors to the AdnMuscle.
- Select the mesh that has the AdnMuscle deformer applied.
- Press Remove Slide On Segment Constraint in the AdonisFX menu from the Edit Muscle submenu.
- Alternatively, if only the mesh with the AdnMuscle deformer is selected, when pressing Remove Slide On Segment Constraint in the AdonisFX menu, all segments will be removed.