Files
gig-line/Screenshots
zwitschi 304c1e9afd docs(review): embed every demo shot inline, record the rule in AGENTS
Screenshots/README.md on this branch still used the path-only table, so a reviewer
had to open six PNGs to judge a pass. Every shot now has its own section with the
image embedded, its view, expected content and both verdicts, plus a status table
at the top that links to them.

The known-issues list becomes a table of issue -> version and item that owns it:
pale hero stone, hero entrance doors, the bind-pose animation defect, unproven
camera collision and the terrain-as-pavement strip all point at their TODO owner.
Two stale entries removed: the theatre marquee exists (six trim actors staged) and
'materials not yet created' contradicted the scene conventions.

AGENTS.md now says the README is updated with every visual change, that the image
is embedded inline, and that approval ticks both the section and the table row.

Also removed an orphan: review-demo-retail-frontage.png had been re-copied into
this branch by the capture step although its geometry only exists on
facade-retail-0.1.6.
2026-11-09 10:35:44 +01:00
..

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 Third-person body ☑ 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 describing the content it must show.


1. Spawn view

Spawn view: the whole south block from the north sidewalk

  • 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

  • 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

  • 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

  • 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. Third-person body

Third-person body: the player pawn seen from behind on the north sidewalk

  • File: demo/review-demo-third-person.png
  • View: third-person boom, ~6 m behind the pawn, captured with -thirdperson so 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: ☐ pending

What this shot is evidence for, and what it is not:

  • Implemented and visible: 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.
  • Not working: the figure is in bind pose, arms out. The idle clip is bound and PlayAnimation is called — the run logs GigLine: playing body clip Character_AnimHuman_rig_GigLine_Idle — so the call succeeds and the pose does not apply. Tracked in TODO.md under "Verify animation plays correctly on the imported rig" with that evidence.
  • Camera collision is implemented but unproven: the spawn point has open space behind it, so no shot exercises the arm shortening.
  • The skin material needed used_with_skeletal_mesh=True; without it Unreal silently substituted the default grey, which is what the first capture of this shot showed.

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 are not positioned as the photographs show 0.9.0 → per-building models, hero façade Open
Third-person body renders in bind pose: the clip is bound and PlayAnimation is called, but the pose does not apply 0.2.0 → verify animation plays correctly Open (blocking 0.2.0)
Camera collision is implemented but never exercised against a wall 0.2.0 → camera collision Open
Between kerb and building line the walkable surface is the terrain mesh, not a modelled pavement 0.6.0 → visual polish 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:

  • "The El Capitan Theatre has no marquee or blade sign" — Tools/ue_stage_theatre_trim.py stages 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.