diff --git a/Docs/setup.md b/Docs/setup.md index 5f09a35..365bf25 100644 --- a/Docs/setup.md +++ b/Docs/setup.md @@ -41,13 +41,12 @@ The archive on disk is **Unreal Engine 5.2.0**, released May 2023, three and a h - No engine fixes from 5.3 through 5.8, and no compatibility with content or plugins authored for newer versions. - Bazzite is not a supported Unreal distribution in any version, so this risk compounds rather than introduces. -Alternative: fetch the current stable release instead, and keep the 5.2.0 archive as a fallback until the newer one is validated. Either way, one version gets pinned in [toolchain.md](toolchain.md) and the other is deleted, because a second engine on disk invites accidental mixing. +**Decision taken 2026-11-06:** fetch the current stable release — `Linux_Unreal_Engine_5.8.4.zip` is downloading — and keep the verified 5.2.0 archive only as a fallback until 5.8.4 launches. Once 5.8.4 validates, delete the 5.2.0 archive and pin 5.8.4 in [toolchain.md](toolchain.md); two engines on disk invite accidental mixing. ## 3. Tooling pins - `[x]` Blender 5.2 LTS (Flatpak) and MPFB 2.0.18 recorded. -- `[-]` Install QGIS and record its version. - The flathub `lts` branch installed **3.28.9** on an end-of-life Qt5 runtime — not an acceptable pin. Mirror the upstream LTR instead: `flatpak install flathub --user org.qgis.qgis//stable`, and if that is also stale, move QGIS into a distrobox container from the Fedora package. Details in [environment.md](environment.md). +- `[x]` Install QGIS and record its version. QGIS **4.2.3**, Flatpak `stable`, runtime `org.kde.Platform 6.11`, bundled PROJ `9.9.0`. The stale `lts` 3.28.9 install is still beside it and should be uninstalled. - `[ ]` Install Blosm in Blender, record its version, and confirm it loads on Blender 5.2. Fall back to a side-by-side Blender 4.5 LTS only for the blockout step if it does not. - `[ ]` Confirm the geo tool Python environment (venv with `pyproj`, `GDAL`, `shapely` from the QGIS or distrobox environment) and record it. diff --git a/Docs/toolchain.md b/Docs/toolchain.md index 4597247..1fcb6a1 100644 --- a/Docs/toolchain.md +++ b/Docs/toolchain.md @@ -10,12 +10,12 @@ Audited 2026-11-06 on the development workstation. | --- | --- | --- | --- | | Bazzite | `45.20261105` (Kinoite, `bazzite-dx-nvidia`), kernel `7.2.15-ogc1.1.fc45` | `ujust update` / `rpm-ostree upgrade` | Booted and default. `44.20261026` retained as rollback. | | NVIDIA driver | `615.78.08`, open kernel module | Bazzite image | Verified: desktop session renders through the RTX 5070 Ti; Vulkan GPU0 is the RTX 5070 Ti on driver `615.78.08`, conformance `1.4.3.3`. | -| Unreal Engine | `5.2.0` archive on disk (CL 25360045, `++UE5+Release-5.2`); `5.8.x` was the planned pin | Epic download, 2026-11-06 | Downloaded, not extracted, **version decision open** — see [setup.md](setup.md#engine-version-decision). | +| Unreal Engine | `5.8.4` — download in progress 2026-11-06; `5.2.0` archive verified on disk as fallback | Epic download | Not extracted yet. Pin becomes 5.8.4 once the archive verifies and the editor launches on Bazzite; see [setup.md](setup.md#engine-version-decision). | | Unreal Linux toolchain | engine-bundled clang | Engine source tree | Not installed. Do not substitute the system compiler. | | Blender | `5.2` LTS (upstream patch `5.2.3`) | Flatpak `org.blender.Blender` | Installed. | | MPFB | `2.0.18` (extension `mpfb`, declares Blender >= 4.2) | Blender extensions platform | Installed. Load-and-export check on 5.2 still pending. | | Blosm | latest release at install time | blosm.com / Gumroad | Not installed. Version must be recorded before first use. | -| QGIS | `3.44.15` LTR targeted; installed flatpak is `3.28.9` | qgis.org / flathub | **Not a valid pin.** The `lts` flatpak branch is 3.28.9 on an end-of-life Qt5 runtime. Replace via `stable` or distrobox, then pin. See [environment.md](environment.md). | +| QGIS | `4.2.3`, Flatpak `stable`, runtime `org.kde.Platform 6.11`; bundled PROJ `9.9.0` | flathub | Installed 2026-11-06. The stale `lts` branch (`3.28.9`, EOL Qt5 runtime) is still installed beside it and should be removed. | | Git | `2.56.0` | Bazzite image | Installed. | | Git LFS | `3.7.1` | `rpm-ostree` layer | Installed; `git lfs install` run, lfs filter active. | | Host build tools | `clang 23.1.4`, `cmake 4.3.0`, `ninja 1.13.2` | `rpm-ostree` layer | Installed. These are host tools, not the engine toolchain. | @@ -36,5 +36,5 @@ Unreal Engine 5.9 is in preview and Unreal Engine 6 has been announced as of Nov 1. **Blosm on Blender 5.2.** Blosm versions historically lag Blender releases. Verify Blosm against the installed Blender 5.2 before the blockout step. If it fails, add a side-by-side Blender 4.5 LTS Flatpak and convert that step's output only; do not mix Blender versions within one asset. 2. **MPFB 2.0.18 on Blender 5.2.** The extension declares Blender >= 4.2 but predates 5.x. The acceptance test is the `0.1.0` requirement to export one MPFB character with baked materials and a deform skeleton and import it into Unreal. -3. **QGIS flatpak tracks a stale LTR.** The flathub `lts` branch is `3.28.9` (2022) on `org.kde.Platform 5.15-21.08`, which is end-of-life. A 2022 QGIS still converts CRS and edits vectors correctly, but its PROJ/GDAL data and processing algorithms are four years behind the current LTR, and the runtime gets no security fixes. Replace it before the geo pipeline depends on it; record whichever version ends up pinned. +3. **Two QGIS installs.** `stable` (4.2.3, current runtime) and the old `lts` (3.28.9, EOL runtime) are both present. Nothing breaks, but launching the wrong one silently gives older PROJ data. Uninstall `lts` and keep one pin. QGIS 4.x also uses Qt6, so any processing recipe copied from a 3.x tutorial needs re-checking before it is trusted. 4. **Driver and Vulkan validation on Bazzite.** Not an officially supported Unreal distribution. Validate before asset production, as `ROADMAP.md` requires. diff --git a/Geo/manifests/local-origin.md b/Geo/manifests/local-origin.md index 9a3afe4..cd41b3b 100644 --- a/Geo/manifests/local-origin.md +++ b/Geo/manifests/local-origin.md @@ -15,22 +15,41 @@ NAD83 rather than WGS84 is deliberate: it is the CRS the US national elevation a | Definition | Hollywood Blvd × North Highland Avenue intersection node, on the boulevard centreline | | WGS84 | lat 34.101545, lon −118.338718 | | OSM node | the single shared node between the `Hollywood Boulevard` and `North Highland Avenue` ways in `Geo/raw/osm-api-map-2026-11-06.osm` | -| EPSG:26911 easting / northing | **to be computed** — see below | +| EPSG:26911 easting / northing | **E 376 515.389 / N 3 774 224.083** (NAD83, UTM 11N, metres) | | Rationale | a real, data-defined, reproducible point at the demo block's east boundary; no surveyed control point exists for this project | The origin is not "the hero building" on purpose: a building may later move a metre or two as verification corrects it, while an intersection node is fixed by the source data. -### Pending value +### How the pair was computed -The projected pair is not filled in yet because neither `pyproj` nor the PROJ command line tools are installed on this workstation (`Docs/environment.md`), and inventing a number that later disagrees with QGIS would be worse than leaving it blank. Fill it in the QGIS step: +Computed 2026-11-06 with PROJ **Rel. 9.9.0 (2026-09-15)**, taken from the QGIS 4.2.3 Flatpak, because neither `pyproj` nor the PROJ command line is installed on the host: ```bash -python3 -c "from pyproj import Transformer; \ - t=Transformer.from_crs('EPSG:4326','EPSG:26911',always_xy=True); \ - print(t.transform(-118.338718, 34.101545))" +P=$(ls -d ~/.local/share/flatpak/app/org.qgis.qgis/x86_64/stable/*/files | head -1) +printf -- '-118.338718 34.101545\n' | LD_LIBRARY_PATH="$P/lib" "$P/bin/proj" \ + +proj=utm +zone=11 +datum=NAD83 -f '%.3f' +# 376515.389 3774224.083 ``` -Record the printed easting/northing back into this table and note the PROJ version used. +Reproduce it the same way, or with `pyproj` once a geo environment exists. If a future PROJ reports a different pair, the new value wins and this table is updated with the PROJ version that produced it. + +## Projected control points + +Optional check values, all NAD83 / UTM 11N, and the same points as local X/Y relative to the origin. Use them to confirm a transformation before trusting a blockout. + +| Point | WGS84 lat, lon | Easting | Northing | Local X | Local Y | +| --- | --- | ---: | ---: | ---: | ---: | +| Hollywood × Orange Dr | 34.101543, −118.341749 | 376 235.784 | 3 774 227.529 | −279.605 | +3.446 | +| **Origin: Hollywood × Highland** | 34.101545, −118.338718 | **376 515.389** | **3 774 224.083** | 0.000 | 0.000 | +| Hero NW corner | 34.101412, −118.340299 | 376 369.380 | 3 774 211.202 | −146.009 | −12.881 | +| Hero NE corner | 34.101412, −118.340019 | 376 395.144 | 3 774 210.864 | −120.245 | −13.219 | +| Hero SW corner | 34.100919, −118.340299 | 376 368.662 | 3 774 156.533 | −146.727 | −67.550 | +| Hero SE corner | 34.100919, −118.340019 | 376 394.427 | 3 774 156.195 | −120.962 | −67.888 | +| Mid-block crossing | 34.101552, −118.340338 | 376 365.958 | 3 774 226.819 | −149.431 | +2.736 | + +Cross-check: the hero's projected corners differ by 25.76 m east–west and 54.67 m north–south, matching the 25.7 × 54.9 m footprint measured in [../verification/2026-11-06-el-capitan-block.md](../verification/2026-11-06-el-capitan-block.md). The two methods agree, so the transformation and the origin are consistent. + +Note the sign pattern: the whole block lies at **negative X** and the hero at **negative Y**, which is expected with the origin at the block's east boundary. ## Axis convention diff --git a/ROADMAP.md b/ROADMAP.md index d31f1be..2d74036 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -29,7 +29,7 @@ Status detail in [Docs/setup.md](Docs/setup.md); workstation audit in [Docs/envi - [x] Save a versioned OSM extract; document date, bounds, and source in `Geo/`. - [-] Acquire separately licensed elevation data if needed. Needed: measured relief is 3.94 m over the block (`Geo/verification/2026-11-06-elevation.md`). Source chosen: USGS 3DEP 1 m DEM, public domain, vertical datum NAVD88. - [ ] Download the 3DEP 1 m DEM for the demo bounds, reproject it to EPSG:26911 with the recorded origin and vertical datum, and record the source, clip bounds, and checksum in `Geo/`. -- [-] In QGIS, set a suitable local projected CRS (e.g. EPSG:26911) and record a local origin. CRS and origin point are fixed in `Geo/manifests/local-origin.md`; the EPSG:26911 easting/northing still has to be computed with PROJ/QGIS, which also confirms the transformation. +- [x] In QGIS, set a suitable local projected CRS (e.g. EPSG:26911) and record a local origin. EPSG:26911, origin and projected easting/northing are recorded in `Geo/manifests/local-origin.md` with PROJ 9.9.0 control points; QGIS 4.2.3 is installed for the DEM reprojection step. - [x] Verify the address, building footprints, and demo boundaries for 6840 Hollywood Blvd against source data. - [ ] Import OSM blockouts through Blosm; clean and detail them in Blender. - [ ] Preserve geographic coordinates in metadata; define explicit meter→centimeter conversion to local Unreal coordinates.