NEON-29: Distinct colors for terraces and floor slab

TerracePlatformA teal, TerraceStepB gold, TerracePlatformB violet,
TerracePlatformC green; explicit neutral floor material. README props
table adds tint column and material ids for communication.
pull/41/head
VinPropane 2026-04-12 00:40:32 -04:00
parent 81ceeaab27
commit b4c0defc29
2 changed files with 35 additions and 20 deletions

View File

@ -21,20 +21,22 @@ The default play space is a **45 × 45** unit flat floor (~2 000 sq units, ~5×
### Props at a glance
| Node | Group | Size (m) | World XZ | Purpose |
|------|-------|----------|----------|---------|
| `Floor` | `walkable` | 45 × 45 | (0, 0) | Main play surface |
| `PrototypeTerminal` | `walkable` | 0.9 × 0.4 | (0, 0) | Interaction target |
| `MoveRejectPedestal` | `walkable` | 1.5 × 1.5 | (7.5, 6.5) | NEON-7 vertical reject |
| `MoveRejectFarPad` | `walkable` | 2.5 × 2.5 | (9, 9) | Near-floor walkable pad; no longer a reject target (horizontal limit removed NEON-29) |
| `Obstacle` | `occluder` | 2 × 2 | (6, 5) | Original occlusion / click-through target |
| `ObstacleB` | `occluder` | 3 × 3 | (10, 5) | Second occluder (wider angle from spawn) |
| `ObstacleC` | `occluder` | 2 × 4 | (5, 12) | Tall occluder, south quadrant |
| `ObstacleD` | `occluder` | 3 × 2 | (8, 16) | Far-south occluder |
| `TerracePlatformA` | `walkable` | 10 × 10, h=0.3 m | (13, 14) | Low raised pad, SE; single-step ascent from floor |
| `TerraceStepB` | `walkable` | 6 × 3, h=0.3 m | (15, 8.5) | Approach step for Platform B; bridges floor → platform |
| `TerracePlatformB` | `walkable` | 6 × 6, h=0.6 m | (15, 13) | Two-level terrace, NW; reached via TerraceStepB |
| `TerracePlatformC` | `walkable` | 8 × 8, h=0.3 m | (14, 14) | Low broad pad, NE; single-step ascent from floor |
Elevated walkables use **distinct albedo tints** in `scenes/main.tscn` so screenshots and discussion can name the right prop (`Mat_terrace_platform_a`, `Mat_terrace_b_step`, etc.). The main **floor** slab uses neutral gray (`Mat_floor_slab`). **Occluders** keep the default mesh gray.
| Node | Group | Tint | Size (m) | World XZ | Purpose |
|------|-------|------|----------|----------|---------|
| `Floor` | `walkable` | Neutral gray | 45 × 45 | (0, 0) | Main play surface |
| `PrototypeTerminal` | `walkable` | Slate blue | 0.9 × 0.4 | (0, 0) | Interaction target |
| `MoveRejectPedestal` | `walkable` | Orange | 1.5 × 1.5 | (7.5, 6.5) | NEON-7 vertical reject |
| `MoveRejectFarPad` | `walkable` | Blue-gray | 2.5 × 2.5 | (9, 9) | Near-floor walkable pad; no longer a reject target (horizontal limit removed NEON-29) |
| `Obstacle` | `occluder` | Default gray | 2 × 2 | (6, 5) | Original occlusion / click-through target |
| `ObstacleB` | `occluder` | Default gray | 3 × 3 | (10, 5) | Second occluder (wider angle from spawn) |
| `ObstacleC` | `occluder` | Default gray | 2 × 4 | (5, 12) | Tall occluder, south quadrant |
| `ObstacleD` | `occluder` | Default gray | 3 × 2 | (8, 16) | Far-south occluder |
| `TerracePlatformA` | `walkable` | **Teal** | 10 × 10, h=0.3 m | (13, 14) | Large SE pad; single-step ascent from floor |
| `TerraceStepB` | `walkable` | **Gold** | 6 × 3, h=0.3 m | (15, 8.5) | NW approach step; bridges floor → TerracePlatformB |
| `TerracePlatformB` | `walkable` | **Violet** | 6 × 6, h=0.6 m | (15, 13) | Upper NW terrace; reached via TerraceStepB |
| `TerracePlatformC` | `walkable` | **Green** | 8 × 8, h=0.3 m | (14, 14) | NE pad; single-step ascent from floor |
### Height variation notes

View File

@ -21,6 +21,9 @@ agent_height = 1.0
agent_radius = 0.4
agent_max_climb = 0.35
[sub_resource type="StandardMaterial3D" id="Mat_floor_slab"]
albedo_color = Color(0.5, 0.5, 0.52, 1)
[sub_resource type="BoxMesh" id="BoxMesh_floor"]
size = Vector3(45, 0.2, 45)
@ -96,8 +99,17 @@ size = Vector3(3, 2, 3)
[sub_resource type="BoxShape3D" id="BoxShape3D_obstacle_d"]
size = Vector3(3, 2, 3)
[sub_resource type="StandardMaterial3D" id="Mat_terrace"]
albedo_color = Color(0.55, 0.52, 0.48, 1)
[sub_resource type="StandardMaterial3D" id="Mat_terrace_platform_a"]
albedo_color = Color(0.15, 0.62, 0.58, 1)
[sub_resource type="StandardMaterial3D" id="Mat_terrace_b_step"]
albedo_color = Color(0.96, 0.72, 0.15, 1)
[sub_resource type="StandardMaterial3D" id="Mat_terrace_platform_b"]
albedo_color = Color(0.58, 0.32, 0.72, 1)
[sub_resource type="StandardMaterial3D" id="Mat_terrace_platform_c"]
albedo_color = Color(0.22, 0.68, 0.38, 1)
[sub_resource type="BoxMesh" id="BoxMesh_terrace_a"]
size = Vector3(10, 0.3, 10)
@ -152,6 +164,7 @@ collision_mask = 3
[node name="MeshInstance3D" type="MeshInstance3D" parent="World/NavigationRegion3D/Floor" unique_id=152652175]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.1, 0)
mesh = SubResource("BoxMesh_floor")
surface_material_override/0 = SubResource("Mat_floor_slab")
[node name="CollisionShape3D" type="CollisionShape3D" parent="World/NavigationRegion3D/Floor" unique_id=409532142]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.1, 0)
@ -247,7 +260,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, -14)
[node name="MeshInstance3D" type="MeshInstance3D" parent="World/NavigationRegion3D/TerracePlatformA" unique_id=3000011]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.15, 0)
mesh = SubResource("BoxMesh_terrace_a")
surface_material_override/0 = SubResource("Mat_terrace")
surface_material_override/0 = SubResource("Mat_terrace_platform_a")
[node name="CollisionShape3D" type="CollisionShape3D" parent="World/NavigationRegion3D/TerracePlatformA" unique_id=3000012]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.15, 0)
@ -260,7 +273,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15, 0, 8.5)
[node name="MeshInstance3D" type="MeshInstance3D" parent="World/NavigationRegion3D/TerraceStepB" unique_id=3000014]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.15, 0)
mesh = SubResource("BoxMesh_terrace_b_step")
surface_material_override/0 = SubResource("Mat_terrace")
surface_material_override/0 = SubResource("Mat_terrace_b_step")
[node name="CollisionShape3D" type="CollisionShape3D" parent="World/NavigationRegion3D/TerraceStepB" unique_id=3000015]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.15, 0)
@ -273,7 +286,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15, 0, 13)
[node name="MeshInstance3D" type="MeshInstance3D" parent="World/NavigationRegion3D/TerracePlatformB" unique_id=3000017]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3, 0)
mesh = SubResource("BoxMesh_terrace_b_platform")
surface_material_override/0 = SubResource("Mat_terrace")
surface_material_override/0 = SubResource("Mat_terrace_platform_b")
[node name="CollisionShape3D" type="CollisionShape3D" parent="World/NavigationRegion3D/TerracePlatformB" unique_id=3000018]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3, 0)
@ -286,7 +299,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 14)
[node name="MeshInstance3D" type="MeshInstance3D" parent="World/NavigationRegion3D/TerracePlatformC" unique_id=3000020]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.15, 0)
mesh = SubResource("BoxMesh_terrace_c")
surface_material_override/0 = SubResource("Mat_terrace")
surface_material_override/0 = SubResource("Mat_terrace_platform_c")
[node name="CollisionShape3D" type="CollisionShape3D" parent="World/NavigationRegion3D/TerracePlatformC" unique_id=3000021]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.15, 0)