Tie back the Joke Shop curtain bays and add the describe_image vision tool
This commit is contained in:
1 parent
e7d733bc93
commit
e4065c2068
6 files changed
+160
-15
No files matched your search
+34
-14
@@ -498,20 +498,40 @@ func _build_comedy_store_building() -> void:
|
||||
step_body.shape_owner_set_transform(step_owner,
|
||||
Transform3D(Basis(), Vector3(door_x, 0.07, front + 0.92)))
|
||||
root.add_child(step_body)
|
||||
# Red curtains hang between the entrance and the signature wall. Three
|
||||
# narrow folds and a tieback keep them from reading as flat red slabs.
|
||||
for x in [-3.2, 1.9, 7.0, 11.2]:
|
||||
for fold in [-0.27, 0.0, 0.27]:
|
||||
var fold_color := red.lightened(0.10 if fold > 0.0 else 0.0)
|
||||
_add_box(building, Vector3(0.24, 3.10, 0.18),
|
||||
Vector3(x + fold, 2.70, front + 4.56 + absf(fold) * 0.08),
|
||||
fold_color, true, null, Vector2.ONE, "cloth")
|
||||
_add_box(building, Vector3(0.96, 0.16, 0.22),
|
||||
Vector3(x, 2.13, front + 4.60), Color(0.24, 0.02, 0.03),
|
||||
false, null, Vector2.ONE, "cloth")
|
||||
_add_box(building, Vector3(1.06, 0.52, 0.20),
|
||||
Vector3(x, 1.34, front + 4.54), Color(0.34, 0.025, 0.035),
|
||||
false, null, Vector2.ONE, "cloth")
|
||||
# Red tied-back curtains: seven bays between the entrance and the east end.
|
||||
# Each drape is cinched at a tieback into an hourglass, leaving the dark
|
||||
# recess visible on either side, and finishes in a scalloped hem. The taper
|
||||
# plus tone variation makes them read as gathered fabric, not flat slabs.
|
||||
for bay in range(7):
|
||||
var x := -3.2 + float(bay) * 2.4
|
||||
# Top drape tapering down to the tieback (widest under the valence).
|
||||
for top in [[4.05, 1.00], [3.55, 0.80], [3.05, 0.60], [2.55, 0.42]]:
|
||||
_add_box(building, Vector3(top[1], 0.52, 0.20),
|
||||
Vector3(x, top[0], front + 4.56),
|
||||
red.lightened(0.05), true, null, Vector2.ONE, "cloth")
|
||||
# Tieback cord at the narrowest point.
|
||||
_add_box(building, Vector3(0.60, 0.14, 0.24), Vector3(x, 2.15, front + 4.58),
|
||||
Color(0.24, 0.02, 0.03), true, null, Vector2.ONE, "cloth")
|
||||
# Bottom drape flaring down to the hem.
|
||||
for bottom in [[1.85, 0.56], [1.48, 0.82]]:
|
||||
_add_box(building, Vector3(bottom[1], 0.52, 0.20),
|
||||
Vector3(x, bottom[0], front + 4.56),
|
||||
red.lightened(0.11), true, null, Vector2.ONE, "cloth")
|
||||
# Scalloped hem: overlapping shallow spheres along the bottom edge.
|
||||
for hem_i in range(5):
|
||||
var hem_x := -0.46 + 0.23 * float(hem_i)
|
||||
var hem := MeshInstance3D.new()
|
||||
var hem_mesh := SphereMesh.new()
|
||||
hem_mesh.radius = 0.25
|
||||
hem_mesh.height = 0.48
|
||||
hem_mesh.radial_segments = 8
|
||||
hem_mesh.rings = 4
|
||||
hem.mesh = hem_mesh
|
||||
hem.position = Vector3(x + hem_x, 1.24, front + 4.56)
|
||||
hem.scale = Vector3(0.62, 0.36, 0.36)
|
||||
hem.material_override = Materials.flat(red.lightened(0.12), "cloth")
|
||||
hem.cast_shadow = GeometryInstance3D.SHADOW_CASTING_SETTING_ON
|
||||
building.add_child(hem)
|
||||
# Small warm sconces along the black wall. Their bulbs are emissive and each
|
||||
# gets a low-energy practical so the facade is not a black hole after dark.
|
||||
for x in [-12.4, -6.2, 3.0, 9.4]:
|
||||
|
||||
Reference in new issue
Block a user