Houdini 21.0 Nodes Geometry nodes

Vellum Configure Muscles geometry node

Configures muscle geometry attributes and constraints for Vellum simulations.

On this page
Since 21.0

This node separates out the configuration aspect of the Muscle Solver Vellum SOP so that it can be combined with other Vellum configurations and run in a regular Vellum Solver SOP.

Note

For full parity with the Muscle Solver Vellum SOP, dive inside your Vellum Solver SOP. Create a Muscle Upate Vellum DOP and connect the output to the force_output null.

This node does the following:

Parameters

Delete Unused Muscle Attributes

Delete all muscle attributes no longer needed once they have been used to create the constraints.

Simulation

Reference Frame

Used to initialize tpose if it doesn’t exist. Should be equivalent to the starting frame of your Vellum Solver to ensure constraints are initialized correctly.

Solver

Precision

Changes the precision and amount of memory used to store the attributes on the Muscle Solver Vellum SOP node.

Unchanged

Use the storage type determined by the inputs.

32-bit

Sets the storage type for the muscle attributes to 32-bit integer (4 bytes) storage.

64-bit

Sets the storage type for the muscle attributes to 64-bit integer (8 bytes) storage.

Note

The precision setting can remain at 32-bit for most simulations. It’s only necessary to increase to 64-bit precision when characters are positioned approximately 1000 meters or more from the origin.

Subsample Bone Animation

When on, the input bones can have continuous intra-frame positions interpolated during the solve, i.e. bone positions at frame 5.0, 5.1, 5.2, etc. When off, Bone motion will only evaluate at whole numbered integer frame positions.

  • If bone animation is being read from a file cache, only discrete cached geometries are read from disk. This option will force the solver to interpolate between the discrete cached geometries using linear interpolation.

The parameter’s behavior depends on your input format

  • Alembic files: Automatically reads subframes

  • External time blend: Provides additional subsampling control

Vellum Time Scale

Specifies a scale multiplier for the effective time of the Vellum solve. You can use this value to create bullet time-like effects where the physics of the Vellum solver runs at a different rate than the Houdini playbar. A value of 2 will cause the muscles to fall twice as fast, and a value of 0.1 will slow the muscles down to a tenth of their speed.

This parameter defaults to 1.0 and affects how your simulation behaves. Setting values below 1.0 creates slow-motion effects, while values above 1.0 enhance high-speed movement. Very high values around 500 are typically reserved for machine learning and skinning applications where secondary motion is not desired.

Note

Although increasing timescale can improve how muscles follow bone animation, it’s recommended to adjust damping parameters instead. This approach provides more physically accurate results while maintaining natural muscle behavior.

Constraints

These parameters turn on and off the various muscle constraints. These parameters are also useful when troubleshooting your muscle simulation’s behavior.

Muscle Ends

Determines the type of target the Muscle Ends constraint will constrain the muscle ends to.

Disable

The Muscle Ends constraint is disabled for the muscles simulation.

Constrain to Nearest Bone

Constrains the muscle ends to the nearest bone. This mode is proximity based.

Constrain to Target Animation

Constrains the muscle ends to the target animation (input bone animation). This mode makes the muscle ends try to follow the movements from the Muscle Flex SOP node’s proxy animation.

Enable Muscle to Bone

When on, the Muscle to Bone constraint is enabled for the muscles simulation.

Enable Muscle to Muscle

When on, the Muscle to Muscle constraint is enabled for the muscles simulation.

Enable Velocity Blending

When on, the Velocity Blend constraint is enabled for the muscles simulation.

Rest Position

These attributes tell the solver which attribute to use as the rest position when establishing constraints. Typically, a tpose attribute exists both on the simulation geometry and on the second input geometry.

Muscle T-Pose Attribute

Specifies the attribute to use as the rest position or tpose. It can be found on the simulation geometry (Input 1).

Bone T-Pose Attribute

Specifies the attribute to use as the rest position or tpose. It can be found on the second input geometry (Input 2).

Activation Attributes

These parameters specify which attributes animate (trigger) the contraction, bulge, and shape muscle actions.

When a muscle flexes, three things occur:

1. The contraction pulls the muscle along its fiber direction in towards itself to produce a muscle squeeze.

2. Since the muscle is solid (made up of tetrahedra), it then bulges out along the sides while trying to preserve volume.

3. If you want the muscle to have some details when it contracts that it does not have when it is relaxed, then you can be explicit about the shape target you want the muscle to hit when flexed. For example, like showing grooves or indentations when contracted.

If you want to use different attributes to drive the muscle actions, then you can use these parameters to specify the new attributes. For example, if you replaced the attribute for Bulge, then the muscles solver would look for that new attribute to animate the muscle’s bulge action. By changing these attributes, you can affect shape, bulge response (volume boost), and fiber contraction independently of each other.

Contraction

Specifies the attribute that drives muscle contraction. By default, the attribute is muscletension. You can use the Muscle Flex SOP node to override any Muscle Tension Line-driven muscletension values over time.

This parameter connects to the fiber strength settings and determines muscle deformation along the fiber direction vectors. The contraction behavior responds to both automated tension line calculations and manual animation through the Muscle Flex SOP node.

Bulge

Specifies the attribute that drives muscle bulge. By default, the attribute is muscletension. If you specify a custom Bulge attribute, then you can use a Muscle Flex SOP node to animate the specified attribute and drive the muscles' fibervolumescale (0 = no Fiber Volume Scale, 1 = 100% the Fiber Volume Scale parameter’s current value) values over time.

Shape

Specifies the attribute that drives the muscles' shape target. By default, this attribute is muscletension. If you specify a custom Shape attribute, then you can use a Muscle Flex SOP node to animate the specified attribute and drive the muscles' targetshape (0 = 100% tpose, 1 = 100% targetshape) values over time.

Forces

Gravity

Specifies the uniform gravity force to apply to the muscles.

Drag

Specifies the amount the points are dragged by the wind force.

Velocity Damping

Determines whether or not the velocity of the moving bones (the animated bone surfaces on Input 2) influences the muscles. Damping is a subtractive process. So a higher Velocity Damping values will reduce the velocity that is picked up by the muscles, and lower values will increase amount of velocity (energy) that is transferred.

Note

Velocity for your muscles is controlled by the Muscles to Bone constraint Velocity Blend parameter on the Muscle Constraint Properties Vellum SOP node.

Simulation Cache

The simulation cache provides a visual indicator of cache usage through a progress bar. You can monitor this indicator to see how much of your simulation remains in memory. The Cache Memory parameter can be adjusted based on your frame range requirements and available system resources. For longer simulations, you may need to balance cache size against system performance.

Cache Simulation

When on, the muscle simulation is cached to memory.

Allow Caching To Disk

When on, the muscle simulation is cached to disk.

Cache Memory (MB)

Sets the maximum size of the memory cache.

Collisions

These parameters determine how collisions are handled by the solver. Collision handling can be an expensive part of the simulation because the solver evaluates all potential muscle and bone surface intersections. To optimize collision performance, you should focus on minimizing the point count in your input bone geometry. The solver provides polish passes for final collision resolution, which operate more efficiently by only processing detected intersection points rather than checking all possible collision pairs.

Self Collisions

When on, enables self-collisions for the muscle geometry. With self-collisions, a muscle can fold over on itself with no interpenetration. For example, like a tongue curling.

Ignore Collisions with Muscle Interior Points

When on, only the exterior points detect collisions. When off, all muscle points will detect collision. An example to turn this on is when a FrankenMuscle intentionally envelops a bone.

Bone Collisions

When on, enables collisions between muscles solids and bone surfaces.

Bone Collision Radius

On every point on the muscle geometry, this value specifies at what world space unit distance there exists a radius bubble (like a force field) around the bones against which the muscles will collide.

Tip

Keep the Bone Collision Radius parameter as small as possible while still maintaining proper surface separation. Larger radii increase computation time without necessarily improving constraint.

Note

Collision radius per muscle is controlled by the Collision Scale parameter on the Muscle Constraint Properties Vellum SOP node.

Guides

These parameters visualize a selection of muscle physical properties, forces, and constraints in the Muscles Solver Vellum SOP viewport state. The guides provide visual feedback for constraint relationships and physical properties during setup and troubleshooting but it affects performance. During simulation calculation, these guides should be off to ensure optimal solving speed. Only turn on guides when analyzing specific constraint behaviors or resolving deformation issues.

Warning

Turning on the guides can get very expensive. For example, visualizing the Attachment Constraints significantly slows down the solver. Use these guides sparingly.

Muscle Coloring

Determines which muscle physical properties, forces, and constraints are visualized in the viewport state.

Off

No visualizations appear in the viewport state.

Muscle Ends

Visualizes the areas of the muscle End Regions on the muscles as colorful heat maps.

Muscle to Bone

Visualizes the areas of the muscles constrained by the Muscle to Bone constraints as colorful heat maps.

Muscle Tension

Visualizes the amount of muscle tension that is being used by individual muscles frame-by-frame over the duration of the bone animation.

Tendon Mask

Visualizes the Tendon Mask Radius areas of the muscles as white areas on the red muscle.

Fiber Direction

When on, the fiber direction vector lines appear on the muscles in the viewport state.

Display Bones

When on, the animated bone surfaces appear as guide geometry in the viewport state.

Bone Color

Sets the color of the animated bone surface guide geometry in the viewport state.

Attachment Constraints

Enable Visualizers

When on, enabled attachment constraints are visualized in the viewport state.

Point Radius

Controls the size of the point-based visualization spheres like those for the Muscle Ends or the Collision Radius.

Muscle To Muscle

When on, visualizes the Muscle to Muscle constraint attachments as connection lines between the muscles.

Muscle To Muscle Color

Specifies the color of the Muscle to Muscle constraint connection lines.

Muscle Ends

When on, visualizes the points on the muscles' surfaces that that the Muscle Ends constraint affects as small spheres.

Muscle Ends Color

Specifies the color of the Muscle Ends constraint point spheres.

Muscle To Bone Color

Specifies the color of the Muscle to Bone constraint connection lines.

Muscle Glue

When on, visualizes the Muscle Glue constraint attachments as connection lines between the muscles.

Muscle Glue Color

Specifies the color of the Muscle Glue constraint connection lines.

Inputs

Input 1

Muscles. The tetrahedral meshes with muscle muscles_ids, properties, constraints, fiber vectors, autoflex_ids, and muscletension.

Input 2

Constraints. Any existing vellum constraints from other vellum configure nodes can be passed along to the vellum solver through here.

Input 3

Collision Geometry. Any collision geometry other than bones can be passed along to the vellum solver through here.

Input 4

Bones. The animated polygonal bone surfaces.

Input 5

Activation Attribute Reference. The optional flexing reference primitives.

For example, you can copy the Muscle Flex SOP node in this solver’s network and use it to animate a shape or bulge attribute instead of using muscletension.

Outputs

Output 1

Vellum Geometry. The muscle geometry prepared for the Vellum Solver.

Output 2

Vellum Constraints Geometry. All the constraints created by this node as well as those passed in via the second input.

Output 3

Collision Geometry. The Bone geometry from Input 4, as well as any other external colliders passed in via the third input.

See also

Geometry nodes