THREE.JS / FOUNDATIONS 215

Solver settings are part of the scene.

Four identical Rapier worlds make integration parameters visible: the same box stack and high-speed projectile run with different solver iterations, CCD policy, and CCD substep budgets.

Loading Rapier Preparing raw World

Loading the official Rapier runtime and preparing four deterministic lanes...

physics
-
tick
-
selected
-
active
-
sleeping
-
passed wall
-
step ms
-
fps
-
Experiment controlssame initial state

Select a lane to inspect its world integration parameters and projectile result.

Raw Rapier contractunder the Three.js view
new RAPIER.World(gravity)one world per lane
world.integrationParameterssolver + CCD budget
RigidBodyDesc.setCcdEnabled()per-body tunneling policy
world.step()fixed 1 / 60 tick
body.isSleeping()island sleep accounting

The lanes intentionally share geometry, gravity, fixed timestep, initial transforms, and launch velocity. Only the labeled settings differ, so a visual result is evidence about this local runtime/configuration—not a universal benchmark.

Lane readoutnone

Rapier is loading. The table will show each lane's solver settings, sleeping bodies, and projectile outcome.

Based on the official Three.js RapierPhysics addon surface and Rapier's integration-parameter, rigid-body, sleeping, and CCD guides. The visual comparison is a local learning instrument, not a cross-device performance claim.

THREE.JS FOUNDATIONS LAB