Record the arm-down bake fix and the remaining non-180° rest pose-composition task
This commit is contained in:
1 parent
140a7ada0f
commit
f121167e52
1 file changed
+11
-9
@@ -768,16 +768,18 @@ blocked rig can no longer block the whole release.
|
||||
|
||||
### Rig and export correction
|
||||
|
||||
- [ ] Reproduce and record the failure: export the arm-down GLB, dump its `inverseBindMatrices`,
|
||||
compare them with the Blender armature rest, and capture the Godot A-pose frame.
|
||||
- [ ] Fix the arm-down bake so the exported skin matches the rest. Stop using
|
||||
`armature_apply` + `export_apply=True`; either bake the pose into the armature rest and
|
||||
export without apply, or re-add the modifier and verify the inverse bind matrices against
|
||||
the rest. Do not ship a hybrid or hand-patched GLB.
|
||||
- [x] Reproduce and record the failure: the `armature_apply` + `export_apply=True` bake wrote
|
||||
wrong inverse bind matrices (Godot rendered A-pose while the rest was arm-down). Recorded
|
||||
in `MEMORY.md`; `bake_armdown_clean.py` was the failing recipe.
|
||||
- [x] Fix the arm-down bake so the exported skin matches the rest. `tmp/npc-research/bake_armdown_v2.py`
|
||||
(pose-rotate → apply modifier → reset pose → edit-mode rotate arms → re-add modifier →
|
||||
export `export_apply=False`) now yields a correct arm-down base: Blender deformed x ±0.221
|
||||
and the rest bone tail points down. Still local (`tmp/`), not shipped.
|
||||
- [ ] Re-derive the pose composition for a non-180° rest. Godot's `set_bone_pose_rotation` is
|
||||
rest-relative, so `rest * Quaternion(axis, angle)` only reproduces the old rig by accident;
|
||||
derive the correct composition (candidate: `rest.inverse() * target`) and prove it with
|
||||
measured global bone transforms, not by reading the code.
|
||||
rest-relative, so `rest * Quaternion(axis, angle)` only reproduces the old rig by accident
|
||||
(the old rest is 180°, so `rest² = identity`); the Quaternius ~76° rest breaks it. Derive the
|
||||
correct composition (candidate: `rest.inverse() * target`) and prove it with measured global
|
||||
bone transforms or a mesh-deformation render, not by reading the code.
|
||||
- [ ] Add regression tests: a bone with a ~76° rest reaches a known global orientation; the
|
||||
Quaternius joint map resolves; the 13-core fallback poses exactly as it does today.
|
||||
- [ ] Verify Idle and Walk on the 62-joint rig: loop seam, foot contact, root motion and frame
|
||||
|
||||
Reference in new issue
Block a user