frontage: south block frontage, plus the placement bug it exposed
Adds the five remaining verified south-side buildings to the demo block (6922, 6902, 6838 El Capitan Theatre, 6822 Budget, 6806-6820, 6800 Lee Drug), exported in place from the OSM blockout by Tools/export_block_frontage.py, imported to /Game/Hollywood/Frontage/ and staged by the demo builder with the look material set (stone for the theatres, stucco for the retail run). Adding neighbours exposed a pre-existing placement bug that was invisible while the hero facade stood alone in an empty field: - UE south is +Y here (south sidewalk Y +718..+1447), but the hero sat at Y -1450 on the NORTH side of the street. - It was also at X -12024..-9420, 26 m east of the 6840 footprint; the frontage gap between 6902 and 6838 is X -14591..-12082. - The two north-side buildings were on the SOUTH side, because their exporter mirrored Y. Fixes: hero moved to X -13336 / Y +1307, inside its frontage gap; the frontage and north-building exporters no longer apply a Y mirror (the FBX preset already lands Blender -Y south on UE +Y south); player start and demo cameras moved to the north sidewalk looking south; sun raised to pitch -62 so both frontages read instead of the north side silhouetting. Result: the demo is a street - continuous south frontage with the hero in it, both sidewalks, the road with the designated crossing, and the north-side buildings across the road. Screenshots re-rendered and approved by the owner. Squash of branch frontage-block-0.1.0 (PR #6).
This commit is contained in:
1 parent
62a41bf904
commit
fee26ade10
41 files changed
+330
-83
No files matched your search
@@ -40,27 +40,11 @@ def main():
|
||||
mat.use_nodes = False
|
||||
mesh.materials.append(mat)
|
||||
|
||||
# The blockout sits with the hero (6840, south side) at negative Y. The two
|
||||
# in-scope north buildings must land ACROSS Hollywood Blvd at positive Y in
|
||||
# Unreal. Mirror the exported geometry across the road centreline (Y=0) and
|
||||
# reverse winding; the FBX exporter does not do this for us.
|
||||
new_mesh = mesh.copy()
|
||||
new_obj = obj.copy()
|
||||
new_obj.data = new_mesh
|
||||
new_obj.matrix_world = obj.matrix_world.copy()
|
||||
bpy.context.collection.objects.link(new_obj)
|
||||
import mathutils as mu
|
||||
world = new_obj.matrix_world
|
||||
inv = world.inverted()
|
||||
for v in new_mesh.vertices:
|
||||
wp = world @ v.co
|
||||
wp.y = -wp.y
|
||||
v.co = inv @ wp
|
||||
for poly in new_mesh.polygons:
|
||||
verts = list(poly.vertices)
|
||||
verts.reverse()
|
||||
poly.vertices = verts
|
||||
new_mesh.update()
|
||||
# No copy and no Y mirror: the FBX preset already lands Blender +Y
|
||||
# (north) on Unreal -Y, and UE north is -Y here (north sidewalk
|
||||
# Y -1912..-1053). The old mirror put both buildings on the south side.
|
||||
new_obj = obj
|
||||
new_mesh = mesh
|
||||
bpy.ops.object.select_all(action="DESELECT")
|
||||
new_obj.select_set(True)
|
||||
bpy.context.view_layer.objects.active = new_obj
|
||||
@@ -80,6 +64,7 @@ def main():
|
||||
path_mode="AUTO",
|
||||
bake_space_transform=False,
|
||||
)
|
||||
world = new_obj.matrix_world
|
||||
zs = [(world @ v.co).z for v in new_mesh.vertices]
|
||||
print(f"[north] {name:22} verts {len(new_mesh.vertices):5} z {min(zs):+.2f}..{max(zs):+.2f} m "
|
||||
f"-> {path}")
|
||||
|
||||
Reference in new issue
Block a user