Record the Quaternius pose-sync blockers (GLB skinning + non-180° rest pose formula)
Full build / Import + headless tests (push) Successful in 48s
Full build / Full desktop build + optional release (push) Skipped

This commit is contained in:
zwitschi committed 2026-11-06 09:25:45 +01:00
1 parent 7baa2c4f54
commit 5508f5510f
2 files changed
+13 -6

No files matched your search

+5
View File
@@ -127,6 +127,11 @@ canonical implemented-features list in `docs/development-status.md`.
out of a portrait frame (park the rest of the crowd away instead). out of a portrait frame (park the rest of the crowd away instead).
- Blender: `bisect_plane` and thin bevels leave zero-area triangles (Godot "non-finite normal in - Blender: `bisect_plane` and thin bevels leave zero-area triangles (Godot "non-finite normal in
LOD generation"); `_clean()` + a weld after bisect fixes them and the audit rejects them. LOD generation"); `_clean()` + a weld after bisect fixes them and the audit rejects them.
- Quaternius arm-down bake: pose-rotate `UpperArm.L/R` −90° local X → apply Armature modifier →
`armature_apply` → re-add modifier bakes the rest, but `export_apply=True` writes wrong inverse
bind matrices (Godot renders A-pose even though the rest is arm-down). The runtime `_pose_bone`
`rest * Quaternion(axis, angle)` only cancels when `rest² = identity` (old rig's 180° rest); the
Quaternius ~76° rest does not, so the pose formula must be re-derived for a non-180° rest.
- Image models have per-model size floors/caps (Seedream needs 1920+; `GEN_SIZE=2048`, do not - Image models have per-model size floors/caps (Seedream needs 1920+; `GEN_SIZE=2048`, do not
lower; gpt-5-image-mini caps lower). `generate_image` applies model-specific sizing; concept lower; gpt-5-image-mini caps lower). `generate_image` applies model-specific sizing; concept
generation defaults to `--request-size 1536`. generation defaults to `--request-size 1536`.
+8 -6
View File
@@ -82,12 +82,14 @@ baseline sheet.
ADR) indicated; do not rebuild on the warped base.** ADR) indicated; do not rebuild on the warped base.**
- [-] Skin the Quaternius mesh and verify Idle, Walk, seated and arm-down poses. The old - [-] Skin the Quaternius mesh and verify Idle, Walk, seated and arm-down poses. The old
MPFB/arm-retarget warps are not a reference; judge the Quaternius result directly. MPFB/arm-retarget warps are not a reference; judge the Quaternius result directly.
(Direction set: ADR-0018 option 2 — 62-joint runtime. `NpcAvatar` now maps the Quaternius (Direction set: ADR-0018 option 2 — 62-joint runtime. `NpcAvatar` maps the Quaternius
names with old-rig fallback and derives proxy pivots from `get_bone_global_rest` names + derives proxy pivots from `get_bone_global_rest` (commits `271f10a`/`0cd12af`).
(commit `0cd12af`). First end-to-end capture loads and runs, but the vision judge reads Two blockers remain: (1) the arm-down GLB's **skinning** renders A-pose in Godot even
the arms/legs as misaligned — the `_sync_skeleton` swing axis (`Vector3.RIGHT`) is though its rest is arm-down — the `armature_apply` + `export_apply=True` bake writes
calibrated for the old rig, not the Quaternius bone roll. Next: determine the per-bone wrong inverse bind matrices, so fix the Blender export first; (2) `_pose_bone` uses
swing axis for UpperArm/LowerArm/UpperLeg/LowerLeg from the Quaternius rest basis.) `rest * Quaternion(axis, angle)`, which only cancels when `rest² = identity` (the old rig's
180° rest); the Quaternius ~76° rest does not, so the pose formula must be derived from the
actual `set_bone_pose_rotation` semantics for a non-180° rest.)
- [ ] Retarget Idle and Walk from the 24 Quaternius clips to the contract rig; discard - [ ] Retarget Idle and Walk from the 24 Quaternius clips to the contract rig; discard
combat, gun and sword clips. Verify looping, foot contact and frame rate in Godot. combat, gun and sword clips. Verify looping, foot contact and frame rate in Godot.
(Direction set: no retarget needed — the clips are authored for the 62-joint rig; only (Direction set: no retarget needed — the clips are authored for the 62-joint rig; only