Live product · Anatomy
Exercise Anatomy
Scrub through a squat, a pull-up, a handstand, and watch each of 50 muscles colour as it works. Click one to isolate it.
What's different
Vs. the muscle charts
- ✓Muscle-activation apps colour a drawing per exercise from a table. Here one rigged figure moves through the exercise and every muscle is coloured frame by frame — a lunge colours the front leg and the back leg differently, a side plank the lower side, and a selected muscle stays visible from every angle through the others.
- ✓It shows lengthening as well as work. A muscle working while it lengthens — the glutes lowering into a squat — reads purple; one held on stretch, the lats at the bottom of a hang, reads teal.
- ✓Every curve declares its provenance, and the panel never prints a number it can’t back: qualitative by role, estimated by static optimisation on a published musculoskeletal model, or measured EMG with the conditions attached. None are measured yet, and the page says so.
The idea
Which muscles work, not which an exercise “targets”
I wanted to see which muscles work through a movement, not a chart of which muscles an exercise targets. That meant a figure that actually does the exercise, a rig underneath it, and a colour per muscle per frame — and a rule about what a colour is allowed to claim, because it would be trivial to fake precision with a number that looked measured.
v1
One squat, 21 muscles, scrubbable
A bodyweight squat from a free motion-capture clip on a rigged écorché built from the open Z-Anatomy atlas, 21 named muscles coloured by role bands, scrubbable, with a focus mode. A procedural capsule figure came first and was replaced the same day it was judged “still quite bad.” Live on 2026-09-08 as a static site: no server, the whole app a folder and a 4.7 MB model.
Along the way
What it grew into
A skeleton the clips can drive
The first pipeline retargeted captured motion joint by joint onto my own rig, and the pull-up and the swimmer came out wrong. The figure was rebound to the Mixamo skeleton instead, so a clip plays bone for bone with no retargeting. Thirty-five exercises now: twenty from free capture, the rest designed by kinematics — a strict pull-up, an L-sit, a muscle-up, a handstand kicked up from standing, a planche, a front lever, five yoga holds — because no free capture of them exists, and each page says designed.
Sides apart, and the scene from the clip
One mesh per muscle per side, so alternating movements colour each limb on its own turn. The wall climb’s left-right timing was read off the clip’s hand and foot contacts, and the wall’s holds are placed wherever a hand or foot rests still in it — so a reconverted clip moves its own holds.
A neck that nods where a neck nods
The skull stretched in a crow and a warrior III. The rig’s neck bone ran from T1 to C7, two centimetres, and the head bone from C7 to the crown — so the whole cervical spine was welded to the skull. The joint moved to the atlas, and the viewer now takes only rotations from a clip, so a joint can move without reconverting every clip.
Trade-offs
The judgment calls I'm proud of
The hard part was never the rendering — it was deciding what a colour is allowed to claim.
Refusing the number that looks measured
A whole-body estimate — 416 muscles, MuJoCo — was shown for a day and pulled when the muscles lit up at random: per-frame least squares with no smoothness, and a generic model at its strength limit through a pull-up. It stays a tool until its curves are credible. The squat shows the lower-limb OpenSim estimate with its reserve torques printed, which say how far the model was from able to do the movement; everything else is qualitative and says so. A colour on the figure is the same ramp whatever the provenance — the words under it are what tell the reader.
Free sources, licences in the build
BodyParts3D via Z-Anatomy is CC BY-SA, so the adapted model is share-alike and the attribution is required text. Mixamo forbids redistributing its clips, so no FBX enters the repo and only the converted bone rotations ship. Paid capture was listed and not bought; where nothing free existed the movement was designed by hand and labelled as such.
A static site, on purpose, and what it cost
No database, no API, no process on the box: a folder served by Caddy and a 6.4 MB meshopt-compressed model. The price came due once — a rebuilt model under the same filename showed yesterday’s pull-up for a day, until every model URL carried a content hash and the models went immutable for a year.
Where it is now
Live, and honest about the estimate
35 exercises across seven categories, 50 named muscles, each pose reviewed from several angles and fixed where a real body would not do that. Next is the estimate made credible, and measured EMG with the conditions attached.
Watch a movement work
Pick an exercise, scrub the frame, and click a muscle to follow it through.
Launch the app ↗