Guard gear fit with headless and Blender regression checks

The Python fit test now caps the glasses at 0.70x head width and requires a
positive bag clearance on both the coat and dress. The Godot character suite
loads head/back gear on six roles and checks attach parents, head width and
brow bounds, and that back gear reaches beyond the 0.26 m body silhouette.
Rebuilt and re-baked all 18 gear assets; no-op GLB export churn was reverted.
Headless 229/229, Python 87/87.
This commit is contained in:
zwitschi committed 2026-11-01 18:04:51 +01:00
1 parent a478bfbf35
commit 1b319c48b7
5 files changed
+82 -8

No files matched your search

+8 -5
View File
@@ -30,11 +30,14 @@ live in `tools/blender_assets.py` (`_build_gear()`), the contract in `docs/blend
the hood leaves the face readable; the helmet brim sat on the brow, so the whole helmet was
lifted 2 cm and rebuilt/re-baked. Beanie uses the same capped-shell sizing as the cap and is
currently unused; it is covered by the upcoming headgear regression check.
- [ ] Rebuild the gear (`build`) and re-bake AO (`tools/bake_ao.py`), then
`godot --headless --path . --import`.
- [ ] Add a regression test: `tools/test_blender_assets.py` checks the glasses width against the
head width, and `src/test/tests/test_npc_character.gd` checks the head/back attach nodes
stay outside the body silhouette radius.
- [x] Rebuild the gear (`build --only <18 gear names>`) and re-bake AO (`tools/bake_ao.py --only
<same>`), then `godot --headless --path . --import` (clean). Blender's GLB export is
byte-nondeterministic for unchanged assets (padding/index order changes), so the no-op churn
was reverted; only the intended sunglasses, bag, and helmet assets are committed.
- [x] Add a regression test: `tools/test_blender_assets.py` limits the glasses to 0.70x head
width and requires positive bag clearance on both coat and dress;
`test_npc_character.test_head_and_back_gear_clear_the_body_silhouette` loads the gear on
six roles and checks head-parent/width/brow bounds plus back-parent/0.26 m outer radius.
- [ ] Re-capture the portrait (`--stages=day,portrait`) and the gallery shots; record the
before/after in `docs/screens/realism/<date>-gear/`.
- [ ] Consider a second character close-up for a hoodie/winter NPC so headgear is covered too