# Screenshots — demo-map visual review Rendered captures of **the demo map only** — what a player sees when the demo runs. Generated by [`Tools/render_screenshots.sh`](../Tools/render_screenshots.sh); the PNGs are committed so a reviewer sees exactly what the build rendered. The review staging map (`/Game/Test/ReviewMap`) is not part of this set: it exists to hold the camera list and the hero detail rig, and it is not what ships. ## How to regenerate ```bash Tools/render_screenshots.sh --verify ``` Stages the demo shot cameras, runs the game on `/Game/Hollywood/DemoMap`, copies the PNGs into `Screenshots/demo/` and then runs [`Tools/visual_loop.py`](../Tools/visual_loop.py) `--verify` to check that each shot still shows the content its expectation describes. About a minute. ## Status at a glance Every shot is embedded below, in order, so the whole review happens in this file. | # | Shot | Verified | Approved | | --- | ------------------------------------- | ------------ | ------------ | | 1 | [Spawn view](#1-spawn-view) | ☑ 2026-11-09 | ☑ 2026-11-09 | | 2 | [Street level](#2-street-level) | ☑ 2026-11-09 | ☑ 2026-11-09 | | 3 | [Crossing](#3-crossing) | ☑ 2026-11-09 | ☑ 2026-11-09 | | 4 | [North buildings](#4-north-buildings) | ☑ 2026-11-09 | ☑ 2026-11-09 | | 5 | [Retail frontage](#5-retail-frontage) | ☑ 2026-11-09 | ☐ pending | **Verified** is what `--verify` reports: the frame is not blank, is the right size, and has tonal range. **Approved** is the owner's verdict, recorded here. Each shot also has an **expectation** in [`Tools/visual_targets.json`](../Tools/visual_targets.json) describing the content it must show. --- ## 1. Spawn view ![Spawn view: the whole south block from the north sidewalk](demo/review-demo-spawn-view.png) - **File:** `demo/review-demo-spawn-view.png` - **View:** north sidewalk, 14 m back, level horizon - **Expected content:** the whole south block — the neoclassical hero façade between its neighbouring buildings, both sidewalks and the road in the foreground - **Verified:** ☑ 2026-11-09 · **Approved:** ☑ 2026-11-09 --- ## 2. Street level ![Street level: the hero colonnade at eye height](demo/review-demo-street-level.png) - **File:** `demo/review-demo-street-level.png` - **View:** eye height, north side - **Expected content:** the hero colonnade with the adjacent frontage buildings either side, shopfronts at pavement level - **Verified:** ☑ 2026-11-09 · **Approved:** ☑ 2026-11-09 --- ## 3. Crossing ![Crossing: the designated mid-block crossing with zebra bars](demo/review-demo-crossing.png) - **File:** `demo/review-demo-crossing.png` - **View:** from the north sidewalk along the crosswalk - **Expected content:** the designated mid-block crossing (s=130 m, UE X −14956) — zebra bars on the asphalt, south frontage and colonnade behind - **Verified:** ☑ 2026-11-09 · **Approved:** ☑ 2026-11-09 --- ## 4. North buildings ![North buildings: TCL Chinese Theatre and Madame Tussaud's from the south](demo/review-demo-north-buildings.png) - **File:** `demo/review-demo-north-buildings.png` - **View:** across the Boulevard from the south side - **Expected content:** the two north-side buildings (TCL Chinese Theatre, Madame Tussaud's), full height in frame - **Verified:** ☑ 2026-11-09 · **Approved:** ☑ 2026-11-09 --- ## 5. Retail frontage ![Retail frontage: 6800 Lee Drug and 6806–6820 from across the street](demo/review-demo-retail-frontage.png) - **File:** `demo/review-demo-retail-frontage.png` - **View:** north sidewalk, level horizon, 68° lens - **Expected content:** the retail run beside the hero — 6800 Lee Drug's bronze cornice, mural row and parapet next to 6806–6820's burgundy fascia, pilasters and window storey - **Verified:** ☑ 2026-11-09 · **Approved:** ☐ pending Read this one against the reference photograph it was modelled from: `Art/reference/retail-neighbours/01-lee-drug-and-neighbor.jpg` (Gb321, CC BY-SA 4.0). Known gaps in this first pass, recorded rather than hidden: - **The parapet still reads as a blank band.** It is now two tiers with three deeper reveals, and the step is visible, but there is no profile or shadow line to break the wall — a moulded coping and a modelled reveal need the `0.9.0` façade system. - **The mural row now reads** (framed plates standing 0.12–0.20 m off the wall), but **the lettering band does not**: it is a plate at 0.10 m and it disappears at 40 m. Wall lettering is a decal/texture problem, scoped in `0.9.0`; no amount of extra plate depth fixed it in the second pass. - **The corner tower is a plain cylinder with two cap rings** — the stepped Deco profile in the photograph is richer than that. - **The camera crops the east end** of Lee Drug at 68° from the north sidewalk. - **6822 Budget is untouched** and still a bare blockout volume: no photograph of it exists. --- ## The iteration loop (uncommitted) `Tools/visual_loop.py` measures each capture against its reference photograph and turns the deltas into modelling actions for the Blender skill packs: ```bash python3 Tools/visual_loop.py --compare --iteration 3 # writes Art/reference/iterations/3/ ``` That directory is **gitignored**: iterations stay uncommitted until a shot is confirmed, and only confirmed shots are promoted into `Screenshots/demo/`. The feedback file names the affected skill (`blender-modeler`, `archviz`, `materials`, `lookdev`, `camera-cinematography`) so the next modelling pass has a starting point rather than an opinion. Note the comparison is only meaningful when the shot and the reference frame the same subject — a wide block view measured against a tight façade crop will always report low edge similarity. ## Scene conventions - **Demo map** (`/Game/Hollywood/DemoMap`): fixed daytime — sun pitch −62 / yaw 120 (intensity 4, warm), sky light 2.6, sky atmosphere, height fog, fixed exposure. - **Cameras**: elevation shots sit at their target height (pitch 0, so verticals stay parallel) and use a 42–68° lens to fill the frame from across the street. - **Materials**: every surface carries a look-developed material from `Tools/ue_build_demo_map.py` — noise-blended base colour, masonry coursing, and a generated texture set (`Tools/generate_facade_textures.py`) sampled world-aligned. Explicit roughness and specular per surface type. ## Known cosmetic issues - Hero façade renders pale: the stone material is a graph and a texture set, not a scanned surface (the `0.1.4` façade pass is in progress). - Banners sit on the column line rather than flush to the wall (they hang on the columns in the photographs, so this is acceptable). - Between kerb and building line the walkable surface is the terrain mesh, not a modelled pavement. - The El Capitan Theatre has no marquee or blade sign yet — the feature that makes it read as itself.