.. _sec-zSolver:
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 |
| | |
+==========================+================================================================================+
| **collisionDetection** | Enables/disables collisions for this solver. Note: Each body can additionally |
| | choose not to participate in collisions. |
+--------------------------+--------------------------------------------------------------------------------+
| **collisionPointSpacing**| In addition to the mesh vertices, extra points are added to the surface |
| | of the mesh for the purposes of collision detection and response. |
| | This controls their spacing by specifying the maximum distance (in meters) |
| | between collision points. |
+--------------------------+--------------------------------------------------------------------------------+
| **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 :ref:`sec-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. |
+--------------------------+--------------------------------------------------------------------------------+
| **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. |
+--------------------------+--------------------------------------------------------------------------------+
| **showCollisions** | Shows embedded vertices that are in contact, 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. |
+--------------------------+--------------------------------------------------------------------------------+
| **attachmentColorRamp** | The colors defined on this ramp are used when visualizing attachments. |
+--------------------------+--------------------------------------------------------------------------------+
| **collisionColorRamp** | The colors defined on this ramp are used when visualizing collisions. |
+--------------------------+--------------------------------------------------------------------------------+
| **materialColorRamp** | The colors defined on this ramp are used when visualizing materials. |
+--------------------------+--------------------------------------------------------------------------------+