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 f67d200
Browse filesBrowse the repository at this point in the historyBrowse files
fix(showcase): wheelbarrow second quality pass: one-timber shafts, hopper tray
The barrow read as a crate on legs. Each shaft was three boxes: a handle
stopping at the tray's rear corner, a level run hidden exactly under the
side wall, and a fork turning in a 50-degree V to the hub. The tray was a
square box, a spreader stood inside the wheel touching neither fork, and
the iron straps ran 12 mm above the wall tops.
- Each shaft is one mitred sweep grip -> tray rear -> tray front -> axle,
narrowing in plan the whole way, legs and a bearer hung from it.
- The tray is a hopper between a bottom and a top outline: sides flared
15 deg, front raked 30 deg over the wheel, rear leaning 12 deg; end
boards housed into the sides; straps follow the wall and stop below it.
- Seams and seats are measured in each wall's own plane, taken from the
boards' faces; AABB tests lie on leaning boards.
New budgets: shaft runs = 2 (exit 20, --split-shafts), flare >= 10 deg and
rake >= 20 deg (exit 21, --box-tray, same top outline). The handle-join
budget is gone: the handle is the shaft. Outer AABB and tray size re-fitted.
Tris 2536 -> 2440. Same codes 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>
Copy file name to clipboardExpand all lines: showcase/gallery.json
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -169,8 +169,8 @@
169
169
"name": "wheelbarrow",
170
170
"dir": "showcase/wheelbarrow",
171
171
"teaches": "A procedural wooden wheelbarrow through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract.",
172
-
"alt": "A wooden wheelbarrow whose tray walls are stacked boards held by iron straps, with a spoked front wheel and two long handles.",
173
-
"witnessesFix": "Recomputed: 2536 tris, two materials with 1157 wood and 190 metal faces, UVs in 0..1 with zero AABB overlap, outer AABB 1.556×0.630×0.572 m, zmin 0, hygiene 0, wall-floor seat 12 mm, spoke clearance 40 mm, two boards per side and front wall with 2 mm seams, LOD ratios in band (5.2 COLLAPSE leaner on LOD2), convex collider 90 tris, non-empty glTF. --skip-decimate exits 9 on LOD1; --stray-vert exits 15 on hygiene; --lift-z / --short-legs exit 16 on grounded; --fat-spokes / --float-walls / --wide-seams exit 17 on joint fit; --pipe-rim exits 18 on tread aspect.",
172
+
"alt": "A wooden wheelbarrow with a flared tray of stacked boards held by iron straps, its front raked out over a spoked wheel, and two long shafts running from the handles under the tray to the axle.",
173
+
"witnessesFix": "Recomputed: 2440 tris, two materials with 1085 wood and 214 metal faces, UVs in 0..1 with zero AABB overlap, outer AABB 1.563x0.594x0.577 m, zmin 0, hygiene 0, both shafts one timber from grip to axle, tray flared 15 deg and raked 30 deg, wall-floor seat 8 mm, spoke clearance 52 mm, two boards per side and front wall with 2 mm seams measured in the wall's plane, LOD ratios in band (5.2 COLLAPSE leaner on LOD2), convex collider 80 tris, non-empty glTF. --skip-decimate exits 9 on LOD1; --stray-vert exits 15 on hygiene; --lift-z / --short-legs exit 16 on grounded; --fat-spokes / --float-walls / --wide-seams exit 17 on joint fit; --pipe-rim exits 18 on tread aspect; --split-shafts exits 20 on shaft runs; --box-tray exits 21 on tray flare.",
|**Wall boards**| 2 boards per side wall and in the front wall; every seam 0.001–0.004 m | 2 / 2 / 2; 0.00200 |
67
+
|**Wall boards**| 2 boards per side wall and in the front wall; every seam 0.001–0.004 m, measured up the wall's own plane | 2 / 2 / 2; 0.00207–0.00231 |
68
+
69
+
### Form
70
+
71
+
| Axis | Declared | Measured (all three) |
72
+
| --- | --- | --- |
73
+
|**Shaft runs**: wood shells unbroken from behind the tray to past its front | exactly 2 | 2 |
74
+
|**Tray flare / rake**, from the boards' own faces | side ≥ 10°, front ≥ 20° | 15.00° / 30.00° |
65
75
66
76
DECIMATE COLLAPSE triangle counts are **not** identical across series,
67
77
so LOD2 ratios differ slightly. The gate is a ratio band, not an exact
@@ -72,28 +82,56 @@ sorted by edge index, so the face order is the same on every run; a
72
82
Python set of edges handed to the bevel had made it vary. Export byte counts differ on 5.2.1
73
83
(glTF serializer), not a gated axis.
74
84
85
+
### Why the frame is two timbers and the tray a hopper
86
+
87
+
The second pass found the barrow read as a crate on legs. The frame was
88
+
three boxes per side: a handle that stopped at the tray's rear corner, a
89
+
level run hidden exactly under the side wall (both at 0.255 m from the
90
+
centreline), and a fork that started at the front corner and turned
91
+
in a 50° V to the hub. From outside, the tray carried everything. The
92
+
tray itself was a square box, and a spreader between the forks stood
93
+
inside the wheel, touching neither fork. The iron straps ran 12 mm above
94
+
the wall tops.
95
+
96
+
-**Shafts.** Each shaft is one mitred sweep through the grip, the tray's
97
+
rear, its front and the axle. It narrows in plan the whole way (0.27 m
98
+
at the grips, 0.19 and 0.15 m under the tray, 0.038 m at the hub), so
99
+
it shows under the tray and reads as one piece of wood. The legs and a
100
+
stretcher hang from it, and a bearer under the tray front, its ends
101
+
buried in the shafts, replaces the spreader.
102
+
-**Hopper.** The tray is built from a bottom outline and a top outline:
103
+
sides flared 15°, the front raked 30° out over the wheel for tipping,
104
+
the low rear leaning back 12°. Each wall is the planar band between
105
+
its bottom and top edges; the end boards are housed half a board into
106
+
the sides, and the sides run past the ends' outer faces.
107
+
-**Measured in the wall's plane.** A leaning board's outer face sits
108
+
lower than its inner one, so AABB tests lie: a Z seam reads negative
109
+
and a zmin seat reads deep. Seams are measured along each wall's own
110
+
up direction, and the seat on each wall's lowest board's inner face,
111
+
both taken from the boards' own faces.
112
+
-**Straps** follow the flared wall and stop 10 mm below its top.
113
+
114
+
`WALL_SEAT` went from 12 mm to 8 mm: a raked board's outer bottom edge
115
+
sits `WALL_T·sin(RAKE)` below its inner one, and at 12 mm it would have
116
+
broken through the underside of the 22 mm floor. The handle-join budget
117
+
is gone, because the handle no longer joins anything: it is the shaft.
118
+
The shaft-run budget replaces it. Base triangles went from 2536 to 2440,
119
+
and the collider from 90 to 80.
120
+
75
121
### Walls, wood and iron
76
122
77
-
Each tray wall was one plain slab beside a floor of planks, and every
78
-
piece was one flat tone. Side and front walls are now two boards
79
-
stacked with a 2 mm seam, held by the existing straps; the low rear
80
-
wall stays one board. `tray_size` and `wall_floor_seat` now take a side
81
-
wall as the union of its boards. **Wall boards** asserts the count and
82
-
the seam; `--wide-seams` opens the seams to 8 mm (same boards, same
83
-
triangles) and exits 17.
84
-
85
-
The extra boards cost 324 triangles, which would have broken the
86
-
2800 ceiling. They are paid for with faces nobody sees: wall bottoms
87
-
buried in the floor and slat undersides no longer get a bevel (faces
88
-
beveled on some edges come out n-gons and are split, at the same
89
-
triangle count). Base triangles went from 2500 to 2536. Wood has a tone
90
-
and grain per board and shaft; the iron is dark and rusted instead of
91
-
glossy black. The temp `.glb` is removed after its size is measured.
123
+
Side and front walls are two boards stacked with a 2 mm seam, held by
124
+
the straps; the low rear wall stays one board. **Wall boards** asserts
125
+
the count and the seam; `--wide-seams` opens the seams to 8 mm (same
126
+
boards, same triangles) and exits 17. Faces nobody sees get no bevel:
127
+
wall bottoms buried in the floor and slat undersides. Wood has a tone
128
+
and grain per board and shaft; the iron is dark and rusted. The temp
129
+
`.glb` is removed after its size is measured.
92
130
93
131
### Falsifiers
94
132
95
-
Each violates one named budget. All nine were run on 4.5.11, 5.1.2 and
96
-
5.2.1 and returned the same code on each.
133
+
Each violates one named budget. All eleven were run on 4.5.11, 5.1.2
134
+
and 5.2.1 and returned the same code on each.
97
135
98
136
| Flag | Budget violated | Exit |
99
137
| --- | --- | --- |
@@ -102,9 +140,15 @@ Each violates one named budget. All nine were run on 4.5.11, 5.1.2 and
102
140
|`--lift-z`| bounding box `zmin` is 0 | 16 |
103
141
|`--short-legs`| named shoe supports at Z=0 | 16 |
104
142
|`--fat-spokes`| spoke clearance inside the hub | 17 |
105
-
|`--float-walls`| wall-floor seat | 17 |
143
+
|`--float-walls`| wall-floor seat (measures −0.00691 m) | 17 |
106
144
|`--pipe-rim`| tread aspect (torus on a flat felloe) | 18 |
107
145
|`--wide-seams`| wall boards (seam band) | 17 |
146
+
|`--split-shafts`| two unbroken shaft runs (measures 0) | 20 |
0 commit comments