Add a pose review harness and record the blocked pose capture
Full build / Import + headless tests (push) Successful in 43s
Full build / Full desktop build + optional release (push) Skipped

This commit is contained in:
zwitschi committed 2026-11-03 10:59:23 +01:00
1 parent 2d67e14e52
commit 7a5b902797
7 files changed
+358 -13

No files matched your search

+32 -8
View File
@@ -88,14 +88,15 @@ yet reviewed; this document is the place to fill it.
| Character | Silhouette | Face @1.85 m | Hands/grip | Weights/pose | Cloth/hair | LOD | Verdict |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `npc_casual` | accept (0.9.4) | P1 (faceted planes) | accept (open palm) | — | accept | accept (two-quad impostor) | pending owner |
| `npc_jacket` | accept | P1 | accept | — | accept | accept | pending owner |
| `npc_coat` | accept | P1 | accept | — | accept (hem 0.76 stride) | accept | pending owner |
| `npc_vest` | accept | P1 | accept | — | accept | accept | pending owner |
| `npc_dress` | accept; performer props dominate | P1 | accept | — | accept | accept | pending owner |
| `npc_hoodie` | accept (hooded criterion) | accept (lower face only) | accept | — | accept | accept | pending owner |
| `npc_firefighter` | accept | P1 | accept | — | accept | accept | pending owner |
| `npc_guard` | accept | P1 | accept | — | accept | accept | pending owner |
| *(pose evidence blocked: see "Pose evidence is blocked" below)* | | | | | | | |
| `npc_casual` | accept (0.9.4) | P1 (faceted planes) | accept (open palm) | blocked | accept | accept (two-quad impostor) | pending owner |
| `npc_jacket` | accept | P1 | accept | blocked | accept | accept | pending owner |
| `npc_coat` | accept | P1 | accept | blocked | accept (hem 0.76 stride) | accept | pending owner |
| `npc_vest` | accept | P1 | accept | blocked | accept | accept | pending owner |
| `npc_dress` | accept; performer props dominate | P1 | accept | blocked | accept | accept | pending owner |
| `npc_hoodie` | accept (hooded criterion) | accept (lower face only) | accept | blocked | accept | accept | pending owner |
| `npc_firefighter` | accept | P1 | accept | blocked | accept | accept | pending owner |
| `npc_guard` | accept | P1 | accept | blocked | accept | accept | pending owner |
### Gear (18)
@@ -162,6 +163,29 @@ for presence, not re-reviewed for art quality.
| The Joke Shop | 22,680 tris / 454 meshes | shape-language review pending |
| TV Studio | — | shape-language review pending |
## Pose evidence is blocked (2026-11-03)
The weights/pose column cannot be filled yet. A pose harness was added
(`src/test/capture_npc_pose.gd`, staged in `tmp/model-pose*`), and its output does not match the
state it reports:
- `_animate()` applies the seated pose (logged `rig_y=-0.339`, `leg0=-1.357`) and
`Skeleton3D.get_bone_pose_rotation()` returns the rotated quaternion at capture time, yet the
saved frame shows the rest pose.
- Ruled out: missing skeleton (one `Skeleton3D`, mesh bound to it, `same=true`), hidden mesh
(hiding `npc_base` removes the body), pose not applied (proxies and bone poses verified),
and unbound skinning: writing a single bone rotation directly (`HipL`, `KneeL`, `Spine`,
`ShoulderL`, `ElbowL`, `Head`) changes the rendered pixels, and a bone *position* offset moves
the head. A standalone probe that calls the same `_animate()` sequence renders the crouch.
- Also observed: a staged in-game `film` pose frame showed the arms down, so this may affect the
live game rather than only the harness. That is why it is a P0/P1 candidate rather than a QA
tooling nit.
Next step is a focused diagnosis: compare the harness/venue staging with the standalone probe
(SceneTree lifetime, node parents, first-frame skin bind, capture timing) and add a scene test
that asserts a posed avatar renders differently from its rest frame. Do not mark the pose/weight
scorecard row until that test exists.
## Ranked candidate gaps
Ordered by expected player-visible gain per unit of work. None is approved for fixing yet; the