Lane B / session-5 item 4: treaty amendment — required root_space sidecar field
motion.json sidecar gains REQUIRED root_space in {camera, world}. HSMR is
per-frame -> emits camera; Lane C reads it and derives a world root from foot
contacts for locomotion clips. PLAN treaty + Lane C task updated. v1 quality bar:
in-place clips first-class, traveling best-effort until a grounding pass exists.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
0cf673aa82
commit
0e2f7d0c12
14
PLAN.md
14
PLAN.md
@ -51,8 +51,11 @@ critical path. Lanes E–F are follow-ons. Do NOT start E/F before D ships.
|
||||
- Skeleton: **mixamorig 65-joint** as defined by `~/Documents/character_kit`
|
||||
(`female_game.glb` / male base). Canonical bone list generated in Lane 0.
|
||||
- Intermediate motion format: **BVH at 30fps** + sidecar JSON
|
||||
(`{fps, joint_order, root_trajectory, source_video, model, version}`).
|
||||
BVH because Blender imports it natively and it's human-diffable.
|
||||
(`{fps, joint_order, root_space, root_trajectory, source_video, model, version}`).
|
||||
**`root_space` ∈ {`"camera"`, `"world"`} is REQUIRED** (session-5 amendment): HSMR is a
|
||||
per-frame recoverer so it emits `"camera"`; Lane C reads this and, for locomotion clips,
|
||||
derives a world root from foot contacts. BVH because Blender imports it natively and it's
|
||||
human-diffable.
|
||||
- Units metres, Y-up, character faces −Z (three.js convention; Unreal yaw-fix happens
|
||||
at UE import, as established in the A_3D_STORE experiments).
|
||||
- Final artifact: FBX (anim-only, Mixamo-style "Without Skin") dropped into
|
||||
@ -157,8 +160,11 @@ Tasks:
|
||||
`mixamorig_` variants — this bit us before), bake to keyframes.
|
||||
- Foot-contact fix: detect frames where foot velocity ≈ 0 & height < threshold → IK
|
||||
pin. `# ponytail: threshold heuristic, upgrade to learned contact detection in Lane E if it annoys`.
|
||||
- Trim the T-pose bookends (Lane A protocol guarantees them), root-motion option
|
||||
(in-place vs traveling) as a flag.
|
||||
- Trim the T-pose bookends (Lane A protocol guarantees them). Root motion is driven by the
|
||||
sidecar **`root_space`** (session-5 treaty): `"camera"` (HSMR) → in-place by default, or
|
||||
derive a world root from foot contacts for traveling clips; a `--in-place`/`--traveling`
|
||||
flag overrides. v1 quality bar: **in-place clips are first-class; traveling is best-effort**
|
||||
until a proper grounding pass exists.
|
||||
- Export anim-only FBX (Mixamo "Without Skin" style — merge_anims.py already eats these).
|
||||
2. QC render: 3-second turntable mp4 of the clip on the female_game body, written next
|
||||
to the FBX. **Verify with own eyes** (the rule) — every clip gets its mp4 looked at
|
||||
|
||||
Loading…
Reference in New Issue
Block a user