Bake the rest pose, warp to the contract, and record the failing silhouette gate
Full build / Import + headless tests (push) Successful in 47s
Full build / Full desktop build + optional release (push) Skipped

This commit is contained in:
zwitschi committed 2026-11-05 21:01:26 +01:00
1 parent cff3937c16
commit a2ae9e03c3
2 files changed
+34 -1

No files matched your search

+6 -1
View File
@@ -72,9 +72,14 @@ baseline sheet.
Head←Head, Shoulder←UpperArm (collar collapses), Elbow←LowerArm, Hand←Wrist, Head←Head, Shoulder←UpperArm (collar collapses), Elbow←LowerArm, Hand←Wrist,
Hip←UpperLeg, Knee←LowerLeg. Optional: 30 finger bones + Foot.L/R (toe); dropped: PT.L/R Hip←UpperLeg, Knee←LowerLeg. Optional: 30 finger bones + Foot.L/R (toe); dropped: PT.L/R
pole targets. Quaternius hierarchy measured (Foot is a child of Root, not LowerLeg). pole targets. Quaternius hierarchy measured (Foot is a child of Root, not LowerLeg).
- [ ] Bake the rest pose and proportion warp to the contract hip, knee, shoulder, elbow, - [x] Bake the rest pose and proportion warp to the contract hip, knee, shoulder, elbow,
wrist and head positions. Measure the warp at every joint and record the silhouette wrist and head positions. Measure the warp at every joint and record the silhouette
deltas; do not accept a distorted deltoid or shortened arm. deltas; do not accept a distorted deltoid or shortened arm.
Arm-down bake works (`warp_full.py`: pose-rotate UpperArm −90° + modifier-apply +
`armature_apply`). Warp deltas recorded in `docs/npc-model-sourcing.md`: arm ×1.63,
leg ×0.74, torso ×1.61, hip −0.249, shoulder +0.122. Vision-judged as distorted
(paddle hands, lost forearms, stretched shins). **Gate fails — Stage 2 (62-joint runtime
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.
- [ ] 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
+28
View File
@@ -170,6 +170,34 @@ Optional extras (allowed by the contract; kept if they survive within 24,000 ver
Dropped (never shipped): `PT.L/R` (pole targets carry no deforming weights), and the Dropped (never shipped): `PT.L/R` (pole targets carry no deforming weights), and the
`Root`/`Body`/collar-`Shoulder` collapse bones above. `Root`/`Body`/collar-`Shoulder` collapse bones above.
## Rest-pose and proportion-warp measurement (2026-11-05)
The rest-pose bake (T-pose → arm-down) works: rotate the `UpperArm.L/R` pose bones −90° around
their local X, apply the Armature modifier to bake the deformation, then `armature_apply` to bake
it as the new rest pose (see `tmp/npc-research/warp_full.py`). The mesh deforms cleanly to the
arm-down pose (deformed bounds x ±0.221 vs the T-pose ±0.811).
The proportion warp to the contract positions is measured and it **distorts the silhouette**:
| Joint | Quaternius | Contract | Delta |
| --- | --- | --- | --- |
| Hips height | 0.869 | 0.62 | −0.249 (lower hip) |
| Head top | 1.614 | 1.82 | +0.206 (raise head) |
| Shoulder x | 0.148 | 0.27 | +0.122 (widen) |
| Arm (shoulder→wrist) | 0.402 | 0.60 | ×1.49 |
| Arm (shoulder→hand tip) | 0.429 | 0.70 | ×1.63 |
| Leg (hip→ankle) | 0.835 | 0.62 | ×0.74 |
| Torso (hip→head) | 0.745 | 1.20 | ×1.61 |
The vision judge reads the warped mesh as: paddle/claw hands (the 1.63× arm stretch blows the
hand out), forearms lost into the torso, stretched shins, and "long legs + short torso". The arm
must either stay short (a "shortened arm" vs the contract hand) or stretch 1.63× (a distorted
deltoid + hand) — both are the gate's rejection conditions.
**Finding:** the Stage 1 proportion warp cannot preserve the Quaternius silhouette at the
contract proportions; the gate fails and Stage 2 (a 62-joint runtime ADR) is indicated. Do not
start the 12-variant rebuild on the warped base.
## Contract mismatch ## Contract mismatch
The expensive part is the rig and proportions, not the mesh. The source has a The expensive part is the rig and proportions, not the mesh. The source has a