feat: street-level detail pass — real roads, streetlights, trees, cables
Closes more of the gap to hand-authored city art at eye level: - Kenney City Kit Roads (CC0) installed: every street in the 10x10 grid is now real road meshes — lane-marked straights (single stretched mesh per segment) and line-marked crossroad tiles at all 81 intersections, tinted to sit under the toon lighting without clipping - Kit streetlights (curved arms over the road) along both central avenues, with slim pole colliders kept for grapples - Kenney Nature Kit trees replace the cone/box stand-ins in shrine courtyards and plaza planters (original kit materials kept — the toon swap mangled their vertex colors into cyan) - Overhead cable bundles sag across the east-west streets (the classic urban-Japan sky clutter), drawn as ink lines; central avenue kept clear - Construction sites get cones + barriers from the roads kit - Per-building tint jitter so repeated kit models read as distinct shops Verified via street/aerial captures (dark marked asphalt, green trees, detailed facades); movement 11/11, smoke 0 failures, acoustics ALL PASSED. Co-Authored-By: Claude Fable 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Fable 5
parent
f62f4f2503
commit
04d91dea31
@@ -1,36 +0,0 @@
|
||||
extends SceneTree
|
||||
|
||||
## Dev tool: print AABBs of prop models used by the city builder.
|
||||
|
||||
const PATHS := [
|
||||
"res://assets/props/roads/road-straight.glb",
|
||||
"res://assets/props/roads/road-crossroad-line.glb",
|
||||
"res://assets/props/roads/road-crossing.glb",
|
||||
"res://assets/props/roads/light-curved.glb",
|
||||
"res://assets/props/roads/light-curved-double.glb",
|
||||
"res://assets/props/roads/construction-barrier.glb",
|
||||
"res://assets/props/roads/construction-cone.glb",
|
||||
"res://assets/props/nature/tree_default.glb",
|
||||
"res://assets/props/nature/tree_detailed.glb",
|
||||
"res://assets/props/nature/tree_oak.glb",
|
||||
"res://assets/props/nature/tree_tall.glb",
|
||||
]
|
||||
|
||||
|
||||
func _initialize() -> void:
|
||||
for p in PATHS:
|
||||
var scene = load(p)
|
||||
if scene == null:
|
||||
print("measure: FAILED ", p)
|
||||
continue
|
||||
var inst: Node3D = scene.instantiate()
|
||||
get_root().add_child(inst)
|
||||
var aabb := AABB()
|
||||
var first := true
|
||||
for mi in inst.find_children("*", "MeshInstance3D", true, false):
|
||||
var b: AABB = mi.global_transform * mi.get_aabb()
|
||||
aabb = b if first else aabb.merge(b)
|
||||
first = false
|
||||
print("measure: %s size=%s min=%s" % [p.get_file(), aabb.size, aabb.position])
|
||||
inst.queue_free()
|
||||
quit()
|
||||
@@ -1 +0,0 @@
|
||||
uid://dd4g4l7mg66ro
|
||||
Reference in New Issue
Block a user