Three.js draws; a physics engine decides where things go. Two parallel worlds — a render world (meshes) and a physics world (rigid bodies) — kept in sync each frame. Click the floor to drop a body and watch them stack and collide.
Each frame: world.step(1/60, dt) advances the simulation with a fixed timestep, then every mesh copies its body's position and quaternion. The render and physics worlds never share objects — only numbers.