From 0b447b9afb9a1c28912b25d2a729515ed222a80a Mon Sep 17 00:00:00 2001 From: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com> Date: Tue, 22 Sep 2026 18:38:41 -0400 Subject: [PATCH 1/5] docs(showcase): conventions for shading, material slots, fastener seats and section budgets Adds four conventions from the chopping-block quality pass: equal facets on an organic or turned body read as staves, so smooth it and carry the surface in the material; one substance per material slot; fasteners aimed down the host's surface normal with a radial seat band (--float-rivets, exit 18); a recognisable cross-section asserted as a ratio band (--round-haft, exit 19). Also records that a thickening falsifier scales only the axis its budget measures. Co-Authored-By: Claude Opus 5.5 (1M context) Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com> --- showcase/README.md | 48 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/showcase/README.md b/showcase/README.md index 4808638f..171ea882 100644 --- a/showcase/README.md +++ b/showcase/README.md @@ -48,7 +48,8 @@ entry in `showcase/gallery.json`, and a rendered still. `--sink-tyre` / `--shallow-tenon` put a seat outside its band (exit 18). `--drop-bucket` hides the hung subject (exit 18). `--skew-wheel` / `--turn-posts` break a mirror or placement budget - (exit 19). + (exit 19). `--float-rivets` lifts fasteners off their host (exit 18). + `--round-haft` turns an oval section round (exit 19). A budget with no falsifier witnesses nothing: prove each one fails once, and check the exit code, not just non-zero. @@ -61,7 +62,13 @@ entry in `showcase/gallery.json`, and a rendered still. laid the voussoirs as a lintel, which is 0.62 m shorter and so failed the bounding box (exit 8) instead of the intrados circle fit (exit 19); `--off-circle` replaced it by keeping the whole envelope and wandering - only the radius. `tests/check_falsifier_targets.py` checks the + only the radius. A falsifier that thickens a member scales **only the + axis its budget measures**: `chopping-block`'s `--fat-haft` scaled the + whole haft section, and once the section became an oval the swing-plane + width grew the knob 16 mm past the bounding box, so it exited 8 + instead of 17 on eye clearance. Scaling across the cheeks alone + restored exit 17 with the identical measured clearance. + `tests/check_falsifier_targets.py` checks the declaration statically, and with `--run BLENDER` executes each falsifier and asserts the observed exit matches. - **Hygiene budgets.** Copied combinatorics from @@ -264,10 +271,39 @@ entry in `showcase/gallery.json`, and a rendered still. family above: `15` hygiene, `16` grounded, `17` joint fit, `18` seat conformance and contact, `19` plumb and real-world size. - **Shading is part of the model.** A flat-shaded low-poly body and a - smooth-shaded one are different objects to a viewer. Smoothing a - wobbled 36-gon erases every bit of surface modelling in it and leaves - a featureless drum, so decide per part and say why. Nothing here is - measurable, which is exactly why it has to be looked at. + smooth-shaded one are different objects to a viewer, so decide per + part and say why. Facet what is faceted in life — a chamfered axe + head, a dressed stone. Do not facet an organic or turned surface with + equal facets: `chopping-block`'s flat-shaded 36-gon log read as + coopered staves and the whole block as a tub, and its flat-shaded iron + hoop threw one highlight per facet, a row of piano keys. Smooth those + and carry the surface — bark furrows, growth rings, drying checks — in + the material, while the wobble keeps reading in the silhouette. Mark + every material boundary as a hard edge so a sawn rim stays crisp + against the bark. Nothing here is measurable, which is exactly why it + has to be looked at. +- **One substance, one material slot.** A part made of something else + gets its own slot and its own face floor, even when the colours are + close. `chopping-block`'s hickory haft shared the bark slot, which made + the handle the darkest wood on the piece and would have fissured it + with the bark texture. +- **Fasteners are aimed down the host's surface normal (exit 18).** A + rivet, bolt head or stud on an out-of-round host takes its axis from + the normal of the host's own surface function at its station — not + the radial — and its station is a host section, so the surface under + it is exact rather than a chord. Assert the seat per fastener as a + band measured radially at each vertex's own angle against the host + read off the mesh, plus a proud minimum so the head is visible. + `chopping-block`'s radially aimed rivets seated 1.87 and 2.82 mm + against a 1.5 mm design bite, one edge sunk and the other lifted, + because the log's wobble drops the surface 1.4 mm across one head. + Aimed down the normal both seat at 1.50–1.54 mm. `--float-rivets` is + the falsifier. +- **A section that carries the read is a budget (exit 19).** Where a + cross-section is what makes a part recognisable — an axe handle is + oval, a broom handle is round — assert it as a ratio band at a named + station, measured in the construction frame from a slab that holds + exactly one ring. `--round-haft` is the falsifier. - **Rendered still and gallery entry.** Showcase pieces are visual by definition. The pathology / sidecar exemption does not apply. Call `examples/gallery_framing.check_framing` on the `--output` path only. From b86086f26759f1fc3137c67ee51c3b5d76d07492 Mon Sep 17 00:00:00 2001 From: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com> Date: Tue, 22 Sep 2026 18:38:42 -0400 Subject: [PATCH 2/5] fix(showcase): chopping-block quality pass with rivet-seat and haft-section budgets The log read as a tub: flat-shaded equal facets made staves, the hoop was a flat-shaded stripe with piano-key highlights, the end grain was a triangle-fan sunburst, a pale ring ran round the base, and the haft was a round dowel with a pencil-stub knob in the bark's material. The generator now smooth-shades the log and hoop and carries bark furrows, growth rings and drying checks in the materials, keeps bark down to the ground, builds the hoop as a lapped strip with two rivets aimed down the host normal, and sweeps an oval haft that hooks at the knob in its own material slot. New budgets: rivet seat band and proud minimum (exit 18, --float-rivets) and haft section ratio (exit 19, --round-haft). --fat-haft now thickens across the cheeks only so it still fails on eye clearance. Triangle band, AABB and collider ceiling re-fitted to the new measurements. The temp glTF is removed after measuring. Co-Authored-By: Claude Opus 5.5 (1M context) Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com> --- README.md | 2 +- docs/gallery/assets/chopping-block-hero.webp | Bin 13806 -> 19672 bytes docs/gallery/chopping-block/index.html | 734 +++++++++++++++--- .../chopping-block-contact-sheet.webp | Bin 0 -> 47484 bytes showcase/chopping-block/README.md | 105 ++- showcase/chopping-block/chopping_block.py | 696 ++++++++++++++--- showcase/chopping-block/preview.webp | Bin 13806 -> 19672 bytes showcase/gallery.json | 4 +- 8 files changed, 1306 insertions(+), 235 deletions(-) create mode 100644 docs/gallery/contact-sheets/chopping-block-contact-sheet.webp diff --git a/README.md b/README.md index 5d350cb1..72e3915e 100644 --- a/README.md +++ b/README.md @@ -128,7 +128,7 @@ Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](show Grindstone: a stone wheel on a timber A-frame with an iron axle, hubs, crank, and tray on a dark studio floor Hand pump: a cast-iron village pump on a wooden plinth with a spout and handle on a dark studio floor Signpost: a timber post with two painted fingerboards, iron straps, and a pyramidal cap on a dark studio floor - Chopping block: a hooped timber stump with an embedded axe on a dark studio floor + Chopping block: a bark-sided log round with growth rings and drying checks on its sawn top, a riveted iron hoop, and a felling axe buried in the top, on a dark studio floor Wooden bucket: a coopered pail with a round rope bail through ear rings and chord-lofted iron hoops on a dark studio floor Wall torch: a dressed stone plaque with an iron sconce, wooden haft, and flame on a dark studio floor Tavern stool: a round wooden seat on turned splayed legs with stretchers and iron ferrules on a dark studio floor diff --git a/docs/gallery/assets/chopping-block-hero.webp b/docs/gallery/assets/chopping-block-hero.webp index 7cda9bc941c53b61eeed6bddaaab923945136076..a1327ed485d2f5f10bf3f6beab3440e0fd110ac2 100644 GIT binary patch literal 19672 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 literal 13806 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 diff --git a/docs/gallery/chopping-block/index.html b/docs/gallery/chopping-block/index.html index 38154266..ed708a66 100644 --- a/docs/gallery/chopping-block/index.html +++ b/docs/gallery/chopping-block/index.html @@ -4,18 +4,18 @@ chopping-block — Showcase — Blender Developer Tools - + - + - +