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
@@ -86,11 +86,13 @@ canonical implemented-features list in `docs/development-status.md`.
|
||||
sculpting in `_face()`/`_hands_and_shoes()`); `tools/npc_pipeline.py` builds **only**
|
||||
`assets/models/generated/npc_base.glb`, the frozen plain-primitive fallback. Reading
|
||||
`npc_pipeline.py` to judge the library's face/hand detail is wrong.
|
||||
- **Pose capture is blocked** (narrowed 2026-11-03): the recipe (SubViewport + `force_draw()` +
|
||||
`force_update_all_bone_transforms()` + disabled process/physics) still yields byte-identical rest
|
||||
frames. Decisive probe: teleporting the avatar renders (diff 10) but moving its `Rig` child does
|
||||
not (diff 0) — the skinned mesh ignores its `Rig` parent transform. Next attempt must answer
|
||||
that, or stage poses via the known-good `capture_npc_review.gd`.
|
||||
- **Pose capture fixed (2026-11-04):** the harness was missing `set_physics_process(false)`/
|
||||
`set_process(false)` on the avatar, so the FSM (`_advance_fsm` + `_move_toward_target`) ran every
|
||||
tick, reset `arrived`/velocity and made `theater_pose()` revert to idle/rest. Disabling both fixes
|
||||
it (sit vs idle diff 5.63, walk vs idle 2.29). The earlier "moving the `Rig` child does not
|
||||
render" probe was a red herring — it set the position inside `_shoot()` in the same frame as
|
||||
`root.get_texture().get_image()`, so it never rendered a frame. Lesson: pose/portrait harnesses
|
||||
must freeze the avatar's process/physics before driving `_animate()`.
|
||||
- Capture/pose harness gotchas: scripts that read captured-mouse input must run windowed
|
||||
(`smoke_props.gd`); the NPC FSM rewrites `rotation.y` every physics tick, so pose/portrait
|
||||
captures set the yaw after `set_physics_process(false)`; `visible=false` does not keep the crowd
|
||||
|
||||
Reference in new issue
Block a user