diff --git a/assets/models/blender/manifest.json b/assets/models/blender/manifest.json index caaff2e..5823c26 100644 --- a/assets/models/blender/manifest.json +++ b/assets/models/blender/manifest.json @@ -96,14 +96,14 @@ "bollard": { "bounds_godot": { "max": [ - 0.105, + 0.125, 0.975, - 0.105 + 0.125 ], "min": [ - -0.105, + -0.125, 0, - -0.105 + -0.125 ] }, "category": "props", @@ -114,7 +114,7 @@ "path": "assets/models/blender/props/bollard.glb", "replaces": "generated/bollard.glb", "triangles": 138, - "vertices": 225 + "vertices": 221 }, "camera": { "attach": "hand", @@ -439,14 +439,15 @@ "category": "props", "materials": [ "news_blue", + "dark_metal", "glass", "paper", "steel" ], "path": "assets/models/blender/props/newspaper_box.glb", "replaces": "generated/newspaper_box.glb", - "triangles": 244, - "vertices": 528 + "triangles": 300, + "vertices": 648 }, "npc_casual": { "bounds_godot": { diff --git a/assets/models/blender/props/bollard.glb b/assets/models/blender/props/bollard.glb index 4a41d1e..4b95d5e 100644 Binary files a/assets/models/blender/props/bollard.glb and b/assets/models/blender/props/bollard.glb differ diff --git a/assets/models/blender/props/newspaper_box.glb b/assets/models/blender/props/newspaper_box.glb index 598d1e7..2530762 100644 Binary files a/assets/models/blender/props/newspaper_box.glb and b/assets/models/blender/props/newspaper_box.glb differ diff --git a/docs/3d-model-review.md b/docs/3d-model-review.md index a31e97c..15fef51 100644 --- a/docs/3d-model-review.md +++ b/docs/3d-model-review.md @@ -139,11 +139,11 @@ the first candidates for a `vegetation-artist`/lookdev pass. | Prop | Tris | Verdict | | --- | --- | --- | -| `bollard` | 138 | — | +| `bollard` | 138 | accept (2026-11-03 flared base collar) | | `bench` | 560 | — | | `trash_bin` | 228 | — | | `planter_box` | 1,324 | — | -| `newspaper_box` | 244 | — | +| `newspaper_box` | 300 | accept (2026-11-03 recessed slot + door seam) | | `fire_hydrant` | 610 | accept (2026-11-03 rebuild: bolted flange, bonnet cap nut, larger side + front outlets) | | `street_lamp` | 428 | — | | `street_tree` | 2,592 | P1 candidate (flat-shaded clumps) | diff --git a/docs/screenshots/10-prop-gallery.png b/docs/screenshots/10-prop-gallery.png index 5a7ff0f..513a1fa 100644 Binary files a/docs/screenshots/10-prop-gallery.png and b/docs/screenshots/10-prop-gallery.png differ diff --git a/tools/blender_assets.py b/tools/blender_assets.py index a7be8cb..dd4e0de 100644 --- a/tools/blender_assets.py +++ b/tools/blender_assets.py @@ -1254,8 +1254,8 @@ def _shrub(name, center, radii, mat, lumps=7, seed=1, lump=0.42): def build_prop(name): M = lambda n: material(n) # noqa: E731 p = [] - if name == "bollard": # matches generated: r 0.09, h 0.97 - p.append(lathe("Bollard", [(0.105, 0.0), (0.105, 0.04), (0.085, 0.07), (0.08, 0.80), + if name == "bollard": # matches generated: r 0.09, h 0.97; flared base collar + p.append(lathe("Bollard", [(0.125, 0.0), (0.125, 0.05), (0.095, 0.09), (0.08, 0.80), (0.09, 0.84), (0.09, 0.90), (0.06, 0.96), (0.0, 0.975)], M("black_metal"), seg=8, sharp=25)) p.append(lathe("Band", [(0.0815, 0.74), (0.0815, 0.79)], M("reflective"), seg=8, @@ -1299,8 +1299,14 @@ def build_prop(name): p.append(box("Body", (0.42, 0.34, 0.70), (0, 0, 0.45), M("news_blue"), bevel=0.02)) p.append(box("Top", (0.44, 0.38, 0.08), (0, 0.0, 0.84), M("news_blue"), rot=(math.radians(-12), 0, 0), bevel=0.015)) - p.append(box("Window", (0.32, 0.01, 0.22), (0, -0.172, 0.62), M("glass"))) - p.append(box("Paper", (0.26, 0.004, 0.14), (0, -0.168, 0.60), M("paper"))) + # Recessed door frame: a dark inset so the glass reads as a window cut + # into the door rather than a flat decal on the surface. + p.append(box("DoorFrame", (0.36, 0.02, 0.26), (0, -0.152, 0.60), M("dark_metal"), + bevel=0.004)) + p.append(box("Window", (0.30, 0.005, 0.20), (0, -0.157, 0.60), M("glass"))) + p.append(box("Paper", (0.24, 0.004, 0.14), (0, -0.154, 0.60), M("paper"))) + # Door seam above the handle so the door reads as a hinged panel. + p.append(box("DoorSeam", (0.36, 0.003, 0.002), (0, -0.16, 0.72), M("dark_metal"))) p.append(box("Handle", (0.14, 0.03, 0.02), (0, -0.18, 0.47), M("steel"), bevel=0.006)) p.append(box("Coin", (0.06, 0.02, 0.08), (0.14, -0.175, 0.76), M("steel"), bevel=0.005)) elif name == "fire_hydrant": # r 0.19 body, h ~0.76 + flange, bonnet and outlets