A gemstone feels convincing when it slides briefly, turns through contact, loses energy, and becomes quiet. Endless gliding, sideways jumps, or a stack that keeps trembling breaks both the visual illusion and the ASMR soundscape.
Natural rest is not a forced zero velocity. Translation, rotation, friction, restitution, damping, contact stabilization, and sleeping must each solve a different part of the motion.
Read translation and rotation separately
Linear velocity moves the center; angular velocity turns the body. A round gem that translates without rotation looks like it is sliding, while rotation without travel looks like a spinning top.
Faceted shapes change their support radius as faces and ridges touch the floor. Their collision shape, center of mass, scale, and bounded mass should preserve that rhythm without creating endless rocking.
- Linear motion
- Angular motion
- Contact shape
- Mass and inertia
Friction, restitution, and damping are not substitutes
Friction resists sliding at contact. Restitution controls bounce, not the brightness of the sound. Damping reduces velocity over time and is best used to trim a long tail rather than imitate all surface contact.
Too much linear damping feels viscous; too much angular damping kills rotation while travel continues. Start low and let shape and friction carry the visible contact.
Good rolling does not mean endless rolling
A slow release should settle close to its location, while a fast horizontal throw should preserve limited travel and spin. Average recent timestamped samples, reject slow noise, clamp fast motion, and remove false upward velocity near the floor.
Correct deep overlap before release so the solver does not eject the body sideways. Transfer angular velocity only when the user actually changed orientation.
- Quiet placement
- Bounded horizontal throw
- No false lift
- Intentional spin
Stable stacking is contact becoming quiet
Spawn gems at separated safe points, limit mass ratios, use restrained restitution, and match colliders to visible bounds before increasing solver cost.
Rapier can put sufficiently still bodies to sleep and wake them after interaction. The selected body should wake immediately; the finished stack should stop consuming simulation and sound events.
Audio makes the resting threshold stricter
Tiny contacts can trigger many collision callbacks. Intensity thresholds, short cooldowns, and a voice limit prevent invisible jitter from becoming a mechanical ticking cloud.
Physical bounce and sonic brightness are separate controls. As motion settles, event rate and loudness should fall together so the screen and ears agree.
Observe natural rest in the Playground
Place one gem slowly, then throw it horizontally. Add five, then twenty, and check for stable stacking, predictable waking, input latency, and quiet audio after rest.
This is a design observation, not a measurement of a mineral’s real-world material constants. The goal is a predictable, comfortable browser interaction.