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

+8 -3
View File
@@ -92,9 +92,14 @@ def apply_to_actor(actor, kit, materials=None, prefix=None):
# label and the outliner (and any label-based lookup) becomes ambiguous.
slug = actor.get_actor_label().replace("Frontage_SM_", "").replace("North_", "").lower()
prefix = prefix or f"Kit_{slug}_"
mn, mx = _bounds(comp.static_mesh)
# The frontage meshes are spawned at the world origin and carry their position
# in the mesh, so the bounding box IS world space (actor location is 0,0,0).
# WORLD-space bounds. The imported meshes carry a building-line-local offset in
# their own vertices and the demo builder then positions the actor, so the
# asset's bounding box is NOT world space: using it put every kit piece about
# 12 km east of its building, floating in empty ground where nothing could see
# it. get_actor_bounds() includes the actor transform.
origin_w, extent_w = actor.get_actor_bounds(False)
mn = unreal.Vector(origin_w.x - extent_w.x, origin_w.y - extent_w.y, origin_w.z - extent_w.z)
mx = unreal.Vector(origin_w.x + extent_w.x, origin_w.y + extent_w.y, origin_w.z + extent_w.z)
origin = unreal.Vector(0.0, 0.0, 0.0)
width = mx.x - mn.x
height = mx.z - mn.z
+1
View File
@@ -12,6 +12,7 @@
# -script=<repo>/Tools/ue_import_north_buildings.py -nullrhi -unattended -nopause -stdout
import os
import sys
import unreal