# Slime Soft Body (Three.js)

Open `index.html` via any static server (e.g. `python3 -m http.server`) — no build step. Three.js r160 is loaded from a pinned unpkg CDN via an import map.

## Controls
- **Click / tap the slime** – poke it (local inward impulse, it wobbles and settles).
- **Drag the slime** – grab and squish/stretch it; release to fling and watch it jiggle.
- **Drag the background** – orbit the camera; pinch / scroll to zoom.
- **Reset** – put the blob back at rest in the center.
- **Drop** – drop the blob from height to see it splat and rebound.

## Notes
- Soft body: per-vertex mass-spring shape matching around the centre of mass, with damping relative to bulk motion, floor collision/friction and a sideways bulge when squashed (volume-ish preservation). Fixed 120 Hz substeps.
- Look: `MeshPhysicalMaterial` transmission + attenuation, clearcoat highlights, sheen, plus a shader rim/wrap term for subsurface-like glow. Contact shadow is a cheap radial-gradient decal that tracks the footprint and fades with height.
- Mobile: lower mesh detail, capped pixel ratio, no MSAA, `touch-action:none` with pointer events.
