diff --git a/Screenshots/README.md b/Screenshots/README.md index c2e6285..29723f5 100644 --- a/Screenshots/README.md +++ b/Screenshots/README.md @@ -17,52 +17,45 @@ 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 ☑ approved 2026-11-07. + +| # | File | Preview | Map | View | What it shows | +| --- | --- | --- | --- | --- | --- | +| 1 | `review-overview.png` | [overview](review-overview.png) | Review | 7 m up, NE | Whole review layout: character + both cubes on the floor | +| 2 | `review-character.png` | [character](review-character.png) | Review | eye height, south | MPFB mannequin, idle pose + warm skin; feet meet the plane | +| 3 | `review-scale-cubes.png` | [scale cubes](review-scale-cubes.png) | Review | south | Floating vs grounded cube: cast vs contact shadow | +| 4 | `review-player-placement.png` | [player placement](review-player-placement.png) | Review | spawn | The `AGigLineCharacter` pawn, capsule height and landing | +| 5 | `review-npc-prefab.png` | [npc prefab](review-npc-prefab.png) | Review | mid, west | The `AGigLineNPCPerson` prefab: collision capsule + visible MPFB body, feet on Z 0 | +| 6 | `review-ground-contact.png` | [ground contact](review-ground-contact.png) | Review | knee height, feet | Floating/sinking character is obvious here | +| 7 | `review-shadow-compare.png` | [shadow compare](review-shadow-compare.png) | Review | low angle | Detached (floating) vs touching (grounded) shadows | +| 8 | `review-hero-portals.png` | [hero portals](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` | [hero facade front](review-hero-facade-front.png) | Review | road side, straight-on | Hero façade elevation and column rhythm | +| 10 | `review-hero-facade-oblique.png` | [hero facade oblique](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` | [spawn view](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` | [street level](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` | [crossing](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` | [north buildings](demo/review-demo-north-buildings.png) | Demo | across the Blvd | North-side background buildings (TCL, Tussaud's), lit against the sky | + ## Scene conventions -- **Floor**: 160 m square, top face at Z 0. The character measures Z 0..83 cm. +- **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. -- **Lighting (review map)**: one warm key light plus sky fill, neutral exposure. -- **Lighting (demo map)**: fixed daytime — sun at pitch -50 / yaw 120 (intensity - 4, warm), sky light 2.6, sky atmosphere, height fog, and a manual-exposure - post-process volume (min = max brightness 1.0) so a shot cannot wash out or - crush to black depending on how much sky it frames. Surface colours are - assigned explicitly in `Tools/ue_build_demo_map.py` (`M_Asphalt`, `M_Concrete`, - `M_Ground`, `M_RoadPaint`) because Blender's flat diffuse colours do not - survive the FBX → Unreal import. - -## Review-map shots - -All ☑ approved 2026-11-07 (re-rendered with the character and cubes restored; -user visual check passed). - -> Naming: shots use their stable `Tools/ue_build_review_map.py` 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. - -| File | Preview | View | What it shows | -| --- | --- | --- | --- | -| `review-overview.png` | [overview](review-overview.png) | 7 m up, NE | Whole review layout: character + both cubes on the floor | -| `review-character.png` | [character](review-character.png) | eye height, south | MPFB mannequin, idle pose + warm skin; feet meet the plane | -| `review-scale-cubes.png` | [scale cubes](review-scale-cubes.png) | south | Floating vs grounded cube: cast vs contact shadow | -| `review-player-placement.png` | [player placement](review-player-placement.png) | spawn | The `AGigLineCharacter` pawn, capsule height and landing | -| `review-npc-prefab.png` | [npc prefab](review-npc-prefab.png) | mid, west | The `AGigLineNPCPerson` prefab: collision capsule + visible MPFB body, feet on Z 0 (**new 2026-11-07**) | -| `review-ground-contact.png` | [ground contact](review-ground-contact.png) | knee height, feet | Floating/sinking character is obvious here | -| `review-shadow-compare.png` | [shadow compare](review-shadow-compare.png) | low angle | Detached (floating) vs touching (grounded) shadows | -| `review-hero-portals.png` | [hero portals](review-hero-portals.png) | 8 m, eye height | Three genuine 1.2 m portal recesses with flights and plinth | -| `review-hero-facade-front.png` | [hero facade front](review-hero-facade-front.png) | road side, straight-on | Hero façade elevation and column rhythm | -| `review-hero-facade-oblique.png` | [hero facade oblique](review-hero-facade-oblique.png) | north-west | Body depth and column line standing proud of the mass | - -## Demo-map views - -Rendered from `/Game/Hollywood/DemoMap`, the walkable level. Click an image for the full-size PNG. - -| File | Preview | Approval | What it shows | -| --- | --- | --- | --- | -| `demo/review-demo-spawn-view.png` | [spawn view](demo/review-demo-spawn-view.png) | needs review | Spawn view from the north sidewalk: the hero façade across the road under fixed daytime light | -| `demo/review-demo-street-level.png` | [street level](demo/review-demo-street-level.png) | needs review | Street level from the north sidewalk: the façade colonnade and columns at eye height, now sunlit with cast shadows (was backlit and near-black) | -| `demo/review-demo-crossing.png` | [crossing](demo/review-demo-crossing.png) | needs review | The designated mid-block crossing at s=130 m (UE X -14956): three continental zebra bars on the dark asphalt, kerbs flushed to ramps, camera on the north sidewalk looking along the crosswalk | -| `demo/review-demo-north-buildings.png` | [north buildings](demo/review-demo-north-buildings.png) | needs review | North-side background buildings (TCL, Tussaud's) across the Blvd, lit against the sky | +- **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. Surface colours are assigned explicitly in + `Tools/ue_build_demo_map.py` (`M_Asphalt`, `M_Concrete`, `M_Ground`, + `M_RoadPaint`) because Blender's flat diffuse colours do not survive the + FBX → Unreal import. +- **Lighting is dynamic-only** (`r.AllowStaticLighting=False`, all lights + Movable), so no lighting build is ever required. ## What to look for @@ -79,4 +72,4 @@ Rendered from `/Game/Hollywood/DemoMap`, the walkable level. Click an image for - 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. \ No newline at end of file + a modelled pavement. diff --git a/TODO.md b/TODO.md index 7061a9d..47817bc 100644 --- a/TODO.md +++ b/TODO.md @@ -94,8 +94,8 @@ The MPFB character asset is planned as the NPC template (see `ROADMAP.md`). Keep - [x] First-person movement, mouse look, and Enhanced Input bindings. Implemented 2026-11-07: `AGigLineCharacter` (C++, 1.75 m capsule, 1.60 m eye camera, 4 m/s walk, mouse look in deg/s, jump) as the default pawn, with five actions and an 11-entry context in `/Game/Input` built by `Tools/ue_create_input_assets.py`. **Not yet confirmed interactively** — launch PIE on `Test/ReviewMap` and walk. Screenshot review pending (`Screenshots/README.md`). - [~] Collision, reset, and pause functionality. Reset (**R**) and pause (**Escape**, a real game pause that releases the cursor) are implemented in `AGigLineCharacter` with `/Game/Input/IA_Reset` and `IA_Pause`. Collision now exists — terrain, road and sidewalks import as complex-as-simple, so a simple hull cannot ramp over the kerbs. **Not verified by hand**: walk, reset and pause need a human at the keyboard. No pause menu widget yet, only the pause itself. - [x] Build the walkable demo level: terrain, street, and hero facade assembled into one map with a start point on the north sidewalk, so the demo is something a player can walk rather than a review staging. **Built 2026-11-07** by `Tools/ue_build_demo_map.py` → `/Game/Hollywood/DemoMap`: sun/sky, `Hero_Facade`, six site meshes imported with collision (`Terrain_DEM`, `Road_Hollywood`, both sidewalks and both kerbs), and a `Demo_PlayerStart` on the north sidewalk 20 m back from the frontage. Demo views in `Screenshots/demo/` re-rendered and ☑ approved 2026-11-07. -- [x] Walkable sidewalks and a designated street crossing. Crossing chosen: mid-block signalised crossing, OSM way 385648319, at 130 m along the block (`Geo/verification/2026-11-06-street-profile.md`). Done 2026-11-07: continental zebra markings (0.5 m bars / 0.5 m gaps, 3 m band) at all three signalised crossings, no collision on the paint; kerbs were already flushed at the crossings. Enablers found on the way: the street surfaces were 100 % down-facing (invisible in engine) — winding flipped; the terrain buried the street — 10.7 m corridor cut around the centreline (sidewalks cover the transition, walk-check 0 holes); LFS-lockable `.blend`/`.umap` check out read-only — builders now chmod before saving and fail loudly. Screenshot ☑ approved 2026-11-07 (`Screenshots/demo/review-demo-crossing`); the corridor renders near-black in shadow — that is the still-open **Fixed daytime lighting** item, not the crossing. -- [-] Fixed daytime lighting and basic ambience. **Implemented 2026-11-07**, pending screenshot approval. Demo map now has a fixed daytime rig in `Tools/ue_build_demo_map.py`: sun pitch −50 / yaw 120 (intensity 4, warm 255/245/230, atmosphere sun light), sky light 2.6 with real-time capture, sky atmosphere, height fog (density 0.008), and a manual-exposure post-process volume (min = max brightness 1.0) so a shot cannot wash out or crush to black. Two root causes found while doing it: (a) **Blender flat diffuse colours do not survive the FBX→UE import** — every site mesh arrived white and the terrain arrived with `WorldGridMaterial`, which is what actually made the scene look blown out; explicit `M_Asphalt` / `M_Concrete` / `M_Ground` / `M_RoadPaint` materials are now created and assigned in the demo builder. (b) only **one of the three crossings** was reaching the game: each band was its own object and Blender renamed the duplicates `.001`/`.002`, which site assembly skips; all bands are now one `Crossing_Markings` object. Demo cameras also fixed: street-level sat inside the façade body, and the crossing camera aimed at the wrong crossing (s=36.6 instead of the designated s=130.1 at UE X −14956). +- [x] Walkable sidewalks and a designated street crossing. Crossing chosen: mid-block signalised crossing, OSM way 385648319, at 130 m along the block (`Geo/verification/2026-11-06-street-profile.md`). Done 2026-11-07: continental zebra markings (0.5 m bars / 0.5 m gaps, 3 m band) at all three signalised crossings, no collision on the paint; kerbs were already flushed at the crossings. Enablers found on the way: the street surfaces were 100 % down-facing (invisible in engine) — winding flipped; the terrain buried the street — 10.7 m corridor cut around the centreline (sidewalks cover the transition, walk-check 0 holes); LFS-lockable `.blend`/`.umap` check out read-only — builders now chmod before saving and fail loudly. Screenshot ☑ approved 2026-11-07 (`Screenshots/demo/review-demo-crossing`); the corridor renders near-black in shadow — that was the **Fixed daytime lighting** item, now also done. +- [x] Fixed daytime lighting and basic ambience. **Done 2026-11-07, screenshots approved.** Demo map now has a fixed daytime rig in `Tools/ue_build_demo_map.py`: sun pitch −50 / yaw 120 (intensity 4, warm 255/245/230, atmosphere sun light), sky light 2.6 with real-time capture, sky atmosphere, height fog (density 0.008), and a manual-exposure post-process volume (min = max brightness 1.0) so a shot cannot wash out or crush to black. Two root causes found while doing it: (a) **Blender flat diffuse colours do not survive the FBX→UE import** — every site mesh arrived white and the terrain arrived with `WorldGridMaterial`, which is what actually made the scene look blown out; explicit `M_Asphalt` / `M_Concrete` / `M_Ground` / `M_RoadPaint` materials are now created and assigned in the demo builder. (b) only **one of the three crossings** was reaching the game: each band was its own object and Blender renamed the duplicates `.001`/`.002`, which site assembly skips; all bands are now one `Crossing_Markings` object. Demo cameras also fixed: street-level sat inside the façade body, and the crossing camera aimed at the wrong crossing (s=36.6 instead of the designated s=130.1 at UE X −14956). Lighting is dynamic-only (`r.AllowStaticLighting=False`, all lights Movable) so the editor's "LIGHTING NEEDS TO BE REBUILT" warning no longer fires. All four demo views approved by the owner. - [ ] Geographic attribution display ("© OpenStreetMap contributors" + license link). ### Repository publication