Record the canonical-base and arm-down-bake findings precisely
Full build / Import + headless tests (push) Successful in 46s
Full build / Full desktop build + optional release (push) Skipped

This commit is contained in:
zwitschi committed 2026-11-06 10:33:52 +01:00
1 parent 11f53f66a3
commit bb54ef3eec
1 file changed
+9 -7
+9 -7
View File
@@ -780,13 +780,15 @@ blocked rig can no longer block the whole release.
(the old rest is 180°, so `rest² = identity`); the Quaternius ~76° rest breaks it. Fixed in (the old rest is 180°, so `rest² = identity`); the Quaternius ~76° rest breaks it. Fixed in
commit `8b1bf73`: `rest * Quaternion(rest.inverse() * axis, angle)` — backward-compatible commit `8b1bf73`: `rest * Quaternion(rest.inverse() * axis, angle)` — backward-compatible
(the old 180° rest maps the axis to itself). Godot 277/277. (the old 180° rest maps the axis to itself). Godot 277/277.
- [ ] Godot skinning import: two root causes found. (1) The canonical base's `remove_doubles` - [ ] Godot skinning import: root causes found and narrowed. (1) The canonical base build
weld corrupts the vertex weights — the original `Casual_Hoodie.glb` and a join-only base pose (`scale/ground transform` + `remove_doubles` weld + modifier removal before join) corrupted
to x −0.224/0.33 (arm-down), but the welded base poses to x ±0.514. Rebuild the base without the skin weights; a **join-only** base (no transform, no weld, keep modifiers) poses correctly
the weld (or weld only the seam pairs). (2) The arm-down bake needs BOTH the correct head/tail to x −0.228/0.228. Use `tmp/npc-research/build_base_minimal.py` as the canonical base.
(the world-Y rigid rotation gives the correct ±0.221 mesh) AND the correct roll (the (2) The arm-down bake still mismatches rest vs mesh (±0.531): `armature_apply` in Blender 5.2
`eb.matrix = pose_matrix` approach fixes the Godot bind_pose but the local-X −90° matrix deforms the mesh but does not bake the rest, and the `eb.matrix = pose_matrix` / world-Y
deforms to ±0.514). Combine: v2's rigid rotation for head/tail + the pose matrix's roll. rigid rotation approaches do not reproduce the pose consistently. Remaining: bake the
arm-down rest (head/tail + roll) so the re-added Armature modifier keeps the mesh at
−0.228/0.228, then verify the Godot bind_pose and render.
- [ ] Add regression tests: a bone with a ~76° rest reaches a known global orientation; the - [ ] 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. 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 - [ ] Verify Idle and Walk on the 62-joint rig: loop seam, foot contact, root motion and frame