0.1.4 materials pass plus the camera fix levelling exposed. Materials (Tools/ue_build_demo_map.py): - ensure_material() gains optional masonry coursing (world-space course height, joint band, joint tint) and roughness variation, so facades read as coursed stone/stucco instead of one flat specular plane. - WorldPosition is in centimetres: course heights in metres are scaled by 100 (the first attempt divided by 0.55 and the coursing was invisible). - connect_material_expressions returns False rather than raising, so every link now goes through a link() helper that logs failures; UE has no MaterialExpressionLess, so the joint mask is Frac -> Divide -> OneMinus -> Clamp. - New materials: M_FacadeStoneShadow, M_FacadeGlass (specular 0.62 ~ IOR 1.5), M_FacadeBanner. - Material assignment is now per SLOT keyed on the imported slot material name. It was slot-0 only, which on the hero is the banner, so stone, shadow stone and glazing still wore flat Blender materials. Hero now 4/4 slots. Cameras (GigLineShotActor + ue_build_review_map): - Optional per-shot ShotFieldOfView; the shot tuples take a 4th element. - Elevations use a 42-55 deg lens from across the street: with the cameras levelled (0.1.2 follow-up) the building was small in frame, and tilting to fill it is what breaks the verticals. hero-facade-front sky 39% -> 20%, demo-spawn-view 23% -> 16%. Screenshots re-rendered for the whole set.
Screenshots — visual review
Rendered in-game captures of the current project content, generated by Tools/render_screenshots.sh. The PNGs are committed alongside this README so a reviewer sees exactly what the build rendered.
How to regenerate
Tools/render_screenshots.sh
Rebuilds Game/GigLine/Content/Test/ReviewMap.umap from current content, runs the game on it (and on the DemoMap for the walkable views), walks the fixed camera list via AGigLineShotActor, captures each shot, copies the PNGs here and exits — about a minute. The camera list lives in Tools/ue_build_review_map.py; add new shots there, remove retired ones here.
Naming: shots use their stable camera name (no index prefix), so adding or reordering cameras never renumbers files or orphans the old ones. Click an image for the full-size PNG.
Shot list
Status: whole set ☑ approved 2026-11-09 (owner review of PR #27). Every shot was re-rendered from current main content after the building-height calibration was adopted (v0.1.2): Mapbox-derived 3.1 m per level (Geo/tools/block_height_report.py), explicit overrides for three rear outbuildings, and the regenerated blockout and frontage that follow — 6922 is now 39.1 m (was 42.1 m) and the El Capitan Theatre 20.5 m (was 20.0 m).
| Round | What changed |
|---|---|
| 2026-11-07 | First approved set; block frontage pass corrected hero and north-building placement |
| 2026-11-08 | Re-rendered after 0.1.1 street geometry (sidewalk upstand flush at the building edge, crossing ramps graded ≤ 8 %); demo-north-buildings camera re-pointed (was 9.5 km west, 85 % sky) |
| 2026-11-09 | Re-rendered after the 0.1.2 building-height calibration (3.1 m per level). 12 of 14 PNGs changed; review-demo-spawn-view and review-demo-street-level are byte-identical to the 0.1.1 round, so the height change reads mostly on the frontage silhouettes |
Scene conventions
- Review map (
/Game/Test/ReviewMap): 160 m floor, top face at Z 0; the character measures Z 0..83 cm. One warm key light plus sky fill. - Cubes:
Cube_ScaleTest_Arests on the floor,Cube_ScaleTest_Bfloats at Z 2 m; both are exactly 1 m — the scale reference. - Demo map (
/Game/Hollywood/DemoMap): fixed daytime — sun at pitch −50 / yaw 120 (intensity 4, warm), sky light 2.6, sky atmosphere, height fog, fixed exposure. - Materials: every exported surface carries a look-developed material built in
Tools/ue_build_demo_map.py(ensure_material) because Blender's flat diffuse colours do not survive the FBX → Unreal import. Each has an explicit roughness and a subtle world-space noise blend between two shades:M_Asphalt(0.92),M_Concrete(0.88),M_KerbConcrete(0.85),M_Ground(0.98),M_RoadPaint(0.62),M_FacadeStone(0.72) andM_Stucco(0.86) for the north-side buildings. - Lighting is dynamic-only (
r.AllowStaticLighting=False, all lights Movable), so no lighting build is ever required.
What to look for
- Ground contact: feet meet the plane with no gap and no shadow seam.
- Scale: everything checks against the 1 m cubes.
- Façade rhythm: six columns at 4.96 m across 25.75 m should read as the photographs in silhouette.
- Frontage heights (new in this round): 6922 and the El Capitan Theatre were re-cut to the 3.1 m storey height. Check they still read as the taller west end and the lower cinema respectively against
Art/reference/hollywood/el-capitan-theatre-blade-sign-day-wikimedia-2008-10.jpg, and that the ordering of the six frontage buildings is unchanged.
Known cosmetic issues
- Floor speckle from the
Constant3Vectorwiring inTools/ue_build_review_map.py. - Hero façade renders pale — Blender flat colours with no normal/roughness, so it reads as untextured stone (the
0.1.4façade patch, not a lighting bug). - Banners sit on the column line rather than the wall (acceptable: they hang on the columns in the photographs).
Banners and window panels float detached from the colonnade wall— window panes fixed 2026-11-09: they sat at Y −1.98, 1.44 m in front of the wall and ahead of the column line; they now sit on the wall plane at Y −0.56, behind the columns, and read as dark openings (seereview-hero-facade-front).- Between kerb and building line, the walkable surface is the terrain mesh, not a modelled pavement.













