On this page |
Overview ¶
Proper geometry preparation is important for better muscle simulation. This page covers how to prepare your muscle and bone geometry before you simulate them. It ensures you have correct geometry formats, proper naming conventions, and verify the setup to prevent common simulation issues. None these steps are mandatory but they are recommended for better results.
Geometry requirements ¶
Geometry preparation encompasses both the muscle geometry and bone geometry.
When preparing both muscle and bone geometry, there are several key parts:
-
All muscle surfaces must be manifold non-intersecting polygonal geometry.
-
Make sure your input geometry primitive type is
polygon face
and not a packed primitive. If it’s packed, make sure to unpack and, if necessary convert it. -
Make sure your geometry follows Houdini’s meter-based unit system.
-
Models should be real-world scale to ensure proper physics simulation
-
From centimeters to meters: use
Transform SOP with uniform scale of
0.01
. Remember to use another Transform SOP at scale of100
to get back to the original size before you export.
-
Specific to muscle geometry ¶
-
Each muscle component requires a unique
muscle_id
attribute value for identification
Specific to bone Geometry ¶
Bone surfaces serve as the foundation for muscle attachments and require specific preparation:
-
Geometry resolution should be reduced as much as possible to improve collision handling.
-
Remove small crevices and holes where possible.
-
You must have a valid
tpose
attribute for rest position reference. -
An identifying string attribute such as
bone_id
helps with specifying muscle to bone constraints.
Muscle IDs and T-Pose setup ¶
The T-Pose and muscle IDs form the foundation of Houdini’s muscle simulation system. The T-Pose is the rest position where all constraint relationships and attachment points are established. The muscle_id
attribute allows individual control over muscle properties, constraint relationships, and symmetrical behavior. This helps with more precise customization of each muscle’s physical characteristics and interactions. The proper muscle IDs ensure that properties and constraints are correctly assigned to specific muscles rather than applied globally. Both of these setups happen before simulation because the muscle solver relies on the T-Pose to configure constraints by temporarily removing animation and returning to this neutral state.
This setup is important because without proper T-Pose and muscle IDs:
-
Muscles lack stable reference positions for muscle attachments and prevent targeted property assignments.
-
Hard to establish accurate muscle-to-muscle and muscle-to-bone relationships.
-
Result in unstable constraints, incorrect muscle behavior, and the inability to control individual muscle properties effectively.
For information on setting up your muscle IDs and T-Pose. Refer to the Muscle passs section in Muscle & Tissues workflow or the Geometry Preparation video in the Muscles masterclass.
Muscle IDs ¶
The muscle_id
attribute identifies distinct muscles. Each muscle and bone piece must have a unique identifier attribute.
You can create it in two ways:
1. From existing names
-
Use
Attribute Copy SOP to copy existing name attribute
-
Set source attribute to
name
(or your existing attribute) -
Connect both inputs to the same node above it
-
Set target attribute to
muscle_id
-
Or use
Attribute Rename SOP
-
2. Using
Muscle ID SOP
-
Enter viewport state and select muscles individually
-
Assign appropriate prefixes follow naming convention:
-
L_ prefix for left side muscles
-
R_ prefix for right side muscles
-
C_ prefix for central muscles
-
Bone ID attribute ¶
Similar to muscles, bones need identifying attributes. There is currently no predetermined attribute name for bones. However, bone_id
is suggested and may become standardized in the future:
-
Copy existing names when available
-
Use
Muscle ID SOP to create new bone IDs
-
Keep names descriptive and consistent with muscle naming
-
T-Pose setup ¶
The
Muscle Solidify SOP can handle T-Pose creation for your muscle geometry. During processing, it automatically generates the T-Pose attribute and stores the model’s position as the rest position. The node then names this rest position attribute as
tpose
which ensures that all muscles have proper rest positions for constraint calculation and deformation.
Bones T-Pose setup ¶
Unlike muscles, bones require manual setup of their T-Pose configuration. To do this, set the
Set T-Pose SOP to your bone geometry. This node creates and stores the critical rest position information that the muscle system uses for constraint calculations. The T-Pose attribute should be specified early in your network to ensure all downstream nodes have access to this reference position. Verify that the T-Pose values accurately represent your character’s intended rest position because this affects all muscle attachments and deformations that follows it. You can verify the value of the
tpose
attribute by temporarily placing down an
Extract T-Pose SOP Extract T-Pose SOP on your animated bone geometry. This can help ensure the result matches your T-pose.
Pre-Roll configuration ¶
When your setup requires a pre-roll phase, add a
Muscle Preroll SOP to your network.
This node manages the transition between rest pose and animation through three key parameters:
-
Initialization Frame
specifies which frame serves as your target pose, establishing the endpoint for your pre-roll transition. -
Initial Hold parameter
determines how long the system maintains the t-pose before beginning the transition. This corresponds to a frame number and will bethe last frame that the T-pose will be held at. -
Pre-roll Duration
controls the length of the blend between your t-pose and initial animation pose, allowing for smooth integration of dynamics. This is a number of frames rather than a frame number. -
If you want your output animation after the preroll to match the incoming animation, make sure
Initial Hold + Pre-roll Duration +1 = Initialization Frame
.