Completes "Materials and look development for all exported assets". Every exported surface previously carried a flat Constant3Vector fill, which read as plastic. ensure_material() in Tools/ue_build_demo_map.py now builds a procedural material per surface: - base colour blended between two shades by world-space noise (WorldPosition -> Multiply -> Noise -> Lerp -> BaseColor) for large-scale variation, - an explicit roughness and specular so the surface type is readable. M_Asphalt 0.92, M_Concrete 0.88, M_KerbConcrete 0.85, M_Ground 0.98, M_RoadPaint 0.62, M_FacadeStone 0.72, M_Stucco 0.86 Site meshes take their material by mesh name; the hero facade and the two north-side buildings take theirs by actor label, so they are covered even though other scripts stage them. Materials are deleted and rebuilt on every run, so a look change cannot be masked by a stale asset. Result: the facade reads as warm stone with surface variation, asphalt as dark asphalt with grain, concrete and kerbs lighter and matte, and the north buildings in stucco instead of flat grey. Screenshots re-rendered and approved by the owner. The richer texture-based pass (baked/procedural brick_facade, seamless_concrete, glass, material instances) stays in the 0.1.4 facade patch. Squash of branch materials-lookdev-0.1.0 (PR #5).
86 lines
6.3 KiB
Markdown
86 lines
6.3 KiB
Markdown
# Screenshots — visual review
|
||
|
||
Rendered in-game captures of the current project content, generated by
|
||
[`Tools/render_screenshots.sh`](../Tools/render_screenshots.sh). The PNGs are
|
||
committed alongside this README so a reviewer sees exactly what the build
|
||
rendered.
|
||
|
||
## How to regenerate
|
||
|
||
```bash
|
||
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
|
||
|
||
All shots ☑ approved 2026-11-07, including the material look pass that changed
|
||
every demo surface.
|
||
|
||
| # | File | Preview | Map | View | What it shows |
|
||
| --- | --- | --- | --- | --- | --- |
|
||
| 1 | `review-overview.png` | [<img src="review-overview.png" alt="overview" width="180">](review-overview.png) | Review | 7 m up, NE | Whole review layout: character + both cubes on the floor |
|
||
| 2 | `review-character.png` | [<img src="review-character.png" alt="character" width="180">](review-character.png) | Review | eye height, south | MPFB mannequin, idle pose + warm skin; feet meet the plane |
|
||
| 3 | `review-scale-cubes.png` | [<img src="review-scale-cubes.png" alt="scale cubes" width="180">](review-scale-cubes.png) | Review | south | Floating vs grounded cube: cast vs contact shadow |
|
||
| 4 | `review-player-placement.png` | [<img src="review-player-placement.png" alt="player placement" width="180">](review-player-placement.png) | Review | spawn | The `AGigLineCharacter` pawn, capsule height and landing |
|
||
| 5 | `review-npc-prefab.png` | [<img src="review-npc-prefab.png" alt="npc prefab" width="180">](review-npc-prefab.png) | Review | mid, west | The `AGigLineNPCPerson` prefab: collision capsule + visible MPFB body, feet on Z 0 |
|
||
| 6 | `review-ground-contact.png` | [<img src="review-ground-contact.png" alt="ground contact" width="180">](review-ground-contact.png) | Review | knee height, feet | Floating/sinking character is obvious here |
|
||
| 7 | `review-shadow-compare.png` | [<img src="review-shadow-compare.png" alt="shadow compare" width="180">](review-shadow-compare.png) | Review | low angle | Detached (floating) vs touching (grounded) shadows |
|
||
| 8 | `review-hero-portals.png` | [<img src="review-hero-portals.png" alt="hero portals" width="180">](review-hero-portals.png) | Review | 8 m, eye height | Three genuine 1.2 m portal recesses with flights and plinth |
|
||
| 9 | `review-hero-facade-front.png` | [<img src="review-hero-facade-front.png" alt="hero facade front" width="180">](review-hero-facade-front.png) | Review | road side, straight-on | Hero façade elevation and column rhythm |
|
||
| 10 | `review-hero-facade-oblique.png` | [<img src="review-hero-facade-oblique.png" alt="hero facade oblique" width="180">](review-hero-facade-oblique.png) | Review | north-west | Body depth and column line standing proud of the mass |
|
||
| 11 | `demo/review-demo-spawn-view.png` | [<img src="demo/review-demo-spawn-view.png" alt="spawn view" width="180">](demo/review-demo-spawn-view.png) | Demo | spawn point | Spawn view from the north sidewalk: the hero façade across the road under fixed daytime light |
|
||
| 12 | `demo/review-demo-street-level.png` | [<img src="demo/review-demo-street-level.png" alt="street level" width="180">](demo/review-demo-street-level.png) | Demo | eye height, north side | The façade colonnade and columns, sunlit with cast shadows |
|
||
| 13 | `demo/review-demo-crossing.png` | [<img src="demo/review-demo-crossing.png" alt="crossing" width="180">](demo/review-demo-crossing.png) | Demo | along the crosswalk | The designated mid-block crossing at s=130 m (UE X -14956): three continental zebra bars on the asphalt, kerbs flushed to ramps |
|
||
| 14 | `demo/review-demo-north-buildings.png` | [<img src="demo/review-demo-north-buildings.png" alt="north buildings" width="180">](demo/review-demo-north-buildings.png) | Demo | across the Blvd | North-side background buildings (TCL, Tussaud's), lit against the sky |
|
||
|
||
## 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_A` rests on the floor, `Cube_ScaleTest_B` floats 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) and
|
||
`M_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.
|
||
- **Attribution overlay**: every shot carries the required ODbL credit in the
|
||
bottom-left (`© OpenStreetMap contributors` / `Data © OpenStreetMap
|
||
contributors, ODbL 1.0 — openstreetmap.org/copyright`), drawn by
|
||
`AGigLineHUD`. Screenshots are requested with the UI shown so the obligation
|
||
is visible in review.
|
||
|
||
## 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.
|
||
|
||
## Known cosmetic issues
|
||
|
||
- Floor speckle from the `Constant3Vector` wiring in `Tools/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.4` façade patch, not a lighting bug).
|
||
- Banners and window panels float detached from the colonnade wall (next
|
||
modelling pass).
|
||
- Between kerb and building line, the walkable surface is the terrain mesh, not
|
||
a modelled pavement.
|