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 1c85142
Browse filesBrowse the repository at this point in the historyBrowse files
fix(showcase): garden-gate quality pass: real oak grain, braced side on show, brace-direction witness
- Each member gets its own grain direction from a per-member GrainCo
attribute: warm silver-brown oak with streaks and checks. This replaces
the fingerprint-line texture.
- The straps move onto the ledges, as on a real hook-and-band gate.
- The hero now shows the braced side with the leaf swung 32 degrees, so
the ledges, braces, straps, knuckles and barrel bolt all read.
- The posts get V-groove necks. The flags get knocked corners and 7 mm
joints, and two added flags close the void that showed beneath the
swing.
- New witness: each brace rises from the hinge side. Measured from the
pin axis, brace 0 runs 0.178 to 0.741 m and brace 1 runs 0.215 to
0.703 m. --reversed-braces exits 21.
- 27-run falsifier matrix on 4.5.11 / 5.1.2 / 5.2.1, every run on its
declared code.
- Tris 3936 (band 3700-4200). Framing, asset quality and the asset sheet
pass.
- Contact sheet: luma 0.245, stage 0.202. Saturation is 0.143, just
under the 0.153 floor; this is accepted as the cost of greyed,
weathered oak.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: showcase/garden-gate/README.md
+82-41Lines changed: 82 additions & 41 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,12 @@
1
1
# garden-gate
2
2
3
-

3
+

4
4
5
5
A 900 mm ledged-and-braced garden gate: six vertical oak boards under a
6
6
bow top, nailed to three back ledges with two diagonal braces between
7
-
them, hung from a squared hinge post on two hook-and-band hinges and
8
-
closing against a latch post. A barrel bolt sits on the back, a keeper
7
+
them, hung from a squared hinge post on two hook-and-band hinges whose
8
+
straps are bolted along the top and bottom ledges, and closing against a
9
+
latch post. A barrel bolt sits on the middle ledge, a keeper
9
10
staple on the latch post, a ring pull on the front, and both posts stand
10
11
in sandstone flags. **A showcase piece, not an example** — it witnesses
11
12
no API contract. It asserts that generated geometry meets declared asset
@@ -16,7 +17,7 @@ budgets, recomputed from the finished mesh.
16
17
| Shipped content | Used for |
17
18
| --- | --- |
18
19
|`skills/mesh-editing-and-bmesh`| prisms, revolved knuckles, pins, domes and nail heads, a torus ring, all in one `bmesh`, chamfered with `bmesh.ops.bevel`|
19
-
|`skills/custom-properties`| face attributes:`Part` (what each shell is), `GrainDir` (vertical or horizontal fibre) and `WoodTone` (one tone per board or flag) |
20
+
|`skills/custom-properties`| face attributes `Part` (what each shell is) and `WoodTone` (one tone per board or flag); a point attribute `GrainCo` (each vertex in its member's own along / across / through frame) |
20
21
|`skills/procedural-materials-and-shaders`| weathered oak with grain along each member, a tone per board and grime toward the ground; black forged iron rusting in patches; sandstone flags |
21
22
|`skills/bake-high-to-low`| Cycles tangent-space normal bake, a 24-segment high onto the 12-segment low |
| Knuckle on pin | coaxial ≤ 0.3 mm, clearance 0.3–1.0 mm | 0.000 mm, 0.600 mm (both hinges) |
100
113
| Knuckle seat | −1.0 to −0.2 mm on the hook | −0.500 mm (both) |
101
114
| Plumb shared axis | each pin ≤ 0.2 mm, pins ≤ 0.3 mm apart | 0.000 mm, 0.000 mm |
102
-
| Swing clearance | 8–30 mm past the latch post and keeper | 14.87 mm |
115
+
| Swing clearance | 8–30 mm past the latch post and keeper | 12.96 mm |
116
+
| Brace direction | each brace's upper end ≥ 0.30 m farther from the hinge axis than its lower end | 0.178 → 0.741 m, 0.215 → 0.703 m |
103
117
| Real-world size | gate 0.900 ± 0.003 × 0.960 ± 0.005, post 1.205 ± 0.005 above its flag, strap 0.400 ± 0.005, pin Ø 12 ± 0.5 mm | 0.9000 × 0.9599, 1.2050, 0.3995, 12.000 mm |
104
118
105
119
Real-world size: hook-and-band hinges are usually sized at a third of the
@@ -117,8 +131,10 @@ above the flags.
117
131
rise from the hinge side to the latch side (the strut that carries the
118
132
free edge's weight back down into the bottom hinge); their ends are
119
133
bitten 2 mm into the ledges and their faces sit off the ledges' planes.
120
-
-**Hinges.** The strap is a tapered prism 0.5 mm into the boards, with
121
-
three domed carriage-bolt heads. The knuckle is a revolved tube 6.6 mm
134
+
-**Hinges.** Hook-and-band straps go on the ledged side: each strap is
135
+
a tapered prism lying along the top or bottom ledge, let 0.5 mm into
136
+
it, with three domed carriage-bolt heads through the ledge, so the
137
+
hinge axis sits behind the boards, in line with the ledges. The knuckle is a revolved tube 6.6 mm
122
138
bore, 11.2 mm outside, 40 mm tall, 2 mm taller than the strap so their
123
139
ends are not one plane. The hook is a 14 mm square shank driven 70 mm
124
140
into the hinge post and a 12 mm pin rising through it, chamfered at the
@@ -130,17 +146,28 @@ above the flags.
130
146
rod drawn back inside the gate's edge and its knob), a keeper staple
131
147
bitten 6 mm into the latch post, and a ring pull on a round rose that
132
148
hangs from its staple and leans out at the bottom.
133
-
-**Posts and paving.** Square posts with chamfered arrises and a
134
-
pyramid weathering, sunk 20 mm into the flags. A pad flag under each
135
-
post and four flags across the opening, 12 mm joints, the opening's
136
-
flags 4–6 mm proud or shy of the pads so no two flag tops are one plane.
149
+
-**Posts and paving.** Square posts with chamfered arrises, a V-groove
150
+
necking each one 70 mm below a pyramid weathering, sunk 20 mm into the
151
+
flags. A pad flag under each post, four flags across the opening and
152
+
two more on the side the gate swings to, so the open leaf hangs over
153
+
paving (a gateway is paved where the gate sweeps), 7 mm joints, each flag dressed with knocked-off corners and edges a few
154
+
millimetres out of true, the opening's flags 4–6 mm proud or shy of the
155
+
pads so no two flag tops are one plane.
156
+
-**Timber surface.**`GrainCo` puts every vertex in its member's own
157
+
frame (along the grain, across the face, through the thickness), offset
158
+
per shell, so fibres run up the boards and posts, along the ledges and
159
+
down each brace's diagonal, and no two members share a figure. The oak
160
+
is a low-contrast silver-brown: mid-scale streaks, thin latewood lines
161
+
spaced irregularly, sparse checking cracks, long weathering patches,
162
+
a tone per member and grime toward the ground.
137
163
-**Collider.** One hull per post, one over the gate's timber, one over
138
164
the paving. The ironwork is left out: millimetres of strap and bolt on
139
165
faces the gate's hull already covers.
140
-
-**The still.** The gate is swung 24° open about the measured hinge axis
141
-
for the render only, so the knuckles are seen turning on their pins and
142
-
the keeper shows on the latch post. Every budget is asserted on the
143
-
closed gate.
166
+
-**The still.** Seen from the braced side, so the ledges, the Z of
167
+
braces, the straps and the barrel bolt all read; the gate is swung 32°
168
+
toward the viewer about the measured hinge axis for the render only,
169
+
so the knuckles are seen turning on their pins. Rendered in Cycles with
170
+
denoising. Every budget is asserted on the closed gate.
144
171
145
172
## Findings the budgets forced
146
173
@@ -154,9 +181,18 @@ above the flags.
154
181
to break the swing, but it moves the gate's width before the swing is
155
182
read, so it would fail the real-world size first. `--tight-post` moves
156
183
the latch post instead.
157
-
-**The swing has a limit the other way.** Swung inward the gate's
158
-
hinge-side back corner meets the hinge post at about 35°; the still
159
-
uses 24°.
184
+
-**The swing has a limit the other way.** Swung away from the straps
185
+
the gate's hinge-side corner meets the hinge post; the still swings it
186
+
32° toward the strap side, the way a gate hung on the ledged face opens.
187
+
-**Quality pass findings.** Moving the straps onto the ledges first
188
+
reported four coplanar pairs: a ledge's end chamfer and the strap's end
189
+
chamfer fell on one plane while the ledges stopped 4 mm from the board
190
+
edge; they stop 6 mm in now. Dressing the flags turned each underside
191
+
into an n-gon whose ear-clipped triangles sat within reach of the next
192
+
flag's (all undersides lie at z = 0), two more pairs; the undersides
193
+
are fanned from their centres. The first still left the open leaf
194
+
hanging past the paving's back edge, and the bare floor under it read
195
+
as a black hole; the paving now runs on under the swing.
160
196
161
197
## Conventions walked
162
198
@@ -171,7 +207,7 @@ Every convention in `showcase/README.md`, and whether it applies here.
171
207
| A member is tenoned into its seat | yes | posts into the flags, ledges and straps into the boards, braces into the ledges, the keeper into the post, the hook into the post |
172
208
| Seat conformance (a band: minimum so it cannot float) | yes | each knuckle on its hook (`--lift-gate`), exit 18 |
173
209
| Mirrored assemblies | no | a gate is handed; nothing is mirrored |
174
-
| Material face floors | yes | timber 330, iron 1400, ground 140|
210
+
| Material face floors | yes | timber 400, iron 1400, ground 400|
175
211
| One substance, one slot | yes | oak, forged iron, sandstone |
176
212
| Shading is part of the model | yes | timber and flags faceted; knuckles, pins, domes, rod and ring smooth, every edge over 35° hard |
177
213
| Edge treatment | yes | every prism chamfered; no separate budget, removing the chamfers moves the triangle band first |
@@ -194,7 +230,8 @@ were run on Blender 4.5.11, 5.1.2 and 5.2.1 and exited the declared code.
194
230
|`--offset-knuckle`| knuckle on pin | moves the upper knuckle 1.5 mm along the gate; clearance −0.90 mm | 17 |
195
231
|`--lift-gate`| knuckle seat | lifts everything that hangs 3 mm off the hooks; seat +2.50 mm | 18 |
196
232
|`--tilt-pintle`| plumb shared axis | leans the upper pin 3.4° about the knuckle's mid-height; top 3.96 mm off its foot | 19 |
197
-
|`--tight-post`| swing clearance | sets the latch post 14 mm closer; clearance 0.89 mm | 20 |
233
+
|`--tight-post`| swing clearance | sets the latch post 14 mm closer; clearance −1.04 mm | 20 |
234
+
|`--reversed-braces`| brace direction | mirrors both braces, lower ends at the latch side; brace 0 rises 0.741 → 0.178 m | 21 |
198
235
199
236
## Exit codes
200
237
@@ -224,6 +261,7 @@ wrapper — a crash, never a named check.
224
261
| 18 | Knuckle seat on its hook (`--lift-gate`) |
225
262
| 19 | Pin plumb, shared hinge axis or real-world size (`--tilt-pintle`) |
226
263
| 20 | Swing clearance at the latch post (`--tight-post`) |
264
+
| 21 | A brace does not rise from the hinge side (`--reversed-braces`) |
0 commit comments