feat: hero facade blockout for 6840 Hollywood Blvd

Tools/hero_facade_build.py builds the north elevation parametrically and writes
a JSON report naming the evidence behind every part: the 25.75 m frontage and
14.5 m height are measured, the 4.96 m column bay comes from the sibling notes
and matches that frontage, the three portal flights follow the photographs (five
risers, overturning the inherited eight-step, 12 m wide claim), and the rest is
labelled assumption.

Tools/ue_hero_facade_import.py imports it with the ue_metric_v1 preset
(2604 x 1257 x 1450 cm, 1892 tris, 4 materials) and places it on the measured
building line of /Game/Hollywood/DemoMap.

Two new review shots at review-04 and review-05, both pending approval. Camera
placement cost four renders: the first two sat inside the facade body, and the
frontage faces Unreal -Y, so a camera has to stand at Y < -1450 cm, not north of
the building line in project terms.
This commit is contained in:
zwitschi committed 2026-11-07 11:42:29 +01:00
1 parent 41fd249b8a
commit c5e30d1c36
14 files changed
+600 -6

No files matched your search

+30 -2
View File
@@ -94,6 +94,23 @@ try:
c.static_mesh_component.set_static_mesh(m)
log(f"staged: {name} at ({x}, 600, 50)")
# Hero facade, if the import has run: two views a reviewer needs — straight on
# from the north sidewalk, and the oblique street view from further west.
hero = unreal.EditorAssetLibrary.load_asset("/Game/Hollywood/ElCapitan/SM_HeroFacade")
# The imported mesh spans Y -7..+1250 cm in local space (front plane at -7, the
# body behind it) and is centred on X. To put the front plane on the block's
# building line the actor goes at Y = building line + 7 cm.
hero_x = -12024.5 + 1302.0
hero_y = -1450.0 + 7.0
if hero:
actor = spawn(unreal.StaticMeshActor, unreal.Vector(hero_x, hero_y, 0.0), "Hero_Facade")
if actor:
actor.static_mesh_component.set_static_mesh(hero)
actor.static_mesh_component.set_mobility(unreal.ComponentMobility.STATIC)
log("staged: hero facade at the measured building line")
else:
log("MISSING: /Game/Hollywood/ElCapitan/SM_HeroFacade (run Tools/ue_hero_facade_import.py)")
shots = spawn(unreal.GigLineShotActor, unreal.Vector(0, 0, 300), "ShotSequencer")
if shots:
shots.set_editor_property("shot_locations", [
@@ -103,6 +120,12 @@ try:
# first-person eye height, just south-east of the character: this is the
# view a player has at spawn, capsule and camera stack in frame
unreal.Vector(120, -260, 165),
# straight on from the north sidewalk at eye height. No camera may sit
# inside the facade body (Y -1443..+250 cm), so both stand north of the
# front plane and look south into the colonnade.
unreal.Vector(hero_x + 200, -3200, 420),
# oblique from the north-west, reading the colonnade in depth
unreal.Vector(hero_x - 2200, -3400, 620),
])
shots.set_editor_property("shot_rotations", [
unreal.MathLibrary.find_look_at_rotation(
@@ -113,11 +136,16 @@ try:
unreal.Vector(200, 100, 200), unreal.Vector(0, 600, 50)),
unreal.MathLibrary.find_look_at_rotation(
unreal.Vector(120, -260, 165), unreal.Vector(-200, 600, 90)),
unreal.MathLibrary.find_look_at_rotation(
unreal.Vector(hero_x + 200, -3200, 420), unreal.Vector(hero_x, hero_y + 400, 760)),
unreal.MathLibrary.find_look_at_rotation(
unreal.Vector(hero_x - 2200, -3400, 620), unreal.Vector(hero_x + 300, hero_y, 700)),
])
shots.set_editor_property("shot_names",
["overview", "character", "scale-cubes", "first-person"])
["overview", "character", "scale-cubes", "first-person",
"hero-facade-front", "hero-facade-oblique"])
shots.set_editor_property("quit_when_done", True)
log("staged: ShotSequencer with 4 cameras")
log("staged: ShotSequencer with 6 cameras")
except Exception as exc: # noqa
log(f"staging failed: {exc!r}")