You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 63ede13
Browse filesBrowse the repository at this point in the historyBrowse files
fix(showcase): give water-trough rippled water, bolted clipped straps, pegs and a bung
Earlier passes changed only materials. The water was still one flat quad
on a U prism and read flat, and the iron straps wrap the hull's underside,
where the hero camera never sees them. Changes to the geometry:
- water lofted along X (22 stations x 10 strips) under two crossing standing
waves (2.75 mm half-amplitude) damped to zero at the staves, with a 4 mm
meniscus up the wall; the water is the one smooth-shaded material
- each strap carries five domed carriage-bolt heads and ends in a clip
hooked over the stave rim, so the straps read from above
- six trestle pegs: one through each leg across the stretcher tenon and one
down each side stretcher
- a drain bung low in the right end
New budget: bolt seat. Each of exactly 10 bolt heads must have its deepest
vertex inside its strap (signed depth; a BVH gap cannot separate a sunk head
from one resting proud). The new falsifier --float-bolts lifts the heads
0.015 m and exits 21.
Budget changes, justified in the script and README:
- Base triangle band 2800-3500 -> 4300-5200 around the new 4792.
- Outer AABB (1.093, 0.552, 0.5055) -> (1.111, 0.552, 0.512): the bung adds
18 mm in X, the rim clips 7 mm in Z.
- The collider hulls the trough without its sub-2 cm hardware (bolts, pegs,
bung): 76 tris, ceiling 80 unchanged.
- --float-strap now lifts the straps STRAP_FLOAT 0.012 m (was 0.040). The
bolt heads and clips riding on the floated strap widened the AABB past
tolerance, so the probe hit exit 8 before the strap seat. It measures a
0.0117 m gap and exits 18 again.
Evidence (live runs, local):
- .scratch/blender-5.2.1-windows-x64/blender.exe (Blender 5.2.1 LTS) and
.scratch/blender-4.5.11-windows-x64/blender.exe (Blender 4.5.11 LTS):
default exit 0 on both: base_tris 4792, LOD ratios 0.5000/0.2199, faces
wood/metal/water 1656/420/476, bbox (1.1112, 0.5520, 0.5123), collider
76, hygiene all 0, water_gap 0.00249, containment 0 of 120 rays missed,
bolt_bite 0.00347.
- Falsifiers, identical on both versions: --skip-decimate 9, --stray-vert
15, --lift-z 16, --short-legs 16, --box-ends 17, --float-strap 18,
--narrow-hull 19, --open-ends 18 (119 of 120 miss), --slab-ends 20,
--float-bolts 21 (bite -0.01153). tests/check_falsifier_targets.py static
plus --run --only water-trough pass on both binaries.
- Framing (4.5.11 --output): fill y 0.789, margins l .306 r .222 b .050 t .161.
- Contact sheet: luma 0.181 / stage 0.179 / warmth +0.072 / sat 0.137.
- Asset sheet (docs/gallery/asset-sheets/water-trough.webp): clipped straps,
pegged legs and glinting water read. The trough is not the least-designed
object (the hydrant is simpler).
- 5.1.2 was not run.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -123,7 +123,7 @@ Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](show
123
123
<ahref="showcase/park-bench/"><imgsrc="showcase/park-bench/preview.webp"width="24%"alt="Park bench: a wrought-iron bench whose round-bar legs curl into scrolled feet, with wooden slats and a reclined back, on a dark studio floor" /></a>
124
124
<ahref="showcase/wheelbarrow/"><imgsrc="showcase/wheelbarrow/preview.webp"width="24%"alt="Wheelbarrow: a wooden tray with walls of stacked boards and iron straps, a spoked wheel, rear legs, and handles on a dark studio floor" /></a>
125
125
<ahref="showcase/anvil/"><imgsrc="showcase/anvil/preview.webp"width="24%"alt="Anvil: a forged-steel London-pattern anvil with a hammer-polished face on a hooped timber stump, a hammer at its foot" /></a>
126
-
<ahref="showcase/water-trough/"><imgsrc="showcase/water-trough/preview.webp"width="24%"alt="Water trough: a watertight wooden trough with plank ends, rippled water, rust-streaked iron straps and trestle legs on a dark studio floor" /></a>
126
+
<ahref="showcase/water-trough/"><imgsrc="showcase/water-trough/preview.webp"width="24%"alt="Water trough: a staved wooden trough on pegged trestle legs, iron straps bolted and clipped over the rim, rippled water inside and a bung in one end" /></a>
127
127
<ahref="showcase/hitching-post/"><imgsrc="showcase/hitching-post/preview.webp"width="24%"alt="Hitching post: a square timber post with a pyramidal cap, a cross-arm on two knee braces with iron end caps, iron bands wrapped around it, two hitching rings and a nailed horseshoe on a dark studio floor" /></a>
128
128
<ahref="showcase/grindstone/"><imgsrc="showcase/grindstone/preview.webp"width="24%"alt="Grindstone: a sandstone wheel dipping into a water-filled trough on a timber A-frame, with iron axle, hubs and a crank turned toward the viewer, on a dark studio floor" /></a>
129
129
<ahref="showcase/hand-pump/"><imgsrc="showcase/hand-pump/preview.webp"width="24%"alt="Hand pump: a green-enamelled cast-iron village pump with a fluted barrel, ball finial and counterweighted handle on a stepped wooden plinth, a hooped wooden bucket under its spout" /></a>
Copy file name to clipboardExpand all lines: showcase/gallery.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -195,7 +195,7 @@
195
195
"name": "water-trough",
196
196
"dir": "showcase/water-trough",
197
197
"teaches": "A procedural watertight water trough through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract.",
198
-
"alt": "A staved wooden water trough with half-round ends built of three boards, on crossed trestle legs, half full of rippled dark water.",
198
+
"alt": "A staved wooden water trough on pegged trestle legs, iron straps bolted and clipped over its rim, half full of rippled dark water, a bung in one end.",
199
199
"witnessesFix": "Recomputed: 3316 tris, three materials with 1482 wood, 156 metal and 29 water faces, UVs in 0..1 with zero AABB overlap, outer AABB 1.093x0.552x0.5055 m, zmin 0, four shoes planted, each end three lapped boards, end rim span 21 mm, strap BVH gap 0, water-hull gap 2.6 mm, water contained on 66 of 66 rays, hull 1.045x0.466 m, LOD ratios in band, convex collider 68 tris, non-empty glTF. --skip-decimate exits 9; --stray-vert 15; --lift-z/--short-legs 16; --box-ends 17; --float-strap/--open-ends 18; --narrow-hull 19; --slab-ends 20.",
Base triangles rose from **2484 to 3700** in the first quality pass: box
46
48
end slabs and a single extruded U became ten jittered staves, U end-caps,
47
49
continuous straps offset from the legs, and stretchers that meet the
48
50
inner faces. The second pass took them to **3124**: the open U-band ends
49
51
became solid end boards, which close the section with fewer faces. The
50
-
third pass took them to **3316**: each end became three boards.
52
+
third pass took them to **3316**: each end became three boards. The
53
+
fifth pass took them to **4792**: the water became a lofted, rippled
54
+
volume (~900 triangles; it was one flat quad on a U prism), and the
55
+
straps gained ten bolt heads and four rim clips, the trestles six pegs,
56
+
and the right end a bung. The band moved from 2800–3500 to 4300–5200, the
57
+
same ~±10 % slack around the measured count. The collider hulls the
58
+
trough without the sub-2 cm hardware (bolts, pegs, bung): detail that
59
+
small carries no collision meaning. The rim clips are 47 mm wide and
60
+
stay in it. The 5.1.2 column was dropped with this change: the new model
61
+
was measured on 4.5.11 and 5.2.1 only.
51
62
52
63
DECIMATE COLLAPSE triangle counts are **not** identical across series —
53
64
the gate is a ratio band, not an exact count. Bake pixels are
@@ -82,9 +93,10 @@ Recomputed from the generated mesh, not asserted about the script.
82
93
| --- | --- | --- |
83
94
| End-cap rim Z-span (union of an end's boards) | ≤ 0.080 m | 0.0208 |
84
95
| Strap-to-hull BVH gap | ≤ 0.008 m | 0.00000 |
85
-
| Water-to-hull BVH gap | ≤ 0.008 m | 0.00260|
86
-
| Water contained by the end boards | 0 misses over 66 outward rays | 0 of 66|
96
+
| Water-to-hull BVH gap | ≤ 0.008 m | 0.00249|
97
+
| Water contained by the end boards | 0 misses over 120 outward rays | 0 of 120|
87
98
|**End boards** per end | ≥ 3 | 3 |
99
+
| Bolt bite: each of the 10 bolt heads' deepest vertex inside its strap (signed depth) | ≥ 0.002 m, exactly 10 bolts | 0.00347 |
88
100
89
101
### Why the ends are solid boards
90
102
@@ -100,8 +112,8 @@ hull; nothing asked whether anything held it in at the ends.
100
112
along X, from the face's perimeter vertices and from points drawn 50% and
101
113
90% of the way in from the centroid, so the middle of the section is
102
114
tested and not only the rim a band would cover. Every ray must hit
103
-
timber within `1.5 × END_T`. `--open-ends` restores the U-bands: all 66
104
-
rays miss, and the piece exits 18.
115
+
timber within `1.5 × END_T`. `--open-ends` restores the U-bands: 119 of
116
+
the 120 rays miss, and the piece exits 18.
105
117
106
118
### Why each end is three boards
107
119
@@ -138,12 +150,23 @@ The third pass darkened the grazing tint from a pale grey-blue (0.20,
138
150
the surface near grazing, where that tint wins, and it read as a
139
151
painted slab.
140
152
153
+
The fifth pass made the surface geometry. The water is lofted along X,
154
+
`WATER_NX` stations with `WATER_NY` strips across each, under two crossing
155
+
standing waves of `RIPPLE_AMP` that damp to zero at the staves, and a
156
+
`MENISCUS_H` meniscus that climbs the wall over `MENISCUS_W`. The water is
157
+
the one smooth-shaded material, so the key light runs along the crests.
158
+
The straps were invisible from the hero camera, which looks over the rim
159
+
while the straps wrap the hull's underside. Each strap now ends in a clip
160
+
hooked over the rim and carries five domed carriage-bolt heads. The
161
+
trestle legs are pegged through their stretcher tenons, and a drain bung
162
+
sits low in the right end.
163
+
141
164
The fourth pass made the surface read as liquid rather than as a teal panel: larger ripples (noise scale 22 to 7) under a stronger bump (0.08 to 0.30) at roughness 0.03 catch the key as glints, and the render path turns on EEVEE screen-space raytracing (4.2+) so the staves mirror in the water. The iron gets vertically stretched rust runs that dull its metallic response. A lower camera was tried to show the hull straps and rejected: the water surface dropped out of view.
142
165
143
166
### Falsifiers
144
167
145
-
Each violates one named budget. All nine were run on 4.5.11, 5.1.2 and
146
-
5.2.1 and returned the same code on each.
168
+
Each violates one named budget. After the fifth pass all ten were re-run
169
+
on 4.5.11 and 5.2.1 and returned the same code on each.
147
170
148
171
| Flag | Budget violated | Exit |
149
172
| --- | --- | --- |
@@ -152,10 +175,11 @@ Each violates one named budget. All nine were run on 4.5.11, 5.1.2 and
152
175
|`--lift-z`| bounding box `zmin` is 0 | 16 |
153
176
|`--short-legs`| named shoe supports at Z=0 | 16 |
154
177
|`--box-ends`| end-cap rim span | 17 |
155
-
|`--float-strap`| strap-to-hull gap | 18 |
178
+
|`--float-strap`| strap-to-hull gap (straps lifted `STRAP_FLOAT` 0.012 m: gap 0.01169) | 18 |
156
179
|`--narrow-hull`| hull plan vs stated size | 19 |
157
180
|`--open-ends`| water contained by the end boards (restores the open U-band ends) | 18 |
158
181
|`--slab-ends`| end boards per end (restores the one-piece D board; measures 1) | 20 |
182
+
|`--float-bolts`| bolt bite (heads lifted 0.015 m off the strap: −0.01153) | 21 |
159
183
160
184
`--short-legs` lifts the shoes and stretches each leg's foot down to the
161
185
floor, so AABB `zmin` stays 0 (the legs still plant) and the
@@ -164,6 +188,12 @@ whole piece re-ground on the legs. That shrank the AABB by ~10 mm, 0.4 mm
164
188
inside the bounding-box tolerance, and a 1.5 mm model change in this pass
165
189
tipped it to exit 8. With the feet stretched, the envelope moves 1.6 mm.
166
190
191
+
`--float-strap` lifted the straps 0.040 m until the fifth pass. With bolt
192
+
heads and rim clips riding on the straps, that widened the AABB past its
193
+
tolerance and the probe hit exit 8 before the strap-seat budget it exists
194
+
for. It now lifts them `STRAP_FLOAT` (0.012 m), still a 0.0117 m gap
0 commit comments