Files
workouts/Exercise Library
rzen 81186c51b1 Give machine props world-space 3D form that rotates with the camera
Scene shapes, cable anchors, bar angles, pad perpendiculars, and roller
offsets all resolve in the authored view exactly as before, then rotate
about the world-vertical axis through the root anchor - the same
resolve-then-rotate pattern as the figure's pins and the mat - so at the
authored yaw every exercise renders bit-identically to today, and under
an orbiting camera the equipment turns with the figure while staying
welded to its hands and feet. Scene lines gain an optional depth plane
(z) and slab extrusion (depth) so seats, backrests, and platforms keep
form edge-on; the rect shape is retired (re-authored as slab lines).
All 14 machines' props re-authored with depths and verified at eight
orbit angles. The fixture snapshots move into the pipeline as
render.py --fixtures and now cover orbit-presentation samples with
resolved prop primitives for a spread of prop flavors; the in-app
renderer resolves props in MotionSolver (lockstep with resolve_props)
and the view just draws primitives.

Claude-Session: https://claude.ai/code/session_01HJDQQDA9QdP8zByg43H5v3
2026-07-06 22:15:45 -04:00
..

Exercise Library

Reference material for exercises the app knows about — one folder per exercise, named exactly as the exercise appears in the app.

Each entry contains:

  • info.md — the details, always in this order: a one-line summary, quick facts (Category, Type, Targets, Prescription), then Setup, Execution, Cues, Common Mistakes, and Progression (easier → harder — get strong by making the move harder, not by endless reps).
  • motion.json — the exercise scripted as key frames of joint angles on the shared rig (proportions in the library-level body.json), with IK pins for planted hands/feet and tween timings. This is the canonical source for all visuals and for the in-app animation planned for the lower half of the exercise screen.
  • Generated from it by render.py (never hand-edited): frames/frame-N.svg (one per key frame), preview.gif (the tweened loop), and visual.svg (the primary frame, for static contexts).

The rig and the visual language — right limbs dark / left limbs light with an embedded R/L legend, nose tick for facing, teal on the working parts, timing that encodes tempo, plus figure profiles, flipping, and theming — are defined in SYSTEM.md, along with the motion.json schema and rendering instructions.

The library lives at the repo root, deliberately outside the app targets' source folders, and is not bundled into the app yet — the in-app presentation format is still being worked out.