Refit the tourist backpack and photo prop
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:
1 parent
e7ee177c31
commit
7c1a4bfd69
14 files changed
+108
-45
No files matched your search
@@ -200,7 +200,8 @@ carry baked AO and the shared neutral material maps described above.
|
||||
the legs through the hem.
|
||||
- Preview colours (`PREVIEW_TINTS`) only stand in for `outfit_for()`. The GLBs
|
||||
stay neutral.
|
||||
- The 0.9.4 baseline found three P1 portrait issues: the tourist's photo prop
|
||||
duplicates the backpack silhouette, the face is shallow/faceted at portrait
|
||||
range, and the backpack straps read as rigid bars. The full ranked list and
|
||||
accepted/deferred items are in [`npc-visual-review.md`](npc-visual-review.md).
|
||||
- The 0.9.4 baseline found three P1 portrait issues. The tourist's photo prop
|
||||
now only appears in photo/film poses and the backpack straps were refit as
|
||||
flattened chest bands; the face is still shallow/faceted at portrait range.
|
||||
The full ranked list, measurements and before/after sheet are in
|
||||
[`npc-visual-review.md`](npc-visual-review.md).
|
||||
@@ -44,6 +44,7 @@ Committed contact sheets and local Blender renders for the character, gear and p
|
||||
| <img src="sedan.png" width="280" alt="sedan.png"> | [`sedan.png`](sedan.png) |
|
||||
| <img src="sheet_npc.jpg" width="280" alt="sheet_npc.jpg"> | [`sheet_npc.jpg`](sheet_npc.jpg) |
|
||||
| <img src="sheet_npc_baseline.jpg" width="280" alt="sheet_npc_baseline.jpg"> | [`sheet_npc_baseline.jpg`](sheet_npc_baseline.jpg) |
|
||||
| <img src="sheet_npc_baseline_compare-p1.jpg" width="280" alt="sheet_npc_baseline_compare-p1.jpg"> | [`sheet_npc_baseline_compare-p1.jpg`](sheet_npc_baseline_compare-p1.jpg) |
|
||||
| <img src="sheet_npc_gear.jpg" width="280" alt="sheet_npc_gear.jpg"> | [`sheet_npc_gear.jpg`](sheet_npc_gear.jpg) |
|
||||
| <img src="sheet_props.jpg" width="280" alt="sheet_props.jpg"> | [`sheet_props.jpg`](sheet_props.jpg) |
|
||||
| <img src="shoulder_bag.png" width="280" alt="shoulder_bag.png"> | [`shoulder_bag.png`](shoulder_bag.png) |
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 298 KiB |
@@ -5,7 +5,7 @@ Implemented so far:
|
||||
- Godot 4.7.2 project scaffold, input map, procedural world builder (CI/local/release unified)
|
||||
- Venue-driven simulation core: `ShiftCoordinator`, `VenueScenario`, `EventScheduler`, `NPCController` + FSM, `AccessVerifier`, `EscalationManager`, `RadioSystem`, `IncidentRecorder`, `ReputationEvaluator`, `CrowdSystem`
|
||||
- Three authored scenarios (El Capitan Entertainment Centre / Hollywood Boulevard, The Joke Shop, Late Night TV Studio) with access policies, NPC archetypes, and event pools
|
||||
- Headless unit tests: **261 passing** (access rules and venue-correct access loadout, escalation, radio cooldown/battery, NPC reaction determinism, door lock, flashlight perception, persistence round-trip, settings round-trip, input remaps, navmesh, step colliders, skyline alpha, scenario data, full-shift simulation, wand screening, responder dispatch, localization strings, focus cone, action wheel, session shell, PLAN verbs and incident recording, crowd presentation, emergency aftermath, body-camera timeline, NPC theater poses, audio, accessibility, authored scenario content, string formatting, `.tres` venue round-trip, surface materials and environment, focus ranking and outfit/gait helpers, generated prop models, web export preset, prop atlas material, player movement, NPC character layers/LOD/queue, input bindings)
|
||||
- Headless unit tests: **262 passing** (access rules and venue-correct access loadout, escalation, radio cooldown/battery, NPC reaction determinism, door lock, flashlight perception, persistence round-trip, settings round-trip, input remaps, navmesh, step colliders, skyline alpha, scenario data, full-shift simulation, wand screening, responder dispatch, localization strings, focus cone, action wheel, session shell, PLAN verbs and incident recording, crowd presentation, emergency aftermath, body-camera timeline, NPC theater poses, audio, accessibility, authored scenario content, string formatting, `.tres` venue round-trip, surface materials and environment, focus ranking and outfit/gait helpers, generated prop models, web export preset, prop atlas material, player movement, NPC character layers/LOD/queue, input bindings)
|
||||
- Simulation extras: protester archetype, CALL_SOMEONE reaction, door lock/secure mechanic (visual indicator), flashlight with night perception bonus, LATE shift phase reaching the violent-threat event
|
||||
- First-person prototype with interaction HUD, access inspection, wand screening, radio report form (incl. emergency hold-to-confirm), dispatched responder avatars, aim-free targeting, venue cycling between all three scenarios, color-coded escalation feedback, procedural audio cues, navigation-mesh NPC paths, JSON-backed localized strings, persisted shift history, debug overlay, and shift review
|
||||
- Control pass: focus cone on NPC heads with a billboarded blue circle in front of the face and name, action wheel (LMB/Space) with de-escalation-first slices, mouse-look freeze while a panel is open, acceleration-based walking, and named input actions (`action_menu`, `confirm`, `cancel`, `inspect`, `wand`)
|
||||
@@ -39,6 +39,7 @@ Implemented so far:
|
||||
- Aim-free selection pass (v0.3.0 work, [ADR-0011](adr/0011-aim-free-selection-and-precision-walk.md)): the focus cone ranks candidates by angle then distance, `Tab` and the mouse wheel cycle nearby people nearest-first and pin the selection, right click clears focus with a short re-acquire grace, the HUD reports how many people are in the ring, and holding `Shift` walks at half speed for close work
|
||||
|
||||
- Visual alignment: start/venue menu, pause, settings, shift review, radio, wand, inspection, timeline, HUD target chip/escalation bar, and radial menu now use or match their AI references in `assets/images/ui/`. The runtime art loader (`src/game/ui/art.gd`) falls back cleanly when a file is missing. The wand panel lists the guest's carried items, and multiline HUD/wand strings render real line breaks.
|
||||
- NPC P1 portrait fixes (0.9.4 work): tourists now hide their photo-pose camera bag outside `photo`/`film` poses, removing the duplicate-backpack silhouette; the backpack gear was rebuilt with flattened, forward chest straps and a fresh AO map. The before/after sheet is [`blender_previews/sheet_npc_baseline_compare-p1.jpg`](blender_previews/sheet_npc_baseline_compare-p1.jpg); the face and remaining clothing/hand work stay open.
|
||||
- NPC visual baseline (0.9.4 work): `src/test/capture_npc_baseline.gd` captures all eight library characters from front, three-quarter, profile, back, full-body and crowd views in a neutral studio (48 frames). The criteria, measurements and ranked gaps are in [`npc-visual-review.md`](npc-visual-review.md); the committed sheet is [`blender_previews/sheet_npc_baseline.jpg`](blender_previews/sheet_npc_baseline.jpg). No model changes were made in this baseline step.
|
||||
- UI-state capture pass (0.9.3 work): `src/test/capture_ui_states.gd` adds committed captures 14–21 for the start menu, pause, settings, shift review, emergency radio, action wheel, crowd panic and responder arrival. Every one of the 21 catalogue entries now has a current-build capture; `tools/check_screenshots.sh` reports 21 good / 0 bad and the automatic judge reports 21/21 match, 0 diff. Crowd panic and responder arrival are staged presentation frames, not gameplay changes.
|
||||
- Realism adoption (post-v0.6.0): v2 per-phase skylines and surface tiles with normal maps, retuned sun/exposure/fog, wet asphalt, denser foliage, a visible additive flashlight beam, and refreshed staging captures. `tools/check_screenshots.sh` is the repeatable capture/compare gate; judge is clean of `diff` verdicts.
|
||||
|
||||
+30
-23
@@ -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.
|
||||
Reference in new issue
Block a user