On this page |
This workflow covers the muscle setup, configurations, and iterative refinement in the Otis Muscle and Tissue system.
Required assets ¶
Before you can configure and test your muscles in a simulation, there are a few required assets and setups:
-
Muscle surface geometry - The sculpted muscle surfaces should be manifold (no holes or bridges) non-intersecting polygonal geometry modeled in real-world scale (with 1 Houdini unit = 1 meter).
-
Animated bone surfaces - The polygonal bone surfaces should be modeled in real-world scale (with 1 Houdini unit = 1 meter).
-
Bone surfaces in t-pose (rest position). It is necessary to store the rest position or t-pose for your character’s bones and muscles as these values will be used to move your geometry into and out of the t-pose position throughout the Muscles & Tissue creation process.
Note
The bone surfaces in t-pose have to be triangulated and have the same topology as the animated bone surfaces.
-
Final render skin/mesh - Your high-poly production ready render skin/mesh to view the final results of the simulation.
As a prerequisite setup for your required assets, you can follow the Transfer muscles to your character workflow. If your character is bipedal and you do not have muscle geometry, you can use the Test Geometry: Otto Muscle Transfer recipe to transfer Otto’s muscles to your character. See Preparing geometry for muscles for more information.
Muscle setup workflow ¶
There are two Starter recipes to get your muscle and tissue simulation up and running quickly. It’s recommended to plug your assets into these recipes rather than start from scratch.
This example and workflow uses the Otis Muscle and Tissue Simulation recipe as a template. The recipe is available through the SOP tab menu in Character FX → Muscles → Otis Muscle and Tissue Simulation.
Initial setup ¶
The initial steps are to convert your muscle surface geometry into a tetrahedral mesh and paint the fiber grooms.
-
Each muscle’s surface (self-contained series of connected primitives) that will represent a muscle in your simulation must have a
muscle_id
attribute or name before it can be tetrahedralized. To do this, use theMuscle ID SOP.
-
The input muscle surfaces are tessellated with clean equilateral triangles. The muscle surfaces must be triangulated before tetrahedralization. To do this, use the internal Remesh Surface parameters on the
Muscle Solidify SOP node, which combines the remesh and tetrahedralization in one node.
-
As an optional step, you can create a
File Cache SOP after your Muscle Solidify SOP to prevent recooking everytime your scene file is opened. Turn off Time Dependent Cache before clicking Save to Disk.
-
When a muscle flexes, it contracts in the direction of its fiber vectors. The fiber vectors define the orientation of the muscles' local axes. For your muscles to contract in the direction you want them too, they need to have well defined custom fiber direction vectors. You can paint these fiber direction vectors for your muscles with the
Fiber Groom SOP node.
Setup properties, attachments, and constraints ¶
These steps involve configuring the muscle physical properties and modifying the layers of the muscle Otis constraints. See Understanding how simulating geometry works and How attachments works for more information.
-
The muscle physical properties determine the physical characteristics of the muscles like how receptive or resistant the muscles are to shape changes, which regions of the muscles are tendon, how stiff or floppy the muscles are, and how much the muscles will bulge on contraction. To do this, use the
Muscle Properties Otis SOP. See Working with muscle property assignments for more information.
It’s recommended to use the first Number of Assignments multiparameter tab to set the general parameters for all your muscles, and then use the subsequent multiparm tabs to set specific property configurations for individual muscles or groups of muscle. This is because the multiparm tabs are applied from left to right. As of Houdini 21, you can now reorder your multi parameter tabs by clicking and dragging the tab.
Important Note
The Absolute and Relative versions of the parameters have different behaviors. The Absolute parameter values are applied as overrides, and the Relative parameter values are applied as multipliers of previously set values (from prior multiparameter tabs) or default values.
-
The
Muscle Constraint Properties Otis SOP node creates and modifies the attributes that drive multiple layers of muscle Otis constraints.
-
Constrain the muscle ends so that they are very inflexible and closely follow the bones' animation.
-
Use muscle glue to strongly attach muscles together.
-
Constrain muscles to tissue to stop muscles from separating from each other and from the bone
-
-
If you only have half (just the left or right side, rather than both sides) of your character’s muscle geometry and your character is symmetrical, then you can use the
Muscle Mirror SOP node to mirror or duplicate the muscles for the missing side. Ensure that any central muscles are excluded from the group to prevent overlapping duplicate muscles.
Muscle tension lines and flex ¶
The Otis Muscles and Tissue system can automatically create tension lines using
Muscle Auto Tension Lines SOP, eliminating the need to manually draw lines for each muscle like in earlier versions. These tension lines are then fed into
Muscle Tension Lines Activate SOP and
Muscle Flex SOP nodes to set the flexing action of your muscles during simulation.
-
The
Muscle Auto Tension Lines SOP node automatically creates tension lines for each input muscle. The tension lines are calculated by finding the longest line between the specified muscle ends, for each muscle.
-
Ensure Match Tension Lines by Name is on in the
Muscle Flex SOP to automatically link each tension line generated by this node to each muscle. If you use a custom Muscle ID Attribute ensure that the same attribute is specified in the Attribute to Match field of your Muscle Flex.
-
-
The
Muscle Tension Lines Activate SOP node sets the activation value for the incoming muscle tension lines.
-
This node gives you more control over muscle activation than the previous version of the
Muscle Flex SOP as there are multiple parameters to set instead of one per tension line on the old Muscle Flex. It is also simpler than the now deprecated Muscle Flex Activation Ratio interface, as activation settings for multiple lines can be set at once instead of having one parameter per tension line. Furthermore, using lines instead of muscles to preview the activation values is faster to cook.
-
Turn on the Isolate Current Tab Selection when you select a tension line to isolate it in the viewport.
-
-
Use the Muscle Flex parameters to animate the
muscletension
attribute which is then used by themuscle solver to help determine when muscles try to contract and relax during their shot animation. This animation can be created automatically by the muscle tension lines alone or in combination with keyframes on the Muscle Flex parameters. You can tell the solver when to activate the muscles and when not to activate them by keyframing those parameter values, or use the Blend parameter to keyframe the overall activation.
Fascia setup ¶
Although this workflow involves only muscles, it’s important to have a default Fascia setup because the Otis Muscles and Tissue system simulates both muscles and tissue as a single unified pass. Without a Fascia setup, your muscles will behave unnaturally and may sag or move away from the bones during simulation. See Understanding how simulating geometry works for more information.
The recipes are set to use Fascia by default since it’s a simpler to configure and simulates faster. At this stage of testing and configuring, using fascia is enough to see results for your muscle setups and configurations. You can tune your muscle behavior such as stiffness, damping, fiber direction, and activation which can then later transfer to the tissue setup.
In the recipe, make sure the switch_sim_tissue
node is set to fascia_setup. This is set by default. Also, make sure it’s connnected downstream to the
Otis Configure Muscle and Tissue SOP node.
See Fascia and tissue setup for the full fascia setup workflow.
Otis configure and simulation ¶
The final steps of the workflow are the final preparation in the
Otis Configure Muscle and Tissue SOP node before simulation. Which are then input into
Otis Solver SOP node for the simulation.
See Otis configure and simulation workflow for the next steps in the workflow.
Muscle iterative refinement ¶
After you have setup and configured your muscles covered in this muscle setup workflow, you can follow this iterative refinement process to fine tune your muscles during simulation.
These iterative steps include:
-
Simulate - Execute the simulation using your current configuration.
-
For first tests, start with Substeps 40 at 24fps and Iterations at 10 in the Otis Solver node.
-
-
Observe - Visually inspect simulation results.
-
In Otis Configure Muscle and Tissue SOP node, locate the Visualizations tab and turn on Always Show Visualizations. This is helpful to troubleshoot specific attachments and constraints.
-
Check for muscles that aren’t deforming correctly, too stiff, or sagging.
-
In the Muscle Flex node, check that muscles are properly activating. These are shown in an orange/red color during simulation.
-
-
Tweak - Make focused adjustments based on obversations.
-
There are many adjustments that may need to be made which can’t be completely covered in this section. For starters, adjust the following:
-
Revise constraints in Muscle Constraints Properties Otis SOP node.
-
Adjust tension lines and activation settings in tensions lines and muscle flex system.
-
Tune stiffness and damping in Muscle Properties Otis node.
-
-
-
Repeat - Rerun the simulation and evaluate again.
-
Expect several cycles during this iteration loop to fine tune your character.
-
For best results, repeat this process on different animations to see how the muscles behave with various different motions.
-
See also |