fix(blockout): regenerate with --origin; frontage back on the verified spans

The 0.1.2 blockout regeneration ran without --origin, so Blosm centred on the
extract instead of fitting the project frame. The frontage shifted ~119 m in X and
~2.4 m in Y and the hero fell outside the 6902/6838 gap - the verified placement
was silently undone, while every render still looked like a plausible block.

- Blockout regenerated with --origin 34.101545,-118.338718 (affine residual 0.0 cm);
  frontage and north buildings re-exported and re-imported.
- Verified spans restored: 6922 -24276..-17700, 6902 -17749..-14591, hero
  -14644..-12028 between them, theatre -12082..-8210, TCL -22889..-18442,
  Tussaud's -27071..-22799.
- ue_apply_facade_kit now uses get_actor_bounds() (world space). It had used the
  static mesh bounding box, which is building-line-local, so every kit piece was
  placed ~12 km east of its building in empty ground.
- ue_import_north_buildings.py was missing 'import sys' (NameError, exit 255,
  import silently skipped) - the same trap as the hero importer.
- Kit re-applied: 625 pieces across eight buildings; packaged QA still PASS
  (walk, transect 0 holes, wall probe 0/35, facade probe 0/9).
This commit is contained in:
zwitschi committed 2026-11-08 19:32:47 +01:00
1 parent c9d603f754
commit 32dff056c3
48 files changed
+107 -80

No files matched your search

+21
View File
@@ -591,3 +591,24 @@ Scope: facts and traps that cost time to establish. Planned work lives in [TODO.
- The kit meshes are spawned at the world origin with their position baked into
the mesh (like the frontage exports), so placement uses the bbox directly and
must not add the actor location.
## 2026-11-09 — CRITICAL: blockout must be regenerated with --origin
- Regenerating the blockout in 0.1.2 (for the 3.1 m storey height) was run **without
`--origin`**, so Blosm centred on the extract instead of fitting the project frame.
The whole frontage shifted about **119 m in X and 2.4 m in Y**, and the hero ended
up outside the 6902/6838 gap — the "verified placement" was undone silently, and
every render still looked like a plausible block.
- Correct invocation (README documents it, and the affine fit prints
`frame correction residual: max 0.0 cm`):
`blosm_blockout.py --osm … --bounds 34.1006,-118.3422,34.1020,-118.3370
--level-height 3.1 --origin 34.101545,-118.338718 --assets-dir … --out …`
- After re-export + re-import, the frontage spans are back to the verified values:
6922 −24276..−17700, 6902 −17749..−14591, **hero −14644..−12028 between them**,
theatre −12082..−8210, and the north buildings at −22889..−18442 / −27071..−22799.
- **`ue_import_north_buildings.py` also lacked `import sys`**, so its sys.path line
raised NameError and the import silently did nothing (exit 255). Same trap as the
hero importer: these scripts imported only `unreal`.
- Lesson: after any blockout regeneration, probe the staged buildings' world X spans
and compare them with `Geo/verification/2026-11-06-el-capitan-block.md` before
trusting a render. A shift of this size is invisible in a screenshot.