On this page |
Introduction ¶
When working with the Muscles & Tissue system, your character will progress through three separate simulation passes leading to the final deformation of its renderable surface. At the end of each simulation pass, you will have the opportunity to save a geometry cache to disk before incorporating it into subsequent passes. The simulation passes are as follows: the muscles pass, the tissue pass, and the skin pass. The final stage of the Muscles & Tissue simulation creation process does not involve a simulation pass, but rather it requires that you use a geometry deformer to transfer your character’s final simulation to its high-resolution renderable mesh.
Each simulation pass does the following:
-
Operates on incoming solid softbody dynamic objects (objects comprised of tetrahedrons) and interprets attributes found on those objects to configure their physical properties and Vellum constraints. You can consider the majority of the Muscle & Tissue workflow as attribute manipulation that ultimately drives the constraint creation within the solvers.
-
Uses the output of the previous pass as its input so that it has animated static geometry to constrain to and to collide with. For example, in the first simulation pass—the muscles pass—the constraint geometry is supplied by the animated anatomical bones. This bone animation can be derived from a number of sources like a KineFX animation or an Alembic cache. It doesn’t matter how the bone animation was generated. The only requirement is that a static t-pose of the bones is available in conjunction with the animated bones. All muscle and tissue surfaces should always be created relative to their bones' static t-pose.
As you move your character through each of these passes, you will encounter three major concepts for the Muscle & Tissue system:
Simulation geometry ¶
Pass requirements ¶
Muscle pass
-
The Muscle Solidify SOP node requires:
-
Manifold non-intersecting polygonal muscle surfaces.
-
-
The Muscle Solver Vellum SOP node requires:
-
Solid muscles configured with physical property attributes and constraint attributes.
-
Animated bone surface geometry.
-
Tissue pass
-
The Tissue Solidify SOP node requires:
-
Skin surface.
-
Muscle simulation geometry cache.
-
Animated bone surface geometry.
-
(Optional) Core surface.
-
(Optional) Core falloff polylines.
-
-
The Tissue Solver Vellum SOP node requires:
-
Solid tissue configured with physical property attributes and constraint attributes.
-
Animated surfaces representing underlying muscle and bone animation.
-
Skin pass
-
The Skin Solidify SOP node requires:
-
Skin surface.
-
-
The Skin Solver Vellum SOP node requires:
-
Solid skin configured with physical property attributes and constraint attributes.
-
Animated surfaces representing underlying tissue animation.
-
Pass layers ¶
Even though each simulation pass operates on solid softbody dynamic objects (objects comprised of tetrahedrons), fused polygonal surfaces also play a role. For example, the Vellum Solver requires a polygonal surface as an attachment target for sliding constraints to have an effect. This is why each geometry layer includes both tetrahedrons and a polygonal surface enclosure.
The following Muscles & Tissue solidification nodes create the required primitive types:
Muscle pass
Muscles are generated by tetrahedralizing input muscle polygonal surfaces, creating one distinct muscle per connected piece. In the process of creating muscles, each connected piece is given an identifier attribute stored as muscle_id
. If overlapping muscle surfaces share a common muscle_id
value, then they are tetrahedralized as a merged entity. If overlapping muscle surfaces have distinct muscle_id
values, then they are tetrahedralized separately and remain as overlapping objects. Polygonal surfaces for muscles are not created in the solidification step. Instead, the surfaces are created just-in-time within the Muscle Solver Vellum SOP node as they are only required for the Vellum sliding constraint.
Tissue pass
Tissue is generated using a layering approach. Perhaps the most complex object in the Muscle & Tissue system, the tissue solid is divided into two layers. The innermost tissue layer is referred to as the core, and the layer surrounding the core is just referred to as the tissue. Polygonal surfaces are created to envelop both the core tetrahedrons and the tissue tetrahedrons. As a result, the tissue pass is comprised of four distinct pieces of geometry: the tissue surface, the tissue solid, the core surface, and the core solid.
The core plays an intermediary role in attaching tissue to muscle; it is firmly attached to the muscles and bones, and it serves as the attachment target for the tissue. This means the tissue is attached to the muscles and bones via the Core. The core also has the ability to respond to the scaling force by imparting an inward pull on tissue geometry in order to force it (by applying negative pressure) towards the muscles and bones. This shrinkage/volume reduction during the tissue simulation pulls the tissue inward to create the muscle definition for your character.
The function of the tissue is to envelop the muscle and bone animation and show their underlying movements up to its tissue surface. If you vary the the attachment constraints of the tissue to the core, muscles, and bones, and vary the phsyical thickness and material properties of the tissue solid, you can achieve a mix of tightly conforming tissue and loose hanging flab.
Skin pass
The skin is an optional pass after the tissue. The skin layer is built with two structures like Tissue: an interior tetrahedral mesh (skin solid) and an exterior triangulated surface (skin surface).The solid component of the skin (skin solid) can relay physical properties like shape stiffness and volume preservation, while the polygonal surface (skin surface) can contribute stretch resistance to produce desirable wrinkling effects.
If you build the skin with this added thickness, buckling, folding, and dynamic effects can behave more like a fatty epidermal layer and less like a layer of cloth. The skin layer is constrained to the tissue sufrace with a variable amount of sliding. If you stiffen and weaken the skin-to-tissue sliding attachment, the skin layer can reveal wrinkles and folds.
Attachments ¶
The interaction between components is controlled through a constraint system. These constraints determine how muscles attach to bones and how tissue connects to the underlying structures. The system allows for varying degrees of attachment stiffness, which allows you to change the behavior of each component independently.
Understanding the relationship each simulation pass has with its associated attachment constraints is key when it comes to fine tuning your simulation results. Since multiple attachment constraints co-exist and affect the same geometry in tandem, it is important to familiarize yourself with each type of constraint operating on a piece of geometry in each simulation context.
Muscle constraints ¶
Muscle constraints are configured with the Muscle Properties SOP node and the Muscle Constraint Properties Vellum SOP node. These nodes take incoming solid muscle geometry, add or modify attributes, and then pass the data downstream.
Then the Muscle Vellum Solver SOP node applies these attribute values to either physical properties or attachment constraints in the following ways:
-
Muscles are attached to bones firmly in areas designated as Muscle Ends.
-
Muscles are attached with a springy sliding attachment to bones in areas designated to have Muscle to Bone attachments.
-
Muscle are attached to other muscles with a springy attachment via the Muscle to Muscle attachment.
-
Muscles are attached to other muscles with a firm, non-sliding attachment in areas designated to have Muscle Glue attachments.
In all cases, a firm attachment means it has a very high stiffness and will resist forces that try to pull it away from the rest position. Any other attachment is subject to a stiffness and damping ratio property that can affect its responsive and springy behavior.
Tissue constraints ¶
Tissue constraints are configured with the Tissue Properties SOP node. This node takes the incoming tissue geometry, adds and/or modifies its attributes, and then passes the data downstream. The Tissue Vellum Solver SOP node then uses these attribute values to create the necessary constraints.
Tissue is constrained in the following ways:
-
All core points are firmly attached to the muscle and bone input geometry.
-
The interior surface of the tissue layer (tissue solid) is attached to the exterior surface of the core layer (core surface).
-
The exterior surface of the tissue layer (tissue surface) is attached with a sliding attachment to the muscle and bone input geometry.
-
A distance limiting attachment also exists to restrict the exterior surface (tissue surface) from sliding too far.
In all cases, a firm attachment means it has a very high stiffness and will resist forces that try to pull it away from the rest position. Any other attachment is subject to a stiffness and damping ratio property that can affect its responsive and springy behavior.
Skin Constraints ¶
Skin constraints are configured with the Skin Properties SOP node. This node takes the incoming skin geometry, adds and/or modifies its attributes, and then passes the data downstream. The Skin Vellum Solver SOP node then uses these attribute values to create the necessary constraints.
Skin is constrained in the following ways:
-
All interior skin (skin solid) points are attached and slide over the input tissue (tissue surface) geometry.
-
Exterior skin (skin surface) points have a separate sliding attachment to the tissue (tissue surface) geometry.
-
A distance limiting attachment also exists to restrict the skin surface from sliding too far.
Two separate attachment constraints exist for the skin pass so that you can adjust them independently. You can use the solid point attachment (on the skin solid) to adhere or loosen the connection between skin and the underlying tissue. If loosened enough, the skin can appear more like a loose fitting jacket surrounding the tissue. You can also use the exterior surface attachment (on the skin surface) to force the polygonal exterior to tighten itself up against the tissue and press deeper into crevices.
Forces ¶
Muscle fiber scale force & muscle tension ¶
Muscles respond to a stiffness force along their local axes to produce an effect that is similar to muscle contraction. We refer to this action as fiber scaling. Since muscles are assigned a relatively high volume preservation stiffness by default, when fiber scaling is applied along their local axes, a volume-preserving bulging occurs perpendicular to these axes.
The main attributes that contribute to the fiber scaling action are:
-
muscletension
applies fiber scaling to muscles and thereby activates them, and you can animate it from the Muscle Flex SOP node. -
fiberstiffness
provides the fiber scale force or strength for the fiber scaling, and you can adjust it with the Fiber Strength parameter on the Muscle Properties SOP. -
materialW
vector attribute controls the orientation of the local axis, and it can be groomed interactively using the Fiber Groom SOP node. -
fibervolumescale
boosts the volume preservation response when fiber scaling takes effect, and you can adjust it with the Fiber Volume Scale parameter on the Muscle Properties SOP.
Fiber scaling varies over the different regions of a muscle. Areas designated as tendon regions in the Muscle Properties SOP node will reduce the Fiber Strength, while the regions in the belly of the muscles will receive the full effect of the fiber scale force.
Important Note
Ultimately, the stiffness and responsiveness of fiber scaling actions are controlled by a combination of all the fiber parameters on the Muscle Properties SOP.
Volume scale or shrinkage ¶
The Tissue Properties SOP and Skin Properties SOP nodes have parameters that control tissue and skin shrinkage. In their rest positions (tpose
attribute), the tissue, core, and skin record a rest volume and rest shape for each primitive in their geometries. Over the course of a simulation, the rest configuration can be modified relative to its initial state.
You can use the scale values for the rest shape and volume to adjust this rest configuration and create a shrink-wrapping effect that causes tissue and skin to pull inward and tighter against internal muscle and bone objects. By balancing the interplay between core, tissue solid, tissue surface, skin solid, and skin surface rest scales, you can achieve a variety of different tissue looks for your Muscles & Tissue simulation. For example, shrinking tissue tetrahedrons while expanding surface triangles can contribute to additional buckling over a tissue’s surface.
Sliding ¶
You can achieve a much more believable simulation if you apply sliding constraints to its attachments. With sliding constraints, surfaces and muscle objects are allowed to stay attached to internal geometry while having the freedom to slide the point of attachment relative to the initial state. Conversely, you can also use too much sliding to produce effects like muscles that flop every which way and tissue that oozes off the bone like a viscous fluid.
You can control the sliding for tissue and skin exterior surfaces (tissue surface and skin surface) with the Slide Rate and Slide Distance parameters on the Tissue Properties SOP and Skin Properties SOP nodes. Slide Rate affects the amount of change a re-projected target location is allowed to contribute to each time step during a solve. A Slide Rate of 1.0 allows a re-projection of a target attach location to update fully every time step, while a fractional slide rate only takes a percentage of the updated location vector. For more information on Vellum slide constraints, see Sliding Constraints.
Nodes ¶
Property nodes