Narrow the pose-harness root cause: skinned mesh ignores its Rig parent
Full build / Import + headless tests (push) Successful in 40s
Full build / Full desktop build + optional release (push) Skipped

This commit is contained in:
zwitschi committed 2026-11-03 19:26:07 +01:00
1 parent 1afd97c72d
commit a677a95d13
3 files changed
+23 -11

No files matched your search

+8
View File
@@ -705,6 +705,14 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
(`smoke_props.gd`); the NPC FSM re-writes `rotation.y` every physics tick, so pose/portrait
captures set the yaw after `set_physics_process(false)`; and `visible = false` does not keep the
crowd out of a portrait frame (park the rest of the crowd away instead).
- Pose capture blocked — root cause narrowed (2026-11-03 re-attempt): rebuilding the harness with
the recipe (SubViewport + `RenderingServer.force_draw()` + `force_update_all_bone_transforms()`
+ disabled avatar process/physics) still produced byte-identical rest frames. Decisive probe:
teleporting the **avatar** (CharacterBody3D) changes the render (diff 10), but moving the
**`Rig` child** (the GLB model's parent) does not (diff 0) — the skinned mesh does not follow the
`Rig` Node3D transform, so the rig lowering (`rig_y=-0.339`) never reaches the rendered model.
The failure is upstream of capture ordering. Do not re-attempt the recipe; next attempt must
answer why the skinned model ignores its `Rig` parent, or stage poses via `capture_npc_review.gd`.
- Blender tooling: `bisect_plane` and thin bevels leave zero-area triangles (Godot warns
"non-finite normal in LOD generation"); `_clean()` + a weld after bisect fix them and the audit
rejects them.