Refit the tourist backpack and photo prop
Full build / Import + headless tests (push) Successful in 38s
Full build / Full desktop build + optional release (push) Skipped

Hide the tourist photo-pose bag outside camera poses, flatten the backpack straps onto the chest, rebuild the gear GLB/AO and publish the before/after NPC sheet.
This commit is contained in:
zwitschi committed 2026-11-02 18:39:03 +01:00
1 parent e7ee177c31
commit 7c1a4bfd69
14 files changed
+108 -45

No files matched your search

+30 -23
View File
@@ -1,8 +1,10 @@
# NPC visual baseline and acceptance criteria
Status: baseline captured 2026-11-02. No character GLB, texture, gear or runtime
mesh was changed in this step. The baseline is the reference for the 0.9.4 NPC
visual optimization.
Status: baseline captured 2026-11-02; the first P1 fixes were applied the same
day (tourist photo-prop visibility and backpack strap geometry). The face pass
and the remaining body/clothing work are still open. The baseline remains the
reference for the 0.9.4 NPC visual optimization; the post-fix comparison is
[`blender_previews/sheet_npc_baseline_compare-p1.jpg`](blender_previews/sheet_npc_baseline_compare-p1.jpg).
## What was captured
@@ -99,27 +101,32 @@ From `python3 tools/blender_assets.py fit` and the manifest:
The widest character is `npc_coat` at 5,026 triangles and 4,807 vertices, so
the current headroom is 974 triangles and 193 vertices per character. Any face
or hand refinement must come out of that budget or replace existing detail.
or hand refinement must come out of that budget or replace existing detail. The
refit backpack measures 380 triangles / 406 vertices; the character and gear
table above remains valid because the character meshes did not change.
## Baseline findings, ranked
### P1 — fix in the first model pass
1. **The tourist carries two bag silhouettes.** `_add_props()` creates a
0.30 × 0.36 × 0.14 box at `(-0.34, 1.15, -0.18)` for the tourist photo pose
while `_add_accessory("backpack")` also attaches the library backpack. From
the three-quarter/back view the two read as separate bags. The photo prop
should be hidden outside the photo pose, merged into the backpack, or moved to
a clearly held camera.
1. **The tourist carried two bag silhouettes. Fixed 2026-11-02.** `_add_props()`
created a 0.30 × 0.36 × 0.14 box at `(-0.34, 1.15, -0.18)` for the tourist
photo pose while `_add_accessory("backpack")` also attached the library
backpack. From the three-quarter/back view the two read as separate bags. The
photo prop is now hidden outside `photo`/`film` poses
(`photo_prop_visible_for_pose()`), so it only appears when the character is
actually taking a picture; the after frame confirms one bag at rest.
2. **The face is the largest portrait gap.** The eyes, nose and lips are
readable but sit on a shallow, faceted head: the eye whites protrude, the
eyelid/cheek transition is missing, and the mouth is a dark slot. This is
intentionally stylized, but the head volume and eye socket are the first
things a player sees at conversation range.
3. **Backpack straps read as rigid black bars.** The back gear's straps cross
the chest as thin, straight geometry with visible gaps from the shoulders,
not as fabric sitting on the torso. A player sees this on the most common
tourist silhouette in every crowd.
3. **Backpack straps read as rigid black bars. Refit 2026-11-02.** The straps
were thin round tubes whose chest/waist points sat inside the torso, so only
fragments showed from the front. They are now flattened bands whose front path
sits outside the chest; the after sheet shows a continuous strap instead of
two detached rods. The backpack asset is now 380 triangles / 406 vertices
(still far below the 1,500-triangle gear budget).
### P2 — fix after the first P1 pass
@@ -167,17 +174,17 @@ python3 tools/npc_baseline.py compare \
```
The comparison sheet places the before/after pair for each view side by side.
If the change is accepted, copy the after sheet to a new committed name
(`sheet_npc_baseline_after.jpg`) and link both from the preview index. The
baseline is not replaced.
The first run is committed as
[`sheet_npc_baseline_compare-p1.jpg`](blender_previews/sheet_npc_baseline_compare-p1.jpg);
keep the baseline sheet as the before artifact and add a new numbered/after
sheet rather than replacing it.
## Next implementation order
1. Remove the duplicate tourist bag silhouette and refit the backpack straps.
2. Refine the head/eye socket/jaw volume without changing the face direction or
1. Refine the head/eye socket/jaw volume without changing the face direction or
the five tint slots.
3. Add a conversation-distance hand/grip capture and fix hand geometry before
2. Add a conversation-distance hand/grip capture and fix hand geometry before
judging hand items.
4. Audit hems and footwear in walk/sit/block poses.
5. Re-run the 48-frame baseline, the 96-frame final-context review, the 24-NPC
budget and `blender_assets.py audit/fit`; publish the before/after sheet.
3. Audit hems and footwear in walk/sit/block poses.
4. Re-run the 48-frame baseline, the 96-frame final-context review, the 24-NPC
budget and `blender_assets.py audit/fit`; publish the next comparison sheet.