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. |
quasiStatic | When enabled, bodies have no momentum and remain in a state of internal equilibrium, as dictated by the attachments, collisions and gravity. Bodies will bend or stretch, but will not demonstrate dynamic effects such as wave propagation, oscillation, bouncing etc. Quasi-static mode is useful for situations where dynamics is not desirable, for example, using the quasi static simulation to generate blendshape targets. |
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. |