The blockout cleaning pass found the map was rendering with 604 of 620 mesh actors
unmaterialed - every kit piece and all theatre trim.
Cause: ensure_material() deleted and recreated each /Game/Hollywood/Site/M_* asset on
every run, so actors staged by other tools kept references to deleted assets and fell
back to the default material. Nothing errored; the map looked merely slightly flat.
- Materials are now updated IN PLACE (load, delete_all_material_expressions, rebuild
the graph, recompile, save). Material.expressions is protected from Python, so the
editing library's deleter is used.
- 53 duplicated kit actor labels fixed (both shop piers of a bay shared one name).
- New Tools/ue_audit_scene.py gates the scene: every mesh actor has a material, every
verified frontage span is within +/-1 m (via ue_placement), no duplicate labels.
- render_screenshots.sh now runs the chain in the required order (demo map -> kit ->
theatre -> audit -> cameras -> capture) and exits non-zero on an audit failure,
because the demo builder rebuilds materials and later staging must follow it.
Scene audit: 0 failures. Packaged QA PASS. Spawn-view reference score 0.72.
- TCL Chinese Theatre (6925) and Madame Tussaud's (6933) exported from the
verified OSM blockout with ue_metric_v1 (export_north_buildings.py), with a
Y-mirror so they land north of the road, across from the hero facade.
- ue_import_north_buildings.py imports + stages them in the DemoMap as
North_TCL_Chinese / North_Madame_Tussauds (TCL Y 1802..9431, Tussaud's
1888..7586; hero at Y -1450, road centreline ~0).
- render_screenshots.sh now also runs the DemoMap capture pass; added a
demo-north-buildings camera, so the new buildings get a review shot.
- README/roadmap updated; flat facade materials pending the 0.1.4 patch.
Roadmap gains two sections: 'Review scene and player placement' (this pass) and
'Character development' (follow-on). The camera list is now one table of
(name, location, target) with look-at rotations computed from the pairs, so a
camera cannot drift out of aim when one number changes.
New shots: player-placement (the real pawn, staged in the build script),
ground-contact (knee height, feet on the plane), shadow-compare (floating vs
grounded cube from a low angle), and hero-portals (whole elevation).
The review floor grows to 160 m so the facade stands on ground rather than the
horizon band. Retired: the first-person shot.
Honest gap recorded in the roadmap: the hero portals sit behind the colonnade and
do not resolve from the review floor; that needs a camera on the plinth or a
portal rebuild, not another angle.
- AGigLineShotActor (dev-only): walks a fixed camera list in -game mode,
captures via FScreenshotRequest, quits. Test content only.
- ue_build_review_map.py builds /Game/Test/ReviewMap from current content
(gray floor, key light, sky, MPFB character, 1 m scale cubes).
- render_screenshots.sh: build map -> run game -> collect PNGs into
gitignored Screenshots/.
- Screenshots/README.md (committed) describes each capture with approval
state; AGENTS.md gains the visual-review instructions.