Skip to content

Commit c78462f

Browse files
TMHSDigitalclaude
andauthored
fix: water-trough third quality pass; exit-pre-sidecar finding (#250)
* fix(showcase): water-trough third pass: board-built ends, darker water Each end was one D-shaped slab, the case the "a head or bottom is boards" rule exists for. Each end is now three vertical boards of uneven width, each with its own tone, its bottom following the hull arc under its own span, lapped 1 mm into its neighbours so the joint is tight (no seam for water or a containment ray) and the bevel shows it as a groove. The rim span is read on the union of an end's boards. New budget: end boards per end >= 3 (exit 20, --slab-ends restores the one-piece board, measures 1). The water's grazing tint went from a pale grey-blue that read as a painted slab to a deep teal. Tris 3124 -> 3316 (four arc samples per board cost 3556, over the unchanged 3500 ceiling; three are used). Same codes and values on 4.5.11, 5.1.2 and 5.2.1. Asset sheet added. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com> * docs(showcase): vessel ends are boards too, lapped where they hold water Extends "a head or bottom is boards, not a slab" to any end that closes a vessel: lap watertight boards a millimetre rather than leaving a through seam, and read rim tests on the union of an end's boards. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com> --------- Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
1 parent b94b5ee commit c78462f

10 files changed

Lines changed: 243 additions & 62 deletions

File tree

34.3 KB
Loading
738 Bytes
Loading
374 Bytes
Loading

‎docs/gallery/index.html‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1058,12 +1058,12 @@ <h2><a href="anvil/">anvil</a></h2>
10581058
</article>
10591059
<article class="card" data-tags="mesh export showcase">
10601060
<a class="card-media" href="water-trough/" tabindex="-1" aria-hidden="true">
1061-
<img src="assets/water-trough-hero.webp" alt="A staved wooden water trough with solid half-round end boards on crossed trestle legs, half full of dark water." loading="lazy" decoding="async" />
1061+
<img src="assets/water-trough-hero.webp" alt="A staved wooden water trough with half-round ends built of three boards, on crossed trestle legs, half full of dark water." loading="lazy" decoding="async" />
10621062
</a>
10631063
<div class="card-body">
10641064
<h2><a href="water-trough/">water-trough</a></h2>
10651065
<p class="teaches">A procedural watertight water trough through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract.</p>
1066-
<p class="witnesses"><span class="tag">witnesses</span> Recomputed: 3700 tris, three materials with 1674 wood, 156 metal and 29 water faces, UVs in 0..1 with zero AABB overlap, outer AABB 1.093×0.552×0.504 m, zmin 0, four shoes planted, U end-cap rim span 5 mm, strap BVH gap 0, water-hull gap 2.6 mm, hull 1.045×0.466 m, LOD ratios in band, convex collider 64 tris, non-empty glTF. --skip-decimate exits 9; --stray-vert 15; --lift-z/--short-legs 16; --box-ends 17; --float-strap 18; --narrow-hull 19.</p>
1066+
<p class="witnesses"><span class="tag">witnesses</span> 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.</p>
10671067
<a class="card-link" href="water-trough/">View showcase piece<span class="sr-only"> water-trough</span> <span aria-hidden="true">&rarr;</span></a>
10681068
</div>
10691069
</article>

‎docs/gallery/water-trough/index.html‎

Lines changed: 106 additions & 31 deletions
Large diffs are not rendered by default.

‎showcase/README.md‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,14 @@ entry in `showcase/gallery.json`, and a rendered still.
458458
not by a radius: a quarter of the head's width is smaller than any
459459
"round" test built for the whole disk. `--one-piece-head` /
460460
`--one-piece-bottom` are the falsifiers.
461+
462+
The same holds for any end that closes a vessel. `water-trough`'s ends
463+
were one D-shaped slab each; they are three vertical boards. Where the
464+
boards must also hold water, lap them a millimetre into each other
465+
rather than leaving a seam: a through gap leaks, and lets a containment
466+
ray through, while the bevel on the boards' face edges still shows the
467+
joint. Read any rim test on the union of an end's boards, or a board's
468+
inner edge at a joint is taken for the rim (`--slab-ends`).
461469
- **Rope is laid, not piped.** A smooth tube with a rope material is a
462470
plastic hose. Loft a three-lobed section and turn it one vertex step per
463471
ring, so each lobe winds along the path as a strand. That costs the same

‎showcase/gallery.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,8 @@
195195
"name": "water-trough",
196196
"dir": "showcase/water-trough",
197197
"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 solid half-round end boards on crossed trestle legs, half full of dark water.",
199-
"witnessesFix": "Recomputed: 3700 tris, three materials with 1674 wood, 156 metal and 29 water faces, UVs in 0..1 with zero AABB overlap, outer AABB 1.093×0.552×0.504 m, zmin 0, four shoes planted, U end-cap rim span 5 mm, strap BVH gap 0, water-hull gap 2.6 mm, hull 1.045×0.466 m, LOD ratios in band, convex collider 64 tris, non-empty glTF. --skip-decimate exits 9; --stray-vert 15; --lift-z/--short-legs 16; --box-ends 17; --float-strap 18; --narrow-hull 19.",
198+
"alt": "A staved wooden water trough with half-round ends built of three boards, on crossed trestle legs, half full of dark water.",
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.",
200200
"hero": "docs/gallery/assets/water-trough-hero.webp",
201201
"preview": "showcase/water-trough/preview.webp",
202202
"tags": [

‎showcase/water-trough/README.md‎

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# Water trough
22

33
A showcase piece, not an example. Procedural staved water trough on a
4-
timber stand (watertight U-hull, solid end boards, contained water, iron
4+
timber stand (watertight U-hull, board-built ends, contained water, iron
55
straps, trestle legs) then the shipped pipeline: unique-cell UVs, Cycles
66
high-to-low normal bake, LOD chain, convex collider, Unity glTF export.
77

88
The hull, ends, straps and water all sample the same YZ arc. Each end
9-
is a solid board whose bottom follows the hull's outer arc and whose top
10-
is level, and the staves tenon into it. It is neither a bounding-box slab
9+
is three vertical boards whose bottoms follow the hull's outer arc and
10+
whose tops are level, and the staves tenon into them. It is neither a bounding-box slab
1111
around the U (`--box-ends`) nor an open U-band (`--open-ends`). Straps sit at `STRAP_X`, offset from `LEG_X`, so the trestle does not
1212
punch through the iron. Stretchers span the inner faces of the legs.
1313
`--round-band` is not used; `--float-strap` is the seat falsifier.
@@ -33,20 +33,21 @@ materials, UVs, evaluated LOD, collider, or export file.
3333

3434
| Axis | Declared | Measured (4.5.11 / 5.1.2 / 5.2.1) |
3535
| --- | --- | --- |
36-
| Base triangles | 2800–3500 | 3124 / 3124 / 3124 |
36+
| Base triangles | 2800–3500 | 3316 / 3316 / 3316 |
3737
| LOD1 ratio | 0.32–0.62 of base | 0.5000 / 0.5000 / 0.5000 |
38-
| LOD2 ratio | 0.10–0.35 of base | 0.2200 / 0.2200 / 0.2200 |
39-
| Materials | exactly 3 distinct; ≥24 wood, ≥24 metal, ≥6 water | 3 slots; 1386 / 156 / 29 |
38+
| LOD2 ratio | 0.10–0.35 of base | 0.2195 / 0.2195 / 0.2195 |
39+
| Materials | exactly 3 distinct; ≥24 wood, ≥24 metal, ≥6 water | 3 slots; 1482 / 156 / 29 |
4040
| UVs | in `0..1`, AABB overlap ≤ 1e-5 | in range, overlap 0 |
4141
| Outer AABB | (1.093, 0.552, 0.5055) m ± 0.01 | (1.0932, 0.5520, 0.5055), zmin 0 |
42-
| Collider tris | ≤ 80 | 64 |
43-
| Export | written, size > 0 | 228520 / 228520 / 228504 bytes |
42+
| Collider tris | ≤ 80 | 68 |
43+
| Export | written, size > 0 | 242240 / 242240 / 242224 bytes |
4444

4545
Base triangles rose from **2484 to 3700** in the first quality pass: box
4646
end slabs and a single extruded U became ten jittered staves, U end-caps,
4747
continuous straps offset from the legs, and stretchers that meet the
4848
inner faces. The second pass took them to **3124**: the open U-band ends
49-
became solid end boards, which close the section with fewer faces.
49+
became solid end boards, which close the section with fewer faces. The
50+
third pass took them to **3316**: each end became three boards.
5051

5152
DECIMATE COLLAPSE triangle counts are **not** identical across series —
5253
the gate is a ratio band, not an exact count. Bake pixels are
@@ -79,10 +80,11 @@ Recomputed from the generated mesh, not asserted about the script.
7980

8081
| Axis | Declared | Measured (all three) |
8182
| --- | --- | --- |
82-
| End-cap rim Z-span | ≤ 0.080 m | 0.0050 |
83+
| End-cap rim Z-span (union of an end's boards) | ≤ 0.080 m | 0.0208 |
8384
| Strap-to-hull BVH gap | ≤ 0.008 m | 0.00000 |
8485
| Water-to-hull BVH gap | ≤ 0.008 m | 0.00260 |
8586
| Water contained by the end boards | 0 misses over 66 outward rays | 0 of 66 |
87+
| **End boards** per end | ≥ 3 | 3 |
8688

8789
### Why the ends are solid boards
8890

@@ -101,6 +103,23 @@ tested and not only the rim a band would cover. Every ray must hit
101103
timber within `1.5 × END_T`. `--open-ends` restores the U-bands: all 66
102104
rays miss, and the piece exits 18.
103105

106+
### Why each end is three boards
107+
108+
The third pass found each end was one D-shaped slab: a single board
109+
from rim to rim, one tone, no joint, the thing the showcase's "a head or
110+
bottom is boards, not a slab" rule exists to prevent (end orthos,
111+
end-cap close-ups, the hero). Each end is now three vertical boards of
112+
uneven width (`END_BOARD_FRACS`), each with its own tone and grain, its
113+
bottom following the hull arc under its own span. Neighbours lap 1 mm
114+
into each other (`END_BOARD_LAP`), so the joint is tight: a through
115+
seam would let the water out and a containment ray through, and the
116+
bevel on each board's face edges shows the joint as a groove. The rim
117+
span is now read on the union of an end's boards, so the inner edge of
118+
a board at a joint is not taken for the end's rim. Each board follows
119+
the arc with three samples (`END_BOARD_SAMPLES`); four cost 3556
120+
triangles, over the 3500 ceiling. `--slab-ends` restores the one-piece
121+
board and exits 20.
122+
104123
### Surface
105124

106125
Staves, boards and legs came out of one flat material, so every board was
@@ -114,10 +133,14 @@ either mirrored as a white sheet or showed nothing, and its spill lifted
114133
the dark stage. The fill dropped from 68% to 50%, so the inner stave
115134
walls show above the waterline; at 68% the surface sat nearly flush with
116135
the rim and read as felt in a frame. Straps widened from 28 to 40 mm.
136+
The third pass darkened the grazing tint from a pale grey-blue (0.20,
137+
0.27, 0.29) to a deep teal (0.055, 0.105, 0.115): the hero looks across
138+
the surface near grazing, where that tint wins, and it read as a
139+
painted slab.
117140

118141
### Falsifiers
119142

120-
Each violates one named budget. All eight were run on 4.5.11, 5.1.2 and
143+
Each violates one named budget. All nine were run on 4.5.11, 5.1.2 and
121144
5.2.1 and returned the same code on each.
122145

123146
| Flag | Budget violated | Exit |
@@ -130,6 +153,7 @@ Each violates one named budget. All eight were run on 4.5.11, 5.1.2 and
130153
| `--float-strap` | strap-to-hull gap | 18 |
131154
| `--narrow-hull` | hull plan vs stated size | 19 |
132155
| `--open-ends` | water contained by the end boards (restores the open U-band ends) | 18 |
156+
| `--slab-ends` | end boards per end (restores the one-piece D board; measures 1) | 20 |
133157

134158
`--short-legs` lifts the shoes and stretches each leg's foot down to the
135159
floor, so AABB `zmin` stays 0 (the legs still plant) and the
@@ -150,6 +174,7 @@ blender --background --python water_trough.py -- --box-ends
150174
blender --background --python water_trough.py -- --float-strap
151175
blender --background --python water_trough.py -- --narrow-hull
152176
blender --background --python water_trough.py -- --open-ends
177+
blender --background --python water_trough.py -- --slab-ends
153178
blender --background --python water_trough.py -- --output trough.png
154179
```
155180

@@ -183,3 +208,4 @@ hygiene and joint-fit family.
183208
| 17 | Joint fit: end-cap U-rim span (`--box-ends`) |
184209
| 18 | Seat: strap or water BVH gap (`--float-strap`), or water not contained by the end boards (`--open-ends`) |
185210
| 19 | Hull length or width off the stated real-world size (`--narrow-hull`) |
211+
| 20 | An end is fewer than three boards (`--slab-ends`) |

‎showcase/water-trough/preview.webp‎

676 Bytes
Loading

0 commit comments

Comments
 (0)