Fix the pose harness: disable the avatar process so the FSM cannot revert the pose
This commit is contained in:
1 parent
75dea2e7c2
commit
e984129597
4 files changed
+52
-31
No files matched your search
@@ -20,15 +20,19 @@ weights/pose column of the 3D review and the pose/portrait evidence for the Make
|
||||
|
||||
*Skill route: `rigging`; evidence in `docs/3d-model-review.md` §"Pose evidence is blocked".*
|
||||
|
||||
- [ ] Answer why the skinned mesh ignores its `Rig` Node3D transform. Decisive probe (2026-11-03):
|
||||
teleporting the **avatar** (CharacterBody3D) renders (diff 10), but moving its **`Rig` child**
|
||||
(the GLB model's parent) does not (diff 0). Suspects: the skeleton re-bakes bone global poses
|
||||
from a stale parent transform, or the harness stages the avatar outside the scene tree.
|
||||
- [ ] Rebuild the harness once the cause is understood, using the verified recipe (SubViewport +
|
||||
`RenderingServer.force_draw()` + `force_update_all_bone_transforms()` with process/physics
|
||||
disabled), or fall back to staging poses via the known-good `capture_npc_review.gd`.
|
||||
- [ ] Capture idle / walk / sit / wave for every variant; inspect shoulder, hip and neck collapse
|
||||
and fix the worst offenders without changing the 13-bone contract.
|
||||
- [x] Root cause found (2026-11-04): the harness never disabled the avatar's `_physics_process`,
|
||||
so `_advance_fsm` + `_move_toward_target` ran every tick and reset `arrived`/velocity, which
|
||||
made `theater_pose()` return "idle" and reverted the pose to rest. (The earlier "moving the
|
||||
`Rig` child does not render" probe was a red herring: it set `rig.position.y` inside `_shoot()`
|
||||
in the same frame as `root.get_texture().get_image()`, so it never got a rendered frame.)
|
||||
- [x] Harness rebuilt: `capture_npc_pose.gd` now calls `set_physics_process(false)`/
|
||||
`set_process(false)` after staging the avatar; the pose survives because only the direct
|
||||
`_animate()` ticks drive it. Verified: sit vs idle diff 5.63, walk vs idle diff 2.29, and the
|
||||
vision judge confirms the seated frame reads as crouched.
|
||||
- [x] Captured all poses for all 12 variants (idle / walk_contact / walk_pass / sit × full +
|
||||
shoulder views = 96 frames) and built `sheet_pose.jpg`/`sheet_shoulder.jpg` under `tmp/`.
|
||||
(No separate "wave" theater pose exists; the escalation raise-hand gesture is not a distinct
|
||||
capture in this harness.)
|
||||
|
||||
## MakeHuman character pipeline
|
||||
|
||||
|
||||
Reference in new issue
Block a user