Houdini 20.5 Nodes Geometry nodes

Muscle Solver Vellum geometry node

Computes the dynamics simulation for the muscle pass using Vellum.

On this page
Since 19.0

This node does the following:

Parameters

Simulation

Reset Simulation

Clears the entire muscle simulation cache from memory.

Start Frame

Sets the frame on the Houdini playbar that the muscle simulation should begin at.

Integration

First Order

Determines how points are integrated forward by their velocities during the simulation when curved motions (like swinging pendulums) are mispredicted and damped by the constraint projections.

Second Order

Use first order prediction for integrating points. First order prediction avoids excessive bouncing. If the solver detects collisions during the simulation, then it will fall back to using first order prediction.

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.

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.

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.

Vellum Substeps

Specifies the number of substeps each frame of the simulation is divided into. For fast moving collisions or sudden forces, you should use additional substeps.

Tip

If your muscles are too stretchy, then try raising the substeps to see if that helps.

Vellum Collision Passes

Specifies the number of collision passes to perform for the simulation. These passes are interleaved between the constraint iterations. Since collisions are expensive, we recommend that you use these passes sparingly.

A Vellum Collision Passes value of 10 works in most situations, but we recommend that you use substeps instead. Substeps are a better solution for increasing quality.

Constraint Iterations

Specifies the number of passes that are taken by the constraint enforcement operations within each substep. Stiff constraints may require a greater number of iterations to converge.

Constraint iterations use a Gauss-Seidel approach that is fast to converge. However, if it doesn’t fully converge due to too high stiffness or impossible configurations, it will leave the error as bad looking triangles.

Smoothing Iterations

Specifies the number of passes that are taken by the smoothing operations within each substep.

Smoothing iterations use a Jacobi approach that is slower to converge but leaves error spread out in a more attractive fashion. The default Smoothing Iterations value of 10 passes helps smooth out error, but you might need to increase it if the Constraint Iterations value is very high.

Post Collision Passes

Specifies the number of final-round collision detection passes that are performed.

Polish Passes

When on, specifies the number of additional collider-pair passes to run. In a collision pass, any colliding pair may not be fully resolved. These passes will run until all the unresolved colliding pairs are resolved. This operation is very inexpensive since these passes are only performed on active colliders and no new collision searches are done.

Constraints

These parameters enable and disable the various muscle constraints. These parameters are also very 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.

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

Cache Simulation

When on, the muscle simulation is cached to memory.

Allow Caching To Disk

When on, the skin 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.

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.

Muscle to Muscle Collisions

When on, enables collisions between muscle solids.

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

We recommend that you keep the Bone Collision Radius value small.

Note

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

Enable Ground Plane

When on, creates a collision ground plane. This is useful when you have a creature with a big floppy tail hitting the floor. If a flat plane is not sufficient, you can use the External Collider parameters to introduce an external collider object for the muscles.

Ground Position

Specifies the XYZ world position of the collision ground plane and allows you to offset it.

Multi-Pass

Enable Multi-Pass

When on, these options allow a substep to be repeated until certain conditions are met. The current conditions are designed to fix issues that are caused by disabled points causing geometry to be caught and causing the non-disabled points to generate stretching. Since collisions always pre-empt constraints, the result is skin stretching. Points adjacent to auto-disabled points will also be disabled if too much stretching is detected. The solve step will then be repeated in the hopes that this frees up the geometry.

Maximum Passes

Specifies the maximum number of times to repeat the substep. If no new points need to be disabled, the process will stop immediately.

Disable Stretch Ratio

The amount of stretch at the end of a solve step that will trigger points to be eligible for disabling. This is to detect when failed collisions are pulling the muscles apart. By failing additional points, the muscles can usually be released and this often results in better results than continuing to stretch.

External Collider

These parameters determine how collisions with external colliders are handled by the solver.

Use External Collider

When on, you can use external collision objects with the muscles.

Collider

Specifies the network path to the external collision objects.

Primitive Group

Specifies the geometry group (or groups) that contains the collider primitives. Lets you use a subset of geometry as colliders.

Use Deforming Geometry

When on, the external collision objects are evaluated at every frame.

Collision Detection

Determines how collision detection is handled by the solver.

Surface-based collisions are the most accurate option. They give you continuous collision detection. This means that the solver examines the trajectory of vertices between frames to see if at any time in between these frames objects intersect. This helps to ensure that collisions between fast moving objects are processed by the solver.

Surface-based collisions is the best choice for geometry that deforms over time.

Use Solver Default

Use the default point to primitive Vellum solver collision detection method.

Use Volume Collisions

Collision detection occurs between primitive vertices and signed distance fields (SDFs).

Use Surface Collisions

Collision detection occurs against the boundary surfaces of tetrahedral meshes.

Collision Radius

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

Guides

These parameters visualize a selection of muscle physical properties, forces, and constraints in the Muscles Solver Vellum SOP viewport state.

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

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

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

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.

Collisions

Collision Geometry

Visualizes the external colliders in the viewport.

Collision Geometry Color

Specifies the color of the external collider visualizations.

Collision Radius

Visualizes the collision radius regions around the muscles as a series of spheres around the points on the muscles' surfaces.

Disabled Collisions

Visualizes all the disabled external colliders.

Inputs

Input 1

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

Input 2

Bones. The animated polygonal bone surfaces.

Input 3

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

Solved Muscles. The muscle simulation point transform data.

See also

Geometry nodes