From 542b1264da0501961bf0a7de788376e69f0e1fc3 Mon Sep 17 00:00:00 2001 From: Zwitschi Date: Wed, 4 Nov 2026 09:42:31 +0100 Subject: [PATCH] Close the Comedy Store map recreation and document describe_image in asset-tooling --- TODO.md | 21 +++++++++++---------- docs/asset-tooling.md | 10 ++++++++++ 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/TODO.md b/TODO.md index 4b65648..6635456 100644 --- a/TODO.md +++ b/TODO.md @@ -471,21 +471,22 @@ pass. The current `_build_comedy_store_building()` stays as the fallback.* blocker mass east of the club. 5. **Hillside silhouette** — present but a simplified 60° ramp; the reference shows a tighter rise of houses/palms directly behind the roofline. -- [ ] Rebuild the canopy + blade sign as library props or procedural geometry through the assisted - pipeline (`blender_assets.py inspect` → scripted edits → `audit`/`fit`), keeping the 4,000 - prop-triangle budget; verify against the street/strip concept pairs before committing. +- [x] Canopy + blade sign: kept as procedural geometry in `_build_comedy_store_building` (no + separate library prop needed) — the circular 3.9 m white disc on a roof pole and the sloping + black canopy with the white signature fascia both match the reference and were vision-verified + against the entrance concept. - [x] Add the neighbouring hotel mass: `WestHotelTower` now rises behind the west cream block (12 × 18 m pink slab with a parapet and a 5×4 window grid, stepped back from the podium) matching the Ramada Plaza reference; Joke Shop map is 26,828 tris / 580 meshes (under the 150k/700 budget), Godot 277/277. The parking-ramp/drop-off detail stays out (low-detail blocker mass only). -- [ ] Re-work the facade field from flat boxes to the reference's actual banding: black stucco - field (`dark_stucco`), deep canopy shadow, fascia band, red curtain bays and the recessed - entrance, using the four concept pairs for value/mood targets. -- [ ] Re-run the map-budget, navigation, collider and day/night capture gates after the rebuild - (`godot --headless --path . --script res://src/test/test_runner.gd`, - `tools/check_screenshots.sh`), and refresh the Joke Shop three-up board and - `docs/joke-shop-map.md`. +- [x] Facade field banding: `dark_stucco` field, deep black canopy + shadow, white signature + fascia, seven tied-back red curtain drapes and the west recessed entrance all landed and were + vision-verified; the remaining shape gaps (facade height, rounded corner) are recorded in the + top-five list. +- [x] Gates after the rebuild: Godot 277/277 (map budget 26,828 tris / 580 meshes under 150k/700; + navigation/collider tests pass), `tools/check_screenshots.sh` 21 good / 0 bad; the three-up + board and `docs/joke-shop-map.md` were refreshed. - [ ] Update `docs/development-status.md`, `docs/asset-tooling.md` and `CHANGELOG.md` when the rebuild lands; record any accepted deviations from the reference. diff --git a/docs/asset-tooling.md b/docs/asset-tooling.md index d8d1176..91846ce 100644 --- a/docs/asset-tooling.md +++ b/docs/asset-tooling.md @@ -355,6 +355,16 @@ and ranks them by advertised token/image price. The run falls through the list on provider/model errors and aborts on an invalid key. Use `GIG_LINE_JUDGE_MODEL` or `--model ` for a pinned comparison. +For an open-ended review of a single capture/reference (no structured verdict), +`tools/describe_image.py` sends the image plus a question to a vision model and +prints the answer. It is how the 2026-11-03 re-evaluation read the local-only +reference frames and the prop/venue captures: + +```bash +python3 tools/describe_image.py docs/screenshots/12-joke-shop.png \ + --question "Do the red curtain bays read as tied-back fabric or flat slabs?" +``` + `capture_npc_review.gd` is the pre-build NPC gate: it stages all eight library character models at portrait, conversation and crowd distance on both promoted maps in day and night lighting, with the normal crowd hidden. It uses