Give a mesh a Physics Body and it falls, bounces and rests on a static neighbour — in play mode, without a single keyframe. Grab it, throw it, or fire a collide sentence. Hang a Plane with Cloth and it drapes, collides with those bodies, and you can pull it. The Scene3D's Physics World sets the gravity everything inside it feels.
This is Lab-native (AABB / sphere rigid, Verlet cloth), not 2D Physics. Field deforms vertices on the GPU; it is not cloth.
01Quick tour
- Select a mesh that is a direct child of the Scene3D. + Add → Physics Body. The scene gets Earth gravity at the same time.
- Add a wide cube under it, Physics Body, set Body to Static — that's the floor.
- Press Play (or Simulate). The mesh drops, bounces and settles. Drag it — the camera does not orbit — and flick to throw.
Physics only runs in Play / Simulate. In Design, bodies stay where you put them.
02Physics Body
The section lives on a Mesh3D. Nested meshes (parent is not the Scene3D) are skipped.
| Body | Behaviour |
|---|---|
| Dynamic | Simulated — falls, bounces, gets pushed, can be grabbed |
| Static | Immovable ground or wall. Dynamic bodies always collide with it |
| Kinematic | Your keyframes and tweens move it; it pushes dynamic bodies but is never pushed |
| Row | What it does |
|---|---|
| Shape | Auto (a sphere mesh is a sphere, everything else a box), Box, Sphere |
| Bounce | 0–1, how much energy survives a hit. Default 0.2 |
| Friction | 0–1, surface grip. Default 0.35 |
| Gravity | Multiplier on the world's gravity. 1 is normal, 0 floats, −1 falls up |
| Mass | Impulse share. 1 is neutral. Throw velocity is divided by mass |
| Lock | Freeze X, Y or Z (Y is down in the Lab) |
| Bodies | Collide with other dynamic meshes (statics always collide) |
| Draggable | Grab in Play / Simulate. Default on. Does not orbit the camera |
| Throw | Keep pointer velocity on release. Drag Feel scales throw and follow lag |
If the body has no gravity to fall with, the section says so and points you to the scene's Physics World.
Sensors and rotate-on-impact are not in this slice. Only dynamic bodies can be grabbed. A mesh cannot be both a rigid body and cloth — adding one turns the other off.
03Play grab
Pointer down on a draggable mesh starts a grab (camera-facing plane through the mesh). Empty space still orbits. Simulate uses the same grab — not the 2D drag-transient, which would fling the mesh in world units.
04Sentences
collide fires every frame while two bodies touch; collideStart only on the first frame. $hit.other, $hit.nx, $hit.ny, $hit.nz, $hit.speed — Y is down, same as 2D (ny_lab = −ny of the three contact). Bounce away: =-$hit.nx * 4.
Physics actions (pctl) on a Mesh3D write the 3D body. vx / vy / vz are Lab axes (down is +Y); negative vy throws up, like 2D. 2D bodies ignore vz.
on ball collideStart -> pctl impulse @ball vx:0 vy:-4
05Cloth
Select a Plane that is a direct child of the Scene3D. + Add → Cloth. The scene gets Earth gravity if it had none. Play / Simulate drapes the fabric; Design stays put.
| Row | What it does |
|---|---|
| Pin | Top hangs from the upper edge (default), Corners pins the four corners, None lets it fall freely |
| Stiff | How strongly the fabric keeps its rest distances (0.1–1). Default 0.88 |
| Damp | Velocity bleed each step. 0 is lively, 0.5 is heavy. Default 0.04 |
| Gravity | Multiplier on the world's gravity. 1 is normal, 0 floats |
| Bodies | Collide with Physics Body meshes in this scene. Default on |
| Iters | Constraint iterations per step (1–16). More is tighter and slower. Default 8 |
Grab a free part of the fabric in Play — the camera does not orbit — and pull. Release keeps a little pointer velocity. Cloth collides with rigid bodies; it does not fire collide sentences of its own.
An upright plane hangs as a banner. Rotate X 90° to lay it flat and drape over a table. Sphere and cylinder cloth are later. Self-collision is not in this slice. Raise Geometry → Segments if the drape looks coarse (capped at 32).
06Physics World
Adding a Physics Body or Cloth to a mesh gives its Scene3D an Earth-gravity world automatically. To change it, select the Scene3D and open Physics World:
| Row | What it does |
|---|---|
| Gravity | Zero-G, Earth (9.8 world-units/s² downward), or Custom |
| g X · Y · Z | World units/s² — down is +Y |
Every dynamic body and cloth inside the scene multiplies this by its own Gravity row.
07Agent / NTX
p3w Stage gravityY:9.8
p3 floor enabled:1 bodyType:static
p3 ball enabled:1 bodyType:dynamic shape:sphere
on ball collideStart -> pctl impulse @ball vy:-4
c3 drape enabled:1 pin:top
phys is 2D pixel physics — never put it on a Mesh3D. c3 is Plane cloth; Field (f3) is not cloth.