Skip to content
Voro
  1. Geometry
  2. Solvers

Rigid

Rigid simulates bodies that translate and rotate without deforming. Shell Sample handles sampled contacts and mechanisms; True Convex provides the OBB-SAT contact mode for box stacking. Body and constraint specifications let you author joints alongside the bodies.

Place Rigid in the Geometry view, under Solvers. Connect a small point set and choose Input POP (point bodies) as Body Source. Each point supplies a body location. Start with Boxes, Body Size at 0.06, four Substeps and ten Iterations. Space the input points far enough apart for the body size.

For a joint setup, use Body + Constraint Spec or an Example Preset such as Motor Linkage or Chain. The specification accepts bodies and ball, hinge, distance and weld constraints. Start with Shell Sample for this workflow. With no authored source, Procedural Pile Count controls the fallback pile.

The geometry input supplies point bodies or an active convex mesh, according to Body Source. Resources > Connections accepts sdf obstacles, points, velocity, contacts and a field for buoyancy.

Outputs include P, v, id, Cd and orient, plus xform transforms, contact data and a mesh output. Keep orientation when using body points downstream so the displayed bodies rotate. To try buoyancy, connect Ripple’s height field to Rigid’s field input and raise Buoyancy from its default 0.

  • Contact Model changes the contact solver. Shell-specific Solve Strategy and Chebyshev controls apply to Shell Sample; the Convex controls apply to True Convex.
  • Simulate pauses advancement and Reset restarts the bodies. Use Auto-Rebuild on Build Params or press Rebuild to apply pending changes to the body setup.
  • Substeps and Iterations control solve effort. Body Size, Density and Friction set body scale and contact behavior. The default floor is enabled at Y = -1.5.
  • Damping reduces motion. Max Velocity and Max Angular Vel cap it, while Sleep Threshold and Sleep Gate control when settled bodies sleep.
  • Contact Stiffness and the joint stiffness controls tune resistance to separation or penetration. In True Convex, Restitution controls bounce and Contact Skin adds a speculative contact margin.
  • Velocity Field Coupling and Buoyancy both start at 0. Set the relevant value after connecting the resource. Publish Contact Set controls outgoing contacts; Max Foreign Contacts caps incoming contact data.

Body Source, Contact Model and Body Shape are separate choices. Do not treat the active convex mesh option as arbitrary concave collision geometry.

Contact publication does not connect other solvers automatically. Add the intended Connections rows and check their Status. Start with a small body count before increasing Max Bodies or the procedural pile.

Inputs

  • geometry points
  • sdf sdf collider
  • points points
  • velocity velocity field
  • contacts contacts
  • field density field

Outputs

  • P points
  • v points
  • id points
  • Cd points
  • orient points
  • xform transforms
  • contact contacts
  • mesh mesh

Rigid

Auto-Rebuild on Build Params (Autorebuild) Toggle op('rigid').par.Autorebuild
Default:
On
Options:
Off, On
Rebuild (Rebuildnow) Pulse op('rigid').par.Rebuildnow
Default:
None
Simulate (Simulate) Toggle op('rigid').par.Simulate
Default:
On
Options:
Off, On
Reset (Resetsolver) Pulse op('rigid').par.Resetsolver
Default:
None

Solver

Contact Model (Contactmodel) Menu op('rigid').par.Contactmodel
Default:
0
Options:
Shell Sample (AVBD: granular/mechanisms, full joints), True Convex (OBB-SAT: clean box stacking)
Dt (Dt) Float op('rigid').par.Dt
Default:
0.0166667
Range:
0.0001 to 0.5
Substeps (Substeps) Int op('rigid').par.Substeps
Default:
4
Range:
1 to 16
Iterations (Iterations) Int op('rigid').par.Iterations
Default:
10
Range:
1 to 64
Solve Strategy (shell) (Solvestrategy) Menu op('rigid').par.Solvestrategy
Default:
0
Options:
Colored Gauss-Seidel, Chebyshev-Jacobi (scale)
Chebyshev Rho (shell) (Chebrho) Float op('rigid').par.Chebrho
Default:
0.95
Range:
0 to 0.999

Author

Authored Scene (Hdrauthor) Str op('rigid').par.Hdrauthor

Read only.

Default:
"" (Empty String)
Body Source (Source) Menu op('rigid').par.Source
Default:
0
Options:
Input POP (point bodies), Input POP (active convex mesh), Authored Spec fallback
Example Preset (Preset) Menu op('rigid').par.Preset
Default:
0
Options:
Custom / input-authored, Motor Linkage, Chain, Ragdoll, Glue Wall (breakable)
Body + Constraint Spec (Spec) Str op('rigid').par.Spec
Default:
"" (Empty String)
Max Bodies (pool) (Maxbodies) Int op('rigid').par.Maxbodies
Default:
16384
Range:
64 to 262144
Procedural Pile Count (no source) (Procbodies) Int op('rigid').par.Procbodies
Default:
4096
Range:
1 to 2000000

Rules

Constraint Rules (Hdrrules) Str op('rigid').par.Hdrrules

Read only.

Default:
"" (Empty String)
Rigid Rule Stack (Rigidrules) Str op('rigid').par.Rigidrules
Default:
"" (Empty String)

Bodies

Body Material (input mode / spec default) (Hdrbodies) Str op('rigid').par.Hdrbodies

Read only.

Default:
"" (Empty String)
Body Shape (Bodyshape) Menu op('rigid').par.Bodyshape
Default:
0
Options:
Boxes, Spheres, Capsules, Convex Hulls
Body Size (half-extent / radius) (Bodysize) Float op('rigid').par.Bodysize
Default:
0.06
Range:
0.005 to 2
Auto-Space Bodies (no spawn overlap) (Autospace) Toggle op('rigid').par.Autospace
Default:
On
Options:
Off, On
Active Mesh Body (Hdractivemesh) Str op('rigid').par.Hdractivemesh

Read only.

Default:
"" (Empty String)
Surface Velocity Scale (Meshvelocityscale) Float op('rigid').par.Meshvelocityscale
Default:
1
Range:
0 to 10
Max Surface Velocity (Meshmaxsurfacevelocity) Float op('rigid').par.Meshmaxsurfacevelocity
Default:
20
Range:
0 to 500
Density (kg/m3) (Density) Float op('rigid').par.Density
Default:
700
Range:
1 to 100000
Friction (Friction) Float op('rigid').par.Friction
Default:
0.5
Range:
0 to 1
Contact Sample Lattice (Samplelattice) Int op('rigid').par.Samplelattice
Default:
2
Range:
2 to 5

Forces

Forces / World (Hdrforces) Str op('rigid').par.Hdrforces

Read only.

Default:
"" (Empty String)
Gravity X (Gravityx) Float op('rigid').par.Gravityx
Default:
0
Range:
-30 to 30
Gravity Y (Gravityy) Float op('rigid').par.Gravityy
Default:
-9.81
Range:
-30 to 30
Gravity Z (Gravityz) Float op('rigid').par.Gravityz
Default:
0
Range:
-30 to 30
Damping (Damping) Float op('rigid').par.Damping
Default:
0.999
Range:
0 to 1
Velocity Field Coupling (vel:) (Windcoupling) Float op('rigid').par.Windcoupling
Default:
0
Range:
0 to 1000
Floor Enabled (Floorenabled) Toggle op('rigid').par.Floorenabled
Default:
On
Options:
Off, On
Floor Y (Floory) Float op('rigid').par.Floory
Default:
-1.5
Range:
-3 to 1
Kinematic Ingest (points:) (Hdrkin) Str op('rigid').par.Hdrkin

Read only.

Default:
"" (Empty String)
Kinematic Capacity (Kinematiccap) Int op('rigid').par.Kinematiccap
Default:
0
Range:
0 to 262144
Kinematic Radius (Kinematicradius) Float op('rigid').par.Kinematicradius
Default:
0.05
Range:
0.005 to 0.5

Coupling

Coupling (Hdrcouple) Str op('rigid').par.Hdrcouple

Read only.

Default:
"" (Empty String)
Publish Contact Set (Publishcontacts) Toggle op('rigid').par.Publishcontacts
Default:
On
Options:
Off, On
Couple Weight (Coupleweight) Float op('rigid').par.Coupleweight
Default:
1
Range:
0 to 2
Max Foreign Contacts (cap) (Maxforeign) Int op('rigid').par.Maxforeign
Default:
65536
Range:
0 to 4000000
Buoyancy (field:) (Buoyancy) Float op('rigid').par.Buoyancy
Default:
0
Range:
0 to 100
Water Level Y (Waterlevel) Float op('rigid').par.Waterlevel
Default:
0
Range:
-100 to 100
Water Height Scale (Waterheightscale) Float op('rigid').par.Waterheightscale
Default:
1
Range:
0 to 100
Water Drag (Waterdrag) Float op('rigid').par.Waterdrag
Default:
2
Range:
0 to 50

Contacts

Hard Contacts (augmented Lagrangian) (Hdrhard) Str op('rigid').par.Hdrhard

Read only.

Default:
"" (Empty String)
Contact Stiffness (k0) (Contactstiffness) Float op('rigid').par.Contactstiffness
Default:
100000
Range:
1000 to 10000000
Max Velocity (Maxvelocity) Float op('rigid').par.Maxvelocity
Default:
12
Range:
0.1 to 100
Max Angular Vel (rad/s) (Maxangular) Float op('rigid').par.Maxangular
Default:
50
Range:
0.1 to 500
Contact Warmstart (Warmstart) Toggle op('rigid').par.Warmstart
Default:
On
Options:
Off, On
Warmstart Lambda Carry (Warmstartlambda) Float op('rigid').par.Warmstartlambda
Default:
0.25
Range:
0 to 1
Sleep (Hdrsleep) Str op('rigid').par.Hdrsleep

Read only.

Default:
"" (Empty String)
Sleep Threshold (vel) (Sleepthreshold) Float op('rigid').par.Sleepthreshold
Default:
0.06
Range:
0 to 2
Sleep Gate (substeps) (Sleepsubsteps) Int op('rigid').par.Sleepsubsteps
Default:
8
Range:
1 to 255
Joints (Hdrjoint) Str op('rigid').par.Hdrjoint

Read only.

Default:
"" (Empty String)
Joint Stiffness (k0 seed) (Jointstiffness) Float op('rigid').par.Jointstiffness
Default:
1000000
Range:
1000 to 10000000
Joint K Max (ramp cap) (Jointkmax) Float op('rigid').par.Jointkmax
Default:
100000000
Range:
1000 to 100000000

Convex

True-Convex Contact (sequential impulse) (Hdrconvex) Str op('rigid').par.Hdrconvex

Read only.

Default:
"" (Empty String)
Restitution (bounce) (Restitution) Float op('rigid').par.Restitution
Default:
0
Range:
0 to 1
Relaxation (SOR) (Relaxation) Float op('rigid').par.Relaxation
Default:
0.2
Range:
0.05 to 1
Baumgarte (penetration bias) (Baumgarte) Float op('rigid').par.Baumgarte
Default:
0.2
Range:
0 to 1
Penetration Slop (Penetrationslop) Float op('rigid').par.Penetrationslop
Default:
0.0015
Range:
0 to 1
Contact Skin (speculative) (Skin) Float op('rigid').par.Skin
Default:
0.01
Range:
0 to 10
Max Depenetration Vel (Maxdepenvel) Float op('rigid').par.Maxdepenvel
Default:
3
Range:
0 to 1000
SDF Speculative Band (anti-tunnel) (Sdfspecband) Float op('rigid').par.Sdfspecband
Default:
0.08
Range:
0 to 2
True-Convex Joints (Hdrcvjoint) Str op('rigid').par.Hdrcvjoint

Read only.

Default:
"" (Empty String)
Joint Iterations (Jointiterations) Int op('rigid').par.Jointiterations
Default:
8
Range:
1 to 32
Joint Baumgarte (Jointbaumgarte) Float op('rigid').par.Jointbaumgarte
Default:
0.2
Range:
0 to 1
Joint Max Correction Vel (Jointmaxcorr) Float op('rigid').par.Jointmaxcorr
Default:
2
Range:
0.01 to 1000

Color

Color Saturation (Colorsat) Float op('rigid').par.Colorsat
Default:
0.65
Range:
0 to 1
Color Value (base) (Colorval) Float op('rigid').par.Colorval
Default:
0.85
Range:
0 to 1
Color Speed Brightness (Colorspeed) Float op('rigid').par.Colorspeed
Default:
0
Range:
0 to 1
Color Speed Normalize (Colorspeedmax) Float op('rigid').par.Colorspeedmax
Default:
8
Range:
0.01 to 40

Outputs

Bodies Output Resource (Drivername) Str op('rigid').par.Drivername
Default:
rigid_drivers