zSolver

As the name implies, this is the node that performs the actual solving. Its default name is actually “zSolverShape” - this is to follow Maya convention. This is also the node that performs all of the OpenGL visualizations.

Attribute

Meaning

runupWeight

Apply the weight value to following attributes if they are checked:

  • Affect Solver Gravity

  • Affect Inertial Damping

  • Affect RestScale Envelope

  • Affect Pressure Envelope

  • Affect SurfaceTension Envelope

  • Affect Fiber Excitation

  • Affect RestShape Envelope

Users can key the preroll values in one place, instead of setting them separately in each node.

Both the weight and boolean attributes are keyable.

collisionDetection

Enables/disables collisions for all bodies in this solver.

Note: Even if enabled, individual bodies can choose not to participate in collisions.

collisionSubdivision

In addition to the mesh vertices, extra points are added on the edges of the mesh triangles for the purposes of collision detection and response. The distance between the additional collision points is controlled by collisionPointSpacing.

This attribute is not keyable.

collisionPointSpacing

When collisionSubdivision is turned on, this attribute controls the maximum distance (in meters) between any two collision points along a triangle edge.

This attribute is not keyable.

maxContactLength

Remove undesirable contacts during the simulation with specified value. The value must greater than or equal to zero. Default value is zero, which means all contacts will be kept.

This attribute is keyable.

solver

The solver computes body positions, velocities, and accelerations at each integrator step. The direct solver is selected by default. Alternatives are iterative solver and its GPU version appearing as GPU-Iterative on solver’s drop-down menu. GPU solver requires a Nvidia graphics card with equivalent or newer than Turing Architecture, and it outperforms CPU solvers on heavy and complex assets. Depending on the choice of solver, the runtime of the asset may vary significantly. The iterative solver is most likely to outperform the direct solver on assets where material properties are similar between all deformable objects (tissues, cloths, attachments, and collision response stiffnesses). All solvers should produce a correct result, the only observable difference between solvers is their time costs. A practical way to know which solver is faster for an asset is to try each one and compare their timings.

integrator

Selects the numerical integration scheme to be used by the solver.

  • BackwardEuler: A stable integrator that generates very little dynamics. This is the integrator used in versions prior to v1.5. It is the default integrator. Sometimes called BDF1.

  • BDF2: Second-order accurate integrator that gives good stability and much more dynamics than BackwardEuler. Use in any situation where you want good dynamics such as wave propagation, oscillation, bouncing, “jiggliness”, etc.

  • TR-BDF2: A hybrid scheme that combines an energy-preserving scheme (implicit Newmark, also called “trapezoid” method, TR) and BDF2. This integrator gives more even more dynamics than BDF2, for some small loss of stability.

  • QuasiStatic: With this integrator, bodies have no momentum and remain in a state of elastic equilibrium, as dictated by the attachments, collisions and gravity. Bodies will bend or stretch, but will have no dynamics. Useful in situations where dynamics is not desirable; for example, to generate blendshape targets.

More information is available in the section on Integrators.

maxNewtonIterations

At each timestep, the solver will adaptively execute up to this many internal Newton iterations to resolve the nonlinear force equilibrium. Increasing this usually improves accuracy and stability, at the cost of more computation. With only 1 Newton iteration, very stiff materials (except Corotational) resist rotating, and very strained materials (especially Corotational) can flicker and oscillate. We found ~10 iterations solves these problems. More “substeps” can also improve these effects.

solverToleranceFactor

The solver uses various criteria to automatically set a limit for solution precision (the solver’s tolerance) for each simulation asset. This can be manually adjusted by using the solver tolerance factor parameter. A solver tolerance factor that is greater than one reduces the solver precision and solve time. A solver tolerance factor less than one increases solver precision and solve time. In most cases leaving the solver tolerance factor at the default value of one will result in a stable simulation.

Increasing the solver tolerance factor allows the solver to do fewer Newton iterations in each timestep. Conversely, decreasing the solver tolerance factor may force the solver to do more Newton iterations in each timestep. Therefore when the solver tolerance factor is too large similar simulation artifacts will occur as if using too few Newton iterations. Using a small solver tolerance may help resolve some simulation artifacts for difficult to solve simulations, such as those with large scale differences between tissues and cloths.

substeps

How many internal timesteps are taken per frame. Effectively, this divides the simulation timestep by “substeps”. If this number is increased, it will generally increase simulation stability, at the cost of additional computation. Multiple substeps are needed if there is non-trivial motion within a frame, such as a bone quickly rotating.

Substeps cannot exceed the number of Maya “ticks” per frame (6000 per second).

N.B. Try increasing the value of this parameter, if the simulation is unstable.

framesPerSecond

How many simulation frames are intended per second. This parameter should typically be set to match the Maya’s frame rate, but could be adjusted independently for effect (like slow motion wave propagation).

stiffnessDamping

Controls damping. This damping tends to remove high-frequency motion, and as such usually improves stability. This is the recommended type of damping.

massDamping

Controls “under-water” damping. This damping removes even low-frequencies and rigid body motion. A high number will make the bodies appear to be under water. Often, this value can be left at 0.0, and the simulation relies on stiffnessDamping.

gravity {X, Y, Z}

Adjust gravity independently in X, Y and Z.

showBones

Shows the triangles on the bones used by the solver.

showTetMeshes

Shows the tet meshes used by the solver.

showAttachments

Shows attachments, using a variety of visualization modes.

showMaterials

Shows material properties.

showMuscleFibers

Shows muscle fiber fields.

showAxes

Shows solver coordinate axes. You can select the solver node by selecting the coordinate axes in the viewport.

maxVisualStretch

The maximum attachment stretch that is visualized, and has Maya length units. This value is mapped to the right side of the attachmentColorRamp, while 0 stretch is mapped to the left. As attachments are stretched through 0 -> maxVisualStretch, they will be colored according to the color ramp. Any attachment that stretches past maxVisualStretch will be colored as maximally stretched. If maxVisualStretch is set to 0, all attachments will be colored as permanently maximally stretched.

attachmentColorRamp

The colors defined on this ramp are used when visualizing attachments.

materialColorRamp

The colors defined on this ramp are used when visualizing materials.

muscleFiberColorRamp

The colors defined on this ramp are used when visualizing muscle fibers.

showCollisions

Shows embedded vertices that are in contact, using a variety of visualization modes.

collisionColorRamp

The colors defined on this ramp are used when visualizing collisions.

contactLineWidth

Adjust the line width of contact to make them visually noticable.