# Form — A study in motion

Open **index.html** in a modern desktop or mobile browser. No build or installation is needed. An internet connection loads Three.js **0.170.0** and its matching addons from jsDelivr; optional Google Fonts have system fallbacks.

If your browser restricts local modules, serve this directory with `python3 -m http.server 8000`, then open **http://localhost:8000**.

| Control | Action |
| --- | --- |
| Walk / Run / Jump, or **1 / 2 / 3** | Switch motion cycles |
| Play button or **Space** | Pause / resume |
| **0.5× / 1× / 1.5×** | Change playback tempo |
| Skeleton button or **S** | Show bones and joints through the body |
| Grid button or **G** | Toggle the ground grid |
| Reset camera button or **R** | Reset the camera |
| Mouse drag / one-finger drag | Orbit the character |
| Scroll / two-finger pinch | Zoom |
| **?** or the info button | Show controls |

Walk and run blend over 0.65 seconds. Jump first settles both feet, then repeats a crouch, takeoff, ballistic flight, soft landing, and recovery. Switching out of a jump waits for a stable landing. Pause still allows camera movement; reduced-motion preferences start paused and disable camera inertia.

The hierarchical bone rig uses fixed limb lengths, single-axis knees and elbows, anatomical joint limits, and two-bone leg IK. Grounded feet retain world-space anchors while the character and following camera advance across the stationary grid. Shoulder and hip counter-rotation, opposing arm swings, and pelvis movement provide the gait's weight shift.

Rendering targets 60 fps with shared geometry, a single shadow map, capped pixel density, and adaptive resolution. Paused scenes render on demand. Motion is integrated in steps of at most 1/120 second. Actual frame rate depends on the device and browser; the footer displays the measured rate.
