Shot 8 shows the body mid-stride in profile: legs apart, arms counter-swinging. The traversal release check for 0.2.0 is closed with that evidence. The reason earlier attempts froze on one pose was not the clip. A probe of the single-node instance showed the clip advancing normally (assetTime 0.19 -> 1.03, rate 1.0, playing) while the pawn's speed stayed 0 and the clip stayed Idle: the call that enables walking sat in the shot sequencer's BeginPlay, which runs before the player pawn exists, so the cast found nothing and silently did nothing. Moved into the per-frame follow update, the same run logs walk=1 speed=28 clip=GigLine_Walk and the stride appears. Also: the walk expectation was missing from visual_targets.json after the earlier retirement, so --verify was checking 7 shots while 8 were captured. Restored; 8/8 verify.
12 KiB
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; 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
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 --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 | ☑ 2026-11-09 | ☑ 2026-11-09 |
| 2 | Street level | ☑ 2026-11-09 | ☑ 2026-11-09 |
| 3 | Crossing | ☑ 2026-11-09 | ☑ 2026-11-09 |
| 4 | North buildings | ☑ 2026-11-09 | ☑ 2026-11-09 |
| 5 | Retail frontage | ☑ 2026-11-09 | ☑ 2026-11-09 |
| 6 | Third-person body | ☑ 2026-11-09 | ☑ 2026-11-09 |
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 describing the content it must show.
1. Spawn view
- 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
- 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
- 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
- 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
- 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: ☑ 2026-11-09
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.0faç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.
6. Third-person body
- File:
demo/review-demo-third-person.png - View: third-person boom, ~6 m behind the pawn, captured with
-thirdpersonso the pawn starts in the third-person rig - Expected content: the player's own visible body on the north sidewalk, seen from behind, with the hero façade across the street
- Verified: ☑ 2026-11-09 · Approved: ☑ 2026-11-09
What this shot is evidence for:
- The pawn carries a visible skeletal body with the warm skin material, and a spring-arm camera with collision testing. The V toggle swaps first and third person; the shipped default stays first person and the review passes
-thirdperson. - The idle clip drives the body and the arms hang at the sides, with the hands at the hips and the feet flat. Earlier captures of this shot showed a bind A-pose.
Still open, tracked in TODO.md:
- The fingers splay slightly, which is the bind's finger spread carried into the pose. That is the
0.2.2pose-and-skin tuning pass, not this rig. - Camera collision is implemented but unproven: the spawn has open space behind it, so no shot exercises the arm shortening.
7. Third-person front
- File:
demo/review-demo-third-person-front.png - View: from the road, ~6 m in front of the pawn, looking back north. The pawn spawns facing +Y, so this is its front
- Expected content: both arms hanging at the sides with the hands by the hips, face and chest visible
- Verified: ☑ 2026-11-09 · Approved: ☑ 2026-11-09
Why the shot exists: the third-person shot only ever shows the pawn's back, so a pose defect on the front — arms out, hands splayed, a face pointing the wrong way — was invisible in review. This angle is the check for it.
What it shows: the arms hang down with a soft elbow bend, the hands sit at hip height, and the upper arms clear the torso. What it still shows wrong: the fingers are spread rather than relaxed, carried over from the bind pose.
8. Third-person walk
- File:
demo/review-demo-third-person-walk.png - View: tracking camera, 4.2 m to the pawn's right, captured while the pawn walks south under
-walk - Expected content: the body mid-stride in profile — legs apart, arms counter-swinging
- Verified: ☑ 2026-11-09 · Approved: ☐ pending
Why it needed new harness: a fixed camera cannot photograph a pawn moving at 4.5 m/s. Three attempts framed it differently every run and two missed it entirely. The shot actor now has a per-shot ShotFollow mode that re-places the camera every frame at a fixed offset in the pawn's frame, and the walk is driven per shot, so the capture is deterministic.
What it proves: the walk clip plays and advances. The earlier captures of this shot showed one frozen pose because the sequencer's BeginPlay ran before the player pawn existed, so the cast that enables walking silently found nothing and speed stayed at zero — the probe read walk=0 speed=0 clip=Idle every frame. Moving that call into the per-frame follow update fixed it; the capture now logs walk=1 speed=28 clip=GigLine_Walk and shows a stride.
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:
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
Every issue is tracked in TODO.md under the version that will fix it; an issue with no ticket is a bug in the plan, not a note.
| Issue | Where it is tracked | State |
|---|---|---|
| Hero stone renders pale — the material is a procedural graph and a generated texture set, not a measured surface | 0.9.0 → measured material library |
Open |
| Hero façade has no doors at street level left and right of the central bay, and the central-bay elements (columns, stairs, set-back entrance, door frames, signage) are not positioned as the photographs show | 0.9.0 → per-building models, hero façade |
Open |
| Nothing may stand in front of the hero façade that blocks it — no awning, no temporary structure | 0.9.0 → per-building models, hero façade |
Open |
| Retail parapet has no moulded profile, and wall lettering built as a plate does not read at 40 m | 0.9.0 → 6800 Lee Drug and 6806–6820, second pass |
Open (moved out of 0.1.6) |
| 6822 Budget is a bare blockout volume — no photograph exists to model it from | 0.9.0 → photography gap |
Deferred (moved out of 0.1.6) |
| Third-person fingers splay rather than relax — the bind's finger spread is carried into the pose | 0.2.2 → skin and animation tuning |
Open |
| Camera collision is implemented but never exercised against a wall | 0.2.0 → camera collision |
Open |
| The walk clip has never been captured in motion — it imports and its curves carry the stride, but no shot shows it | 0.2.0 → verify animation plays correctly |
Open |
| Between kerb and building line the walkable surface is the terrain mesh, not a modelled pavement | 0.6.0 → model the pavement between kerb and building line |
Open |
Accepted by the owner, not a defect:
- Banners hang on the column line rather than flush to the wall — that is how they hang in the photographs.
Resolved and removed from this list on 2026-11-09:
- "The El Capitan Theatre has no marquee or blade sign" —
Tools/ue_stage_theatre_trim.pystages all six trim actors; verified in/tmp/gigline/theatre-import.txt. - "Materials are not yet created in Blender or fully integrated" — contradicted by the scene conventions above: every surface carries a look-dev material built in
Tools/ue_build_demo_map.py.







