Skip to content

Commit 5adfe8e

Browse files
committed
docs: mixamo jumping-jacks hero-hook design spec
1 parent 3994f5c commit 5adfe8e

1 file changed

Lines changed: 64 additions & 0 deletions

File tree

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# Mixamo Hero Hook — Design
2+
3+
**Date:** 2026-07-12
4+
**Status:** Approved
5+
6+
## Goal
7+
8+
Use one Mixamo mocap clip (**jumping jacks**) as the "eye-candy hook" on the
9+
three primary marketing surfaces, while the procedural DSL stays the source of
10+
truth everywhere a visitor actually engages.
11+
12+
Role of Mixamo = **pure attention-grabber**, not a claim about tool output. It
13+
is delivered through the real `clip "<name>"` DSL directive (clip-back), so the
14+
document honestly declares what it plays; deleting that one line drops it to
15+
procedural.
16+
17+
## Scope — three surfaces, one directive
18+
19+
All three read the same `spec/examples/jumping-jacks.posecode` document and the
20+
same `SHOWCASE_CLIPS` map, so a single directive lights up all of them:
21+
22+
1. **Landing hero** (`playground/index.html` + `landing.ts`) — already wired to
23+
`clips: SHOWCASE_CLIPS`; needs no code change once the directive is present.
24+
2. **Playground default movement** — first thing shown on `/play`.
25+
3. **Main README GIF** (`docs/media/jumping-jacks.gif`) — re-rendered from the
26+
clip via the existing capture script (it drives the real playground).
27+
28+
**Out of scope / unchanged:** the sub-three README GIFs (`deadlift`, `squat`,
29+
`lateral-raise`) stay **procedural**. No other preset changes.
30+
31+
## Changes
32+
33+
1. **`spec/examples/jumping-jacks.posecode`** — add `clip "jumping-jacks"` so the
34+
doc plays the retargeted Mixamo motion when the skinned figure is active.
35+
2. **`playground/public/clips/`** — rename the re-uploaded Mixamo file
36+
`Jumping Jacks.fbx``jumping-jacks.fbx` to match the `SHOWCASE_CLIPS` key
37+
(`jumping-jacks → /clips/jumping-jacks.fbx`). Files remain gitignored /
38+
CDN-served; this only reconciles local + CDN naming.
39+
3. **`playground/src/main.ts`** — introduce `DEFAULT_PRESET_ID = "jumping-jacks"`
40+
and boot from it (approach A), leaving the library list order unchanged.
41+
4. **Re-render** `docs/media/jumping-jacks.gif` via
42+
`node scripts/capture-gifs.mjs jumping-jacks`.
43+
44+
## Honesty / consistency guardrail
45+
46+
Only the jumping-jacks doc declares a clip. Every other preset, and the sub-3
47+
GIFs, render procedurally — so the moment a visitor browses the library or edits
48+
the default doc, they see real DSL output. The default doc visibly contains the
49+
`clip "jumping-jacks"` line, so the mechanism is transparent, not hidden.
50+
51+
## Verification
52+
53+
- Browser preview: confirm the landing hero and the playground default both play
54+
the Mixamo jumping-jacks loop (not the procedural fallback), and that the loop
55+
reads cleanly through the neutral standing pose.
56+
- Confirm removing the `clip` line falls back to procedural.
57+
- Inspect the re-rendered GIF before committing.
58+
59+
## Risk / history note
60+
61+
Last session the landing jumping-jack "looked too bad" — that was the
62+
*procedural* fallback after clips were dropped (`26a5e68`). Re-adding the Mixamo
63+
clip is expected to be the fix. If the mocap loop itself reads poorly, adjust
64+
loop/framing before re-rendering the GIF.

0 commit comments

Comments
 (0)