Help guide

Physics Static Body node

Updated June 21, 2026

Physics Static Body node

Product media placeholder

Replace this area with a screenshot or short walkthrough video during the media sweep.

Immovable static collider — walls, floors, arc-shaped bowls, sensor trigger zones. No pose outputs (it never moves), only an `id: float` for joints + event listeners. The `arc` shape is parameterised as a circular segment of N edge-chain segments, used for the dental ball-drop cup brim. **F381 P2.2 — `shape.kind: 'fromGeometry'`** reads vertex data from a wired `glyphGeometry` / `shapeGeometry` / `softMesh` source via the `vertices` + `subpathStarts` + `ringSubpathCounts` typed input ports. One closed polyline body is created per OUTER ring (hole subpaths are skipped — balls land on top of an "o", not inside its counter). For multi-glyph text, this means N rigid colliders are created with `id` reporting the first one (sentinel; use `physicsStaticBodyEach` or `physicsBodyLookup` to enumerate). Pair with the SAME geometry source feeding a `softMesh` so visible mesh + collider stay aligned by construction.

Type physicsStaticBodyCategory solversContext sharedDynamic ports noCompound no

Inputs

PortTypeDescription
worldanyWire to the sibling `physicsWorld.world` output.
verticesfloat32bufferWire from `glyphGeometry.vertices` / `shapeGeometry.vertices` / `softMesh.vertices` when `shape.kind: 'fromGeometry'`. For static colliders that should track a stable rest pose, prefer wiring from `softMesh.restVertices`. Ignored for other shape kinds.
subpathStartsuint16bufferWire from the geometry source's `subpathStarts`. Ignored for other shape kinds.
ringSubpathCountsuint16bufferWire from the geometry source's `ringSubpathCounts`. Lets the body builder skip hole subpaths and emit one polyline per outer ring. Ignored for other shape kinds.

Outputs

PortTypeDescription
idfloatEngine handle. Wire to joint or collision-event nodes that filter by body.
centerXfloatFor `kind: arc`, the resolved center X in document px. Wire to `physicsBodyStagger.targetCenterX` to spawn dynamics centered on the cup mouth without hand-syncing two sets of viewport units.
topYfloatFor `kind: arc`, the Y of the upper opening edge in document px (the higher of the two arc endpoints in screen coords). Pair with `targetCenterX` for IK-style spawn-into-cup.
bottomYfloatFor `kind: arc`, the lowest point in document px (`cy + radius`). Useful for bottom-aligned spawning or measuring interior cup height.
mouthWidthfloatWidth of the shape's mouth/opening (chord between v0 and v(N-1) for open polylines, bbox width for closed shapes, chord between arc endpoints for `kind: arc`). Wire to `physicsBodyStagger.targetMouthWidth` + set spawnPattern: "fanFromMouth" to fan N balls evenly across the mouth without hand-tuning per-ball spacing.

Parameters

ParameterTypeDefaultDescription
shapephysicsShape{"kind":"box","width":100,"height":20}Static collider shape — pick the kind (circle, box, polygon, edge, arc, polyline, fromSelector) and fill in the per-kind parameters. **Recommended for art-aligned colliders: `From Selector`** — derives the polyline from a live SVG element, resize-safe, no magic numbers. **For arbitrary shapes: `Polyline`** — vertex chain, same authoring story as clipPath. Use `arc` only when an analytic circular arc is needed without a backing element.
xfloat0World-space X position of the body in px. CSS units like "50vw" / "100px" also accepted; the loader resolves to px at bind time. Static bodies do not move under simulation; this is the fixed pose.
yfloat0World-space Y position of the body in px. CSS units accepted ("12vh", "200px"); resolved at bind. Static bodies do not move under simulation.
rotationfloat0Body orientation in radians. Static bodies hold this rotation forever. Use π/4 ≈ 0.785 for 45°, π ≈ 3.14159 for 180°. step 0.01
restitutionfloat0.50 = no bounce (dynamic bodies stick to this surface on impact), 1 = perfectly elastic (energy preserved), > 1 = energy-amplifying. Combined with the dynamic body's restitution per the engine's blend mode. min 0; max 2; step 0.05
frictionfloat0.5Surface friction coefficient. 0 = ice (dynamic bodies slide forever), 1 = typical solid surface, > 1 = high friction. Combined with the dynamic body's friction. min 0; max 2; step 0.05
isSensorboolfalseWhen true, the collider generates collision events but does not push other bodies. Use for trigger zones — pair with `physicsCollisionPulse` (v2) to detect entry/exit.

Related nodes

Envelope

Use physicsStaticBody as the node type inside a graph node envelope. Add id, optional params, optional connections, and optional activeWhen based on the guide context.

Generated source

Registry faster-motion-docs/node-registry.jsonCategory page /help/faster-motion/faster-motion-node-category-solvers/

Was this guide helpful?

Sunny Arora

Written by

Sunny Arora

Get technical deep dives delivered to your inbox

Join creators and developers who get exclusive insights, tutorials, and behind-the-scenes content every week.

No spam. Unsubscribe anytime.

Continue Exploring

You might also enjoy