Gallop
A horse and rider built from an anatomical skeleton and a measured gallop, then baked so the whole animal costs one draw. Move the pointer and it pushes; hold and time slows; the field closes again when you ease off. Nothing here is motion capture.
- 2026
- Geometry
- Shader
- Pointer
In short
- Geometry
- 17,022 vertices, 17,960 triangles, 21,125 wireframe edges
- The rider
- Built from sections, not taken from a model. The pose is off a racing photograph
- The horse's surface
- A modified base mesh: rescaled, re-rigged and driven by a skeleton and gait built here
- Animation
- 20 frames, one stride, solved once when the model is built
- Stride
- 0.455 s as measured; plays at 0.62 s so the footfalls are readable
- Per frame on the processor
- Six sensor vertices. The other 17,016 are the GPU's problem
- Payload
- 443 KB, fetched once the page is idle and never on first load
- Where the gait comes from
- Published hoof accelerometer measurements, not motion capture
- What the tag reads
- Contact, angles and heights are solved from the model. Speed, stride and cadence are representative
- Source
- Not published. This is the one piece here whose method stays in house
- Needs
- WebGL2. On anything older the row shows its poster and says so
What is measured and what is not
The phase timing comes from Witte, Hirst and Wilson 2006. They put accelerometers on the hooves of elite Thoroughbreds; the column at about 13 m/s is the one used here. The body's vertical movement and the pitch of the trunk follow Pfau, Witte and Wilson 2006. The proportions were measured off a side-on racing photograph with the height at the withers taken as the unit.
The rider is held to a separate rule: a jockey's torso is isolated from the horse's vertical bounce (Pfau 2009), so the legs work as springs and the hands stay with the neck rather than riding the back up and down.
The readouts on the stage divide in two, and the division matters. Contact times, joint angles and heights are solved from the model as it runs, so they are as true as the model is. Speed, stride length and cadence are not: they are representative figures that drift inside the range a racehorse actually occupies, about 58 km/h at cruise and 67 at a sprint, with stride length rising faster than stride frequency the way it does in a real animal. They are there because a sensor tag would show them, not because anything measured them.
That is the whole claim: no horse was recorded for this and no telemetry arrives from anywhere. It is a gait reconstructed from published measurements, which is different from a captured gait, and the difference is worth keeping straight.
What it took
There is no bought animation in this and no 3D library under it. The skeleton was laid out joint by joint against anatomical measurements, the muscle shapes came from sections cut along each limb, and the gait was timed against the published data one footfall at a time. The rider was built the same way rather than dropped in. What arrives in the browser is the finished run, solved in advance so that the whole animal, mesh and wireframe and rider, costs a single draw.
Most of the work was in what got thrown away. The stride plays at 0.62 seconds rather than the 0.455 it was measured at, because a real gallop is quick enough that the footfalls blur and there is no point building a gait nobody can see. An earlier version that sprinted to 0.33 seconds looked absurd rather than fast. The rule that came out of it is that the fastest moment never beats a real gallop, and everything since has been held to it.
This is the one piece on the site with no source panel. Everything it claims is checkable against what is on the screen, and the numbers on this page are counted from the model itself, but the method stays where it was made.
Controls
Origin
The skeleton, the gait, the rider, the wireframe and the renderer are mine. The horse's surface began as "Horse basemesh" by sidahearne (sketchfab.com/sidahearne), licensed CC BY 4.0, and is a modified version of it: rescaled to measured proportions, rigged to my own skeleton and moved entirely by my own gait. The licence asks that the author is credited and that changes are declared, and both are here. Built first as the opening scene of a client site and rebuilt in this site's palette.