diff --git a/Art/blender/hero/hero-facade-2026-11-07.blend b/Art/blender/hero/hero-facade-2026-11-07.blend index 975dd5b..8d91f5a 100644 --- a/Art/blender/hero/hero-facade-2026-11-07.blend +++ b/Art/blender/hero/hero-facade-2026-11-07.blend @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f93518ea18939682b8056fbad2741199f0e9dad6db427f0a749573a07ae4f232 -size 139688 +oid sha256:cadc2469e3e9fb41dc379a1c61489054533819478fa74befecaa37adcfdadd97 +size 158985 diff --git a/Art/blender/hero/hero-facade-2026-11-07.json b/Art/blender/hero/hero-facade-2026-11-07.json index a93b843..00d70b6 100644 --- a/Art/blender/hero/hero-facade-2026-11-07.json +++ b/Art/blender/hero/hero-facade-2026-11-07.json @@ -73,6 +73,15 @@ ], "evidence": "assumption: projecting cornice line" }, + { + "object": "Hero_Dentil_xN", + "dims_m": [ + 0.18, + 0.3, + 0.22 + ], + "evidence": "52 dentils at 0.45 m centres under the corona; assumption: photographed cornice reads as a dentilled course" + }, { "object": "Hero_Entablature", "dims_m": [ diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d1e3e4..5aa8adb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,127 +8,109 @@ Format: [Keep a Changelog](https://keepachangelog.com/) style, versions follow [ Nothing yet. -## [0.1.1] — 2026-11-08 +## [0.1.2] — 2026-11-09 -Collision-fidelity patch. No new scope: street geometry corrections and the QA -tooling that measures them. - -### Fixed - -- **Sidewalk outer edge ledge.** The sidewalk stood the full 0.15 m kerb height - above the DEM at both edges, leaving a 15.8 cm lip where the walk route crossed - from terrain onto the south sidewalk. The upstand now tapers from full at the - road-side edge to zero at the building-side edge; the north route's worst step - fell from 15.1 cm to 6.9 cm. -- **Crossing ramps too steep.** The kerb-flush run was a fixed 1.5 m, giving - ~8.7 % (measured 10–13 cm over 1.5 m). The run is now derived from a target - grade (`--max-ramp-grade`, default 8 % ⇒ 1.63 m); the crossing steps 3.4 cm at - 0.25 m sampling. +Scale and façade correction patch. Buildings and the hero elevation now match the reference photography and the cross-checked height data; no new gameplay scope. ### Added -- **Walk pre-check improvements** (`Art/blender/site/site_assembly.py`): sampling - coverage is independent of `--sample` (it previously shrank the route), and the - report now prints the grade and the arc-length/offset **location** of the worst - step, so a step can be located rather than guessed. +- **`Tools/facade_detail_concepts.py`** — generates frontal building plates (whole elevation, entrance in its façade, building with neighbours) from a local reference photograph through OpenRouter image models. Spec-driven, never overwrites, writes a provenance sidecar per image, output stays in the gitignored `Art/reference/` tree. Local working material only. +- **`Tools/fbx_export_preset.py`** — the single FBX export preset (`ue_metric_v1` / `ue_character_v1`). Replaces the argument block that had been copied into six exporters. +- **Façade occlusion probe** in `-qaselftest`: 40 m traces sideways from the road centre at walking height, required wherever a building is staged. +- **Ionic detail on the hero**: base moulding at every shaft foot, a square abacus over every capital, and a 52-dentil cornice course. +- **Tool tests**: `Tools/tests/` now covers the input driver, height classification, the Mapbox cross-check, the concept generator and the FBX preset (49 tests). ### Changed -- **Kerb height recorded as final** at 0.15 m modelled / 0.13 m as built — a - standard 6 in LA kerb; neither the 3DEP DEM nor the reference photography can - resolve it further (±2 cm), which is far below the character's 45 cm step - height. +- **Storey height 3.2 → 3.1 m**, calibrated against Mapbox building data, with explicit overrides for three rear outbuildings; the block cross-check now reports 66 matches and no disagreements. +- **Hero colonnade 47.6 % → 53.1 %** of the 14.50 m elevation, inside the photographed 50–60 % band (thinner entablature and parapet). +- Blockout regenerated at the new storey height; frontage re-exported and re-imported (6922 42.1 → 39.1 m, El Capitan Theatre 20.0 → 20.5 m). +- FBX exports now carry smoothing groups (`FACE` instead of `OFF`), so round geometry is no longer faceted and imports stop warning. + +### Fixed + +- **Windows floated 1.44 m in front of the wall**, ahead of the colonnade; they now sit on the wall plane behind the columns. +- **Parapet medallions were flat discs lying on the coping** instead of discs on the parapet face. +- **The hero façade had no usable collision** — the player could walk through it. It is now complex-as-simple; auto-generated convex hulls were tried and rejected because they bulged into the street. +- **The three "guessed" block heights were never buildings**: two `building=roof` canopies and a transit shelter. They are classified as non-building volumes and the block now reports zero guessed heights. ### Verified -- Site meshes rebuilt and re-imported (7/7, collision flags intact), DemoMap - rebuilt, packaged Development build `EXIT=0`. -- `-qaselftest` on the packaged build: walk 761 cm in 2 s at steady Z 456, reset - 0 cm, pause/unpause, transect 1456 samples across 16 rows / **0 holes**, wall - probe **0/35** blocking hits. +- Packaged build `-qaselftest`: walk, reset and pause pass; seam transect 1456 samples / 0 holes; wall probe 0/35; façade probe 0/9. +- Screenshots re-rendered for every change and approved by the owner. ### Known limitations -- One residual **13.4 cm surface step at s≈198 m** on the south sidewalk (8.0 cm - at s≈251 m north). It is not a gap and is below the 45 cm `MaxStepHeight`, so it - does not block traversal; the cause is a sidewalk-strip discontinuity near a - centreline vertex, recorded in `Art/blender/README.md` as a smoothness - refinement. -- Kerb radii at junctions, driveway aprons, drainage inlets and pavement joints - remain unmodelled (unchanged from `0.1.0`). +- Cornice dentil spacing, the base and abacus dimensions are recorded assumptions: the reference photography does not resolve them at our scale. +- Façade surfaces remain flat blockout materials; the textured pass is `0.1.4`. + +## [0.1.1] — 2026-11-08 + +Collision-fidelity patch. No new scope: street geometry corrections and the QA tooling that measures them. + +### Fixed + +- **Sidewalk outer edge ledge.** The sidewalk stood the full 0.15 m kerb height above the DEM at both edges, leaving a 15.8 cm lip where the walk route crossed from terrain onto the south sidewalk. The upstand now tapers from full at the road-side edge to zero at the building-side edge; the north route's worst step fell from 15.1 cm to 6.9 cm. +- **Crossing ramps too steep.** The kerb-flush run was a fixed 1.5 m, giving ~8.7 % (measured 10–13 cm over 1.5 m). The run is now derived from a target grade (`--max-ramp-grade`, default 8 % ⇒ 1.63 m); the crossing steps 3.4 cm at 0.25 m sampling. + +### Added + +- **Walk pre-check improvements** (`Art/blender/site/site_assembly.py`): sampling coverage is independent of `--sample` (it previously shrank the route), and the report now prints the grade and the arc-length/offset **location** of the worst step, so a step can be located rather than guessed. + +### Changed + +- **Kerb height recorded as final** at 0.15 m modelled / 0.13 m as built — a standard 6 in LA kerb; neither the 3DEP DEM nor the reference photography can resolve it further (±2 cm), which is far below the character's 45 cm step height. + +### Verified + +- Site meshes rebuilt and re-imported (7/7, collision flags intact), DemoMap rebuilt, packaged Development build `EXIT=0`. +- `-qaselftest` on the packaged build: walk 761 cm in 2 s at steady Z 456, reset 0 cm, pause/unpause, transect 1456 samples across 16 rows / **0 holes**, wall probe **0/35** blocking hits. + +### Known limitations + +- One residual **13.4 cm surface step at s≈198 m** on the south sidewalk (8.0 cm at s≈251 m north). It is not a gap and is below the 45 cm `MaxStepHeight`, so it does not block traversal; the cause is a sidewalk-strip discontinuity near a centreline vertex, recorded in `Art/blender/README.md` as a smoothness refinement. +- Kerb radii at junctions, driveway aprons, drainage inlets and pavement joints remain unmodelled (unchanged from `0.1.0`). Nothing yet. ## [0.1.0] — 2026-11-08 -The first playable release: a walkable exterior demo of the **6840 Hollywood Blvd** -(El Capitan Entertainment Centre) block in Unreal Engine, built on OpenStreetMap -layout data and USGS elevation, with the hero façade and the verified block -frontage staged on a walkable street. +The first playable release: a walkable exterior demo of the **6840 Hollywood Blvd** (El Capitan Entertainment Centre) block in Unreal Engine, built on OpenStreetMap layout data and USGS elevation, with the hero façade and the verified block frontage staged on a walkable street. ### Added -- **Unreal project** (`Game/GigLine`) — C++ game module, Enhanced Input, packaged - Linux build, and a `DemoMap` that a plain launch opens directly. -- **Walkable demo level** — terrain from the 3DEP DEM, Hollywood Blvd carriageway, - both sidewalks and kerbs with collision, the designated mid-block crossing, and - fixed daytime lighting (sun, sky light, sky atmosphere, height fog, pinned - exposure). -- **Hero façade** for 6840 Hollywood Blvd — six-column neoclassical elevation with - three genuine portal recesses, entablature, parapet and motto band - (`Tools/hero_facade_build.py`, `Tools/ue_hero_facade_import.py`). -- **Block frontage** — the five verified south-side neighbours (6922, 6902, 6838 - El Capitan Theatre, 6822 Budget, 6806–6822, 6800 Lee Drug) and the two north-side - buildings (TCL Chinese Theatre, Madame Tussaud's) placed at their OSM positions. -- **First-person player** — `AGigLineCharacter`: 1.75 m capsule, 1.60 m eye camera, - 4 m/s walk, mouse look, jump, reset (`R`) and pause (`Escape`); controls - documented in `Docs/controls.md` and shown in-game. -- **In-game ODbL attribution** — `AGigLineHUD` draws the OpenStreetMap credit and - licence line every frame. -- **QA harness** — `-qaselftest` (walk, reset, pause, seam transect, invisible-wall - probe, frame-time capture) and `Tools/input_test.py` / `Tools/input_emulation.py` - for OS-level virtual keyboard/mouse input. -- **Documentation** — setup, build, toolchain, licensing, ODbL review, release - checks, and arc42 architecture docs. +- **Unreal project** (`Game/GigLine`) — C++ game module, Enhanced Input, packaged Linux build, and a `DemoMap` that a plain launch opens directly. +- **Walkable demo level** — terrain from the 3DEP DEM, Hollywood Blvd carriageway, both sidewalks and kerbs with collision, the designated mid-block crossing, and fixed daytime lighting (sun, sky light, sky atmosphere, height fog, pinned exposure). +- **Hero façade** for 6840 Hollywood Blvd — six-column neoclassical elevation with three genuine portal recesses, entablature, parapet and motto band (`Tools/hero_facade_build.py`, `Tools/ue_hero_facade_import.py`). +- **Block frontage** — the five verified south-side neighbours (6922, 6902, 6838 El Capitan Theatre, 6822 Budget, 6806–6822, 6800 Lee Drug) and the two north-side buildings (TCL Chinese Theatre, Madame Tussaud's) placed at their OSM positions. +- **First-person player** — `AGigLineCharacter`: 1.75 m capsule, 1.60 m eye camera, 4 m/s walk, mouse look, jump, reset (`R`) and pause (`Escape`); controls documented in `Docs/controls.md` and shown in-game. +- **In-game ODbL attribution** — `AGigLineHUD` draws the OpenStreetMap credit and licence line every frame. +- **QA harness** — `-qaselftest` (walk, reset, pause, seam transect, invisible-wall probe, frame-time capture) and `Tools/input_test.py` / `Tools/input_emulation.py` for OS-level virtual keyboard/mouse input. +- **Documentation** — setup, build, toolchain, licensing, ODbL review, release checks, and arc42 architecture docs. ### Fixed -- **All controls were dead in packaged and PIE builds.** The mapping-context - generator wrote key bindings to the deprecated `mappings` array; UE 5.8 reads - `DefaultKeyMappings.Mappings`, so the cooked game had zero runtime mappings and - every key resolved to nothing. `Tools/ue_create_input_assets.py` now populates - the current field. -- **"Fall-through" was an 8 m invisible box.** `Terrain_DEM` shipped only a - bounding-box collision proxy; forcing complex-as-simple collision - (`UGigLineAssetTools`) put the player on the actual street. -- **Reset returned the player to mid-air** — the start position is now captured on - the first grounded frame. -- **Plain launch opened the engine template** — the default map now lives in - `DefaultEngine.ini` and points at `DemoMap`. -- **Game target would not compile** — removed editor-only API use - (`UStaticMesh::PostEditChange`, `AActor::GetActorLabel`). -- **`demo-north-buildings` screenshot** framed 85 % sky (camera 9.5 km west of the - buildings); re-pointed to the building mass. +- **All controls were dead in packaged and PIE builds.** The mapping-context generator wrote key bindings to the deprecated `mappings` array; UE 5.8 reads `DefaultKeyMappings.Mappings`, so the cooked game had zero runtime mappings and every key resolved to nothing. `Tools/ue_create_input_assets.py` now populates the current field. +- **"Fall-through" was an 8 m invisible box.** `Terrain_DEM` shipped only a bounding-box collision proxy; forcing complex-as-simple collision (`UGigLineAssetTools`) put the player on the actual street. +- **Reset returned the player to mid-air** — the start position is now captured on the first grounded frame. +- **Plain launch opened the engine template** — the default map now lives in `DefaultEngine.ini` and points at `DemoMap`. +- **Game target would not compile** — removed editor-only API use (`UStaticMesh::PostEditChange`, `AActor::GetActorLabel`). +- **`demo-north-buildings` screenshot** framed 85 % sky (camera 9.5 km west of the buildings); re-pointed to the building mass. ### Verified -- Both sides of the demo are traversable: 1456-sample seam transect, 0 holes, - no blocking collision or invisible walls (`-qaselftest` on the packaged build). -- Placement and street scale match the reference photography and Geo - measurements (road 24.3 m, sidewalk offsets 12.5/13.2 m, hero frontage 26.0 m). -- **414 fps average / p99 3.01 ms at 2560×1440** (Epic preset, TSR, VSync off, no - frame generation) — far above the 60 fps target. -- Fresh checkout builds and packages with the documented external engine - (UE 5.8.4). +- Both sides of the demo are traversable: 1456-sample seam transect, 0 holes, no blocking collision or invisible walls (`-qaselftest` on the packaged build). +- Placement and street scale match the reference photography and Geo measurements (road 24.3 m, sidewalk offsets 12.5/13.2 m, hero frontage 26.0 m). +- **414 fps average / p99 3.01 ms at 2560×1440** (Epic preset, TSR, VSync off, no frame generation) — far above the 60 fps target. +- Fresh checkout builds and packages with the documented external engine (UE 5.8.4). ### Known limitations -- Buildings other than the hero are flat blockout volumes; façade detail, - materials and Blosm style scripts are planned for `0.1.4`. -- Kerb height (0.13 m as built vs 0.15 m assumed), kerb radii, driveway aprons and - graded crossing ramps are deferred to `0.1.1`; crossing ramps are kerb flushes. +- Buildings other than the hero are flat blockout volumes; façade detail, materials and Blosm style scripts are planned for `0.1.4`. +- Kerb height (0.13 m as built vs 0.15 m assumed), kerb radii, driveway aprons and graded crossing ramps are deferred to `0.1.1`; crossing ramps are kerb flushes. - One block only; no vehicles, NPCs, audio, or settings UI yet. -[Unreleased]: https://git.allucanget.biz/zwitschi/gig-line/compare/v0.1.1...main +[Unreleased]: https://git.allucanget.biz/zwitschi/gig-line/compare/v0.1.2...main +[0.1.2]: https://git.allucanget.biz/zwitschi/gig-line/releases/tag/v0.1.2 [0.1.1]: https://git.allucanget.biz/zwitschi/gig-line/releases/tag/v0.1.1 [0.1.0]: https://git.allucanget.biz/zwitschi/gig-line/releases/tag/v0.1.0 diff --git a/Game/GigLine/Content/Hollywood/DemoMap.umap b/Game/GigLine/Content/Hollywood/DemoMap.umap index 6523f7b..b9e63f2 100644 --- a/Game/GigLine/Content/Hollywood/DemoMap.umap +++ b/Game/GigLine/Content/Hollywood/DemoMap.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3239737465e1695fc16868978aabcca4767055e1ab45cb1c222591b7ff2bda22 -size 54516 +oid sha256:5805e28bd4c9368cd35f571bdceb0d6f048604226f69cf96fa385ee84380c211 +size 54509 diff --git a/Game/GigLine/Content/Hollywood/ElCapitan/SM_HeroFacade.uasset b/Game/GigLine/Content/Hollywood/ElCapitan/SM_HeroFacade.uasset index 7141801..466c4da 100644 --- a/Game/GigLine/Content/Hollywood/ElCapitan/SM_HeroFacade.uasset +++ b/Game/GigLine/Content/Hollywood/ElCapitan/SM_HeroFacade.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ddad5d7f8850af3547fe2f80c388e16e0559e266da058874f0fc36af2ac4f6b -size 129152 +oid sha256:76cdd4770b34206e7b53c27d1902fde238efde555580ce08cf87270882613b85 +size 142674 diff --git a/Game/GigLine/Content/Hollywood/Site/M_Asphalt.uasset b/Game/GigLine/Content/Hollywood/Site/M_Asphalt.uasset index 55afb15..ee81ce5 100644 --- a/Game/GigLine/Content/Hollywood/Site/M_Asphalt.uasset +++ b/Game/GigLine/Content/Hollywood/Site/M_Asphalt.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1573ce34e0eedd36e9fea9c3b7870c3a7e40cd7763feeeafcf406f6821e1ddfa +oid sha256:8b3b5a17f3a916bb27858051e5ba88b4266a420898128e3fb26577b4ca92ff15 size 7876 diff --git a/Game/GigLine/Content/Hollywood/Site/M_Concrete.uasset b/Game/GigLine/Content/Hollywood/Site/M_Concrete.uasset index 43ced3c..30f1d14 100644 --- a/Game/GigLine/Content/Hollywood/Site/M_Concrete.uasset +++ b/Game/GigLine/Content/Hollywood/Site/M_Concrete.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7ed5ce4a4a8d007723859d1bf72f8cda4dc44a0a1516861388cf453a8ed51bd8 +oid sha256:35ef03e01d6cc6aee00d7bdea4063213b1b3f4ec717838f6694dcdfe85e593a8 size 7881 diff --git a/Game/GigLine/Content/Hollywood/Site/M_FacadeStone.uasset b/Game/GigLine/Content/Hollywood/Site/M_FacadeStone.uasset index e08b823..99136e1 100644 --- a/Game/GigLine/Content/Hollywood/Site/M_FacadeStone.uasset +++ b/Game/GigLine/Content/Hollywood/Site/M_FacadeStone.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d9e56b813e652f1db48f0d2c06fb971a3e626ac8a7db2355b844bed7e9cb0a9e +oid sha256:092d4108e04ea0a90902249a2ff29480a61ce0001963fdbb7fffa7788facee46 size 7896 diff --git a/Game/GigLine/Content/Hollywood/Site/M_Ground.uasset b/Game/GigLine/Content/Hollywood/Site/M_Ground.uasset index 4dd5e9c..fea4b51 100644 --- a/Game/GigLine/Content/Hollywood/Site/M_Ground.uasset +++ b/Game/GigLine/Content/Hollywood/Site/M_Ground.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f602277d7e29590cc74edc68947bfaf4005bb1b725b893048999bef871965e29 +oid sha256:6bb3fc7e0ba1c40897838d8ab01b053f467da130e54c19a91e46b61a15b09e2b size 7871 diff --git a/Game/GigLine/Content/Hollywood/Site/M_KerbConcrete.uasset b/Game/GigLine/Content/Hollywood/Site/M_KerbConcrete.uasset index ce1583d..a3c6748 100644 --- a/Game/GigLine/Content/Hollywood/Site/M_KerbConcrete.uasset +++ b/Game/GigLine/Content/Hollywood/Site/M_KerbConcrete.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a33a56d8da461099abc07e4d2608c461fa6ecf64e86901a751ebd123a35c7b01 +oid sha256:ef17b5d0ed660a13a60b294a9d36ab99787336b2655e4f350fcc2780e5fc5d04 size 7901 diff --git a/Game/GigLine/Content/Hollywood/Site/M_RoadPaint.uasset b/Game/GigLine/Content/Hollywood/Site/M_RoadPaint.uasset index cab50f8..7e38022 100644 --- a/Game/GigLine/Content/Hollywood/Site/M_RoadPaint.uasset +++ b/Game/GigLine/Content/Hollywood/Site/M_RoadPaint.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:df8b9571db76547fcb0c14b17440434aa865cf06fede0870edddbe57c25a13c7 +oid sha256:60d614ddb19422a8fcca5474f731ef5640f7d7d60c6ef59780914c15f8367388 size 7886 diff --git a/Game/GigLine/Content/Hollywood/Site/M_Stucco.uasset b/Game/GigLine/Content/Hollywood/Site/M_Stucco.uasset index 2835530..de5a3bb 100644 --- a/Game/GigLine/Content/Hollywood/Site/M_Stucco.uasset +++ b/Game/GigLine/Content/Hollywood/Site/M_Stucco.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:17de1d539b838415aa76f4637feabc200991ee52671dce1546da6564d6bc0761 +oid sha256:38bbe13637e5a27860b2b0cb2d75d9802446a8ee481825de46bd04bbf0b6f586 size 7871 diff --git a/Game/GigLine/Content/Hollywood/Site/Terrain_DEM.uasset b/Game/GigLine/Content/Hollywood/Site/Terrain_DEM.uasset index 3f1cab2..263ef74 100644 --- a/Game/GigLine/Content/Hollywood/Site/Terrain_DEM.uasset +++ b/Game/GigLine/Content/Hollywood/Site/Terrain_DEM.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ecff60acd3e6f7149564003fe68fb9fc8a89c21c9d0eebdafa6f8ae59c6ab270 +oid sha256:22e56a42763de7a73b4d8974a3e8709d89ebdc666bde2ce5d21dea699cee3198 size 357901 diff --git a/Game/GigLine/Content/Test/ReviewMap.umap b/Game/GigLine/Content/Test/ReviewMap.umap index 88400fa..060a2e4 100644 --- a/Game/GigLine/Content/Test/ReviewMap.umap +++ b/Game/GigLine/Content/Test/ReviewMap.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a39dff6294d91f55ab3ea581c8c1a7f663cbe2214e61d2836491d06965f383e8 +oid sha256:69e8eb5f0765ce2900ef8b56463b3c0c484120dfc4a6f8ac40436427a178040b size 28706 diff --git a/MEMORY.md b/MEMORY.md index 63bd5ff..090f0ee 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -483,3 +483,15 @@ Scope: facts and traps that cost time to establish. Planned work lives in [TODO. - `mpfb_character_export.py` was not re-run: it needs the MPFB add-on on `BLENDER_USER_SCRIPTS` ("Add-on not loaded: bl_ext.blender_org.mpfb"), which is pre-existing and unrelated; the character is not in `0.1.x` gameplay. + +## 2026-11-09 — v0.1.2 released + +- Cornice finished: projecting corona over a **52-dentil course** (0.18 × 0.30 × + 0.22 m at 0.45 m centres, z 12.12–12.34, 0.25 m clear of the corona). Hero is now + 3 044 tris across 148 parts, still 14.50 m. Verified: packaged `-qaselftest` all + PASS (transect 0 holes, wall probe 0/35, facade probe 0/9). +- `CHANGELOG.md` gets the `0.1.2` entry (added/changed/fixed/verified/limitations), + the `0.1.2` section is removed from `TODO.md`, `ROADMAP.md` status updated, tag + `v0.1.2` cut after the merge. +- Assumptions recorded rather than hidden: dentil spacing, base and abacus + dimensions are not resolvable in our reference photography. diff --git a/Screenshots/README.md b/Screenshots/README.md index 73e033f..04c3f64 100644 --- a/Screenshots/README.md +++ b/Screenshots/README.md @@ -59,5 +59,5 @@ Rebuilds `Game/GigLine/Content/Test/ReviewMap.umap` from current content, runs t - 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 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 (see `review-hero-facade-front`). +- ~~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 (see `review-hero-facade-front`). - Between kerb and building line, the walkable surface is the terrain mesh, not a modelled pavement. diff --git a/Screenshots/demo/review-demo-north-buildings.png b/Screenshots/demo/review-demo-north-buildings.png index 9c49c20..7b9f729 100644 --- a/Screenshots/demo/review-demo-north-buildings.png +++ b/Screenshots/demo/review-demo-north-buildings.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8922ee977c1d89df3d4d9e10caa2785f87deecd17bee4624cf5dbfbdeecadb73 -size 2238947 +oid sha256:4987b6fe125ea35123c1fc6b449316c5572611cde6fad23960a0133edd35c18a +size 2240373 diff --git a/Screenshots/demo/review-demo-spawn-view.png b/Screenshots/demo/review-demo-spawn-view.png index 7a36e08..7869397 100644 --- a/Screenshots/demo/review-demo-spawn-view.png +++ b/Screenshots/demo/review-demo-spawn-view.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cf464077cd4a79302b33d7f88be63aee6f586ab761c030cfb67661945eeee493 -size 2640409 +oid sha256:78bc63eb208566fe96bcbdd22f055aa6e9e2cde5cf5fd46970e35786235642fb +size 2640328 diff --git a/Screenshots/review-character.png b/Screenshots/review-character.png index 4c51cc6..0497f75 100644 --- a/Screenshots/review-character.png +++ b/Screenshots/review-character.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b5e133239d976a0c451845b126a4139afec85055592752639db430640c714f0d -size 2762684 +oid sha256:59471b51a90ae76085929d748e602d79f61006d930a3bcde3414d91cc224f336 +size 2750928 diff --git a/Screenshots/review-ground-contact.png b/Screenshots/review-ground-contact.png index faa7954..3bd0354 100644 --- a/Screenshots/review-ground-contact.png +++ b/Screenshots/review-ground-contact.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d3ff3ccb37e39df6a85b46d55e42c830eedb472cca58784126dbc0c92f3cacd8 -size 1826522 +oid sha256:188c438887a4cd08377c68168597494ae0bfb50a556c11c74dd5f0daf8324606 +size 1802093 diff --git a/Screenshots/review-hero-facade-front.png b/Screenshots/review-hero-facade-front.png index be22d0e..2ee8935 100644 --- a/Screenshots/review-hero-facade-front.png +++ b/Screenshots/review-hero-facade-front.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f08a527395660a98d8b39af4356ccdf1a38d7e3cab19ce7ad560cfd12a75c749 -size 1743785 +oid sha256:2aea3c9551c08984a4284c82950ed2f8b393dd89b3de0460025569716d84421a +size 1740280 diff --git a/Screenshots/review-hero-facade-oblique.png b/Screenshots/review-hero-facade-oblique.png index 8dfd265..7bf77c5 100644 --- a/Screenshots/review-hero-facade-oblique.png +++ b/Screenshots/review-hero-facade-oblique.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:29605038bf303924976deec33896c5534b65d43233ce3bc587c3e8a0320ebd65 -size 1402114 +oid sha256:43a4d8e5c944ef0eb68123a8f76a56cf34b33d300854aee026e3ccf7632a2ace +size 1405528 diff --git a/Screenshots/review-hero-portals.png b/Screenshots/review-hero-portals.png index 6fed5e6..37e8782 100644 --- a/Screenshots/review-hero-portals.png +++ b/Screenshots/review-hero-portals.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9ae371b126e13e24610ca9358a10bc9524702ad3dda9ce672fcaac44bb03dc8e -size 1373251 +oid sha256:05dea90306fb44fd88d1ea9ec258dd65940ed7fb6a4a126657d645c49cd45de3 +size 1368740 diff --git a/Screenshots/review-npc-prefab.png b/Screenshots/review-npc-prefab.png index 26c6dd5..0fed29f 100644 --- a/Screenshots/review-npc-prefab.png +++ b/Screenshots/review-npc-prefab.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d26ee7178f4b7bd23c028d19e7cb8ded4109bbf6864f95c3e56e28c5eeed8c32 -size 1804784 +oid sha256:63b5ce004bfe7804f00d6e49c75a4c461f5414214817b4cffca5a3df0b136277 +size 1793145 diff --git a/Screenshots/review-overview.png b/Screenshots/review-overview.png index e844489..8680147 100644 --- a/Screenshots/review-overview.png +++ b/Screenshots/review-overview.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:232ba45b93dc9871ec79363ba29033ef2ddf56bf2b90ed712718b136be3638f2 -size 2419553 +oid sha256:e2b4e4008d19bbf05bd83b2700c5ad94e57a19d4dde3c57ccdddb31629e48216 +size 2417882 diff --git a/Screenshots/review-player-placement.png b/Screenshots/review-player-placement.png index 70a7a50..49b4d25 100644 --- a/Screenshots/review-player-placement.png +++ b/Screenshots/review-player-placement.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b0d3c22b5e642a5ef4586f452e50753649923835ed41b7c9310a257fb124fca -size 2211043 +oid sha256:a42ba17def6436697939e3fc1b16d70318bdfdc5098343457bdbca937884aa08 +size 2208471 diff --git a/Screenshots/review-scale-cubes.png b/Screenshots/review-scale-cubes.png index 4b31d9b..417db54 100644 --- a/Screenshots/review-scale-cubes.png +++ b/Screenshots/review-scale-cubes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89c4381b77b18eebc27c1df85bd31ce1cba4b2f89fc73dbdb312cb60013f318f -size 2140459 +oid sha256:da899284357ce4fcb95d4da36789a20b3adf52b77643630c7790112a3e582e28 +size 2135172 diff --git a/Screenshots/review-shadow-compare.png b/Screenshots/review-shadow-compare.png index a922f66..895261c 100644 --- a/Screenshots/review-shadow-compare.png +++ b/Screenshots/review-shadow-compare.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c3b6f8d9cc11087da4f7b47c3ed6e49af45098094ce29a2d729e137cabb4bb5b -size 1852570 +oid sha256:b5c53303eeb5220eb026990204127e9d5c328614699f911ea6389969ab3a2f22 +size 1857026 diff --git a/TODO.md b/TODO.md index 333d831..432bcfa 100644 --- a/TODO.md +++ b/TODO.md @@ -9,18 +9,6 @@ Actionable task list for this project. This file is the single, central place fo - When all steps in a version section are done: write a `CHANGELOG.md` entry, then remove the version section from this file. - Release gate: a version is tagged only on the owner's explicit go-ahead once its release checks pass, not automatically when the checkboxes close. -## 0.1.2 — Scale and façade corrections (patch) - -Suggested blender skills: **references** (reference-image-match and visual-match-checklist templates — measure the guessed heights and colonnade proportions against the photographs), **archviz** (real-world scale and façade composition discipline), **camera-cinematography** (reproduce the reference camera angles when comparing renders to photos). - -### Patch tasks - active - 01a1b26b-3c94-707f-9665-2f6b4a79b564 (branch `scale-facade-0.1.2`) - -- [x] Correct building scale and street proportions flagged against references. **Mapbox adopted 2026-11-09.** `Geo/tools/mapbox_buildings.py` merges our OSM heights with Mapbox's building data for the same footprints; after adopting its two findings the cross-check reports **66 match, 6 non-building, 0 disagreements**. Adopted: **`LEVEL_HEIGHT` 3.2 → 3.1 m** (`block_height_report.py`, and the Blosm `--level-height` default), plus explicit `HEIGHT_OVERRIDES` (3.0 m) for the three rear `building=yes`/`apartments` structures Mapbox gives as single-storey. Blockout regenerated, frontage re-exported/re-imported, DemoMap rebuilt; packaged `-qaselftest` all PASS. Measured effect: 6922 42.1 → 39.1 m, El Capitan Theatre 20.0 → 20.5 m (both now ~1.9 m above their table height = roof mass). -- [ ] Refine hero façade details where reference photography shows discrepancies. **Started 2026-11-09:** built `Tools/facade_detail_concepts.py`, which generates architectural detail plates from the local reference photographs with an image model (`--list` free, `--all` generates, sidecars + `-vN` no-overwrite, output gitignored). Six **frontal building** studies generated locally under `Art/reference/facade-details/` (whole elevation, entrance in its facade, building with neighbours, pavement view, three-quarter, theatre frontage) — rephrased on owner instruction to show the building/entrance/neighbours rather than close-up detail crops. **First fix from the measurement pass:** window panes were 1.44 m in front of the wall (ahead of the columns) and now sit on the wall plane behind the colonnade. **Detail pass 2026-11-09 (all measured on the built mesh):** added an Ionic base moulding (1.36 m × 0.22 m) at each shaft foot and a square abacus (1.30 m × 0.14 m) over each capital, taking the abacus out of the capital zone so the colonnade still ends at 9.70 m; re-oriented the two parapet medallions, which were flat discs lying on the coping (1.1 × 1.1 × 0.02 in the wrong axes) instead of discs on the parapet face; window panes moved onto the wall plane. Hero is now 2 420 tris across 95 parts, still 14.50 m. Cornice/dentil profile refinement remains. -- [x] **Replace the placeholder heights.** **Resolved 2026-11-08 — they were never unknown buildings.** The three "guessed" ways are not building volumes at all: `1360755125` and `1360755126` are `building=roof` at `layer=1` (elevated canopies) and `1417995292` is `amenity=shelter` / `shelter_type=public_transport` (a transit shelter). The report defaulted them to "2 levels × 3.2 m" and produced the bogus 6.4 m. `Geo/tools/block_height_report.py` now classifies roof/shelter explicitly and reports **0 guessed heights**: all 15 block volumes have a real `height` tag, a `building:levels` derivation, or are correctly excluded as non-building volumes. No photograph measurement was needed, and no frontage building was affected. -- [x] Resolve the remaining unknown on the hero: the colonnade currently occupies about 45 % of the height against roughly 50–60 % in the photographs. Fix the vertical proportions. **Fixed 2026-11-09.** Measured baseline: colonnade (columns + capitals) 6.90 m of the 14.50 m envelope = **47.6 %**, because the entablature (3.40 m) and parapet (2.20 m) left only 7.90 m for the order. Thinned both to **3.00 m** and **1.80 m** (`Tools/hero_facade_build.py`), which lifts the colonnade to **7.70 m = 53.1 %** — inside the photographed 50–60 % band, with the 14.50 m envelope, the motto band and the medallions unchanged in position relative to the parapet. Hero rebuilt, re-imported (bounds 2604 × 1257 × 1450 cm) and re-rendered. -- [ ] Tag `v0.1.2` and write `CHANGELOG.md` entry; then remove this section. - ## 0.1.3 — Packaging and setup fixes (patch) Suggested blender skills: **export-pipeline** and **unreal-export** (scale/pivot/normals/materials/collision verification) if any packaging defect traces back to the Blender export presets. diff --git a/Tools/hero_facade_build.py b/Tools/hero_facade_build.py index 2afca9a..964a419 100644 --- a/Tools/hero_facade_build.py +++ b/Tools/hero_facade_build.py @@ -196,9 +196,25 @@ def build(): # elevation reads as layered stone rather than one flat plane. cube("Hero_Architrave", 0.0, -1.55, ent_z0 + 0.42, FRONTAGE_W, 1.65, 0.84, stone) note("Hero_Architrave", (FRONTAGE_W, 1.65, 0.84), "assumption: stacked entablature bands") - # Cornice under the parapet. - cube("Hero_Cornice", 0.0, -1.6, HEIGHT - PARAPET_H - 0.18, FRONTAGE_W, 1.75, 0.36, stone) + # Cornice under the parapet: a projecting corona carried on a dentil course, + # so the top of the order reads as layered stone with a shadow line rather + # than one flat box. Dentils hang under the corona and stand 0.25 m clear of + # it, which is what gives the elevation its cornice shadow at street level. + cornice_z = HEIGHT - PARAPET_H - 0.18 + cube("Hero_Cornice", 0.0, -1.6, cornice_z, FRONTAGE_W, 1.75, 0.36, stone) note("Hero_Cornice", (FRONTAGE_W, 1.75, 0.36), "assumption: projecting cornice line") + DENTIL_W, DENTIL_D, DENTIL_H, DENTIL_GAP = 0.18, 0.30, 0.22, 0.27 + dentil_y = -2.30 + dentil_z = cornice_z - 0.18 - DENTIL_H / 2.0 + dentil_span = FRONTAGE_W - 2.0 + dentil_count = int(dentil_span / (DENTIL_W + DENTIL_GAP)) + for i in range(dentil_count): + dx = -dentil_span / 2.0 + (DENTIL_W + DENTIL_GAP) * i + DENTIL_W / 2.0 + cube(f"Hero_Dentil_{i + 1}", dx, dentil_y, dentil_z, + DENTIL_W, DENTIL_D, DENTIL_H, stone) + note("Hero_Dentil_xN", (DENTIL_W, DENTIL_D, DENTIL_H), + f"{dentil_count} dentils at {DENTIL_W + DENTIL_GAP:.2f} m centres under the corona; " + "assumption: photographed cornice reads as a dentilled course") cube("Hero_Entablature", 0.0, -0.75, ent_z0 + ENTABLATURE_H / 2.0, FRONTAGE_W, 1.5, ENTABLATURE_H, stone) note("Hero_Entablature", (FRONTAGE_W, 1.5, ENTABLATURE_H), "assumption: entablature depth")