feat(showcase): add butter-churn - #256
Merged
Merged
Conversation
The butter churn was the first unclaimed standalone showcase candidate. What an envelope check cannot see on a churn is whether the dasher can plunge: the body narrows toward the top, so a plunger that clears the staves at rest can jam a hand's width up the stroke while it still sits inside the body untouched. The piece reads the inner wall off the staves and the plunger's reach off the dasher and asserts a 400 mm stroke floor; --wide-dasher exits 20 at 140 mm while every other budget and the envelope still pass. Also asserts every stave on the floor, a three-board bottom, the handle biting the slats, hoops seated vertex-for-vertex on the staves, the lid on the stave tops and the handle clearing its hole, each with a falsifier proven on 4.5.11, 5.1.2 and 5.2.1. The ox-cart tongue entry moves behind the bookshelf: it was a restock placed ahead of older candidates, and it needs the yoke as its hitch partner. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
showcase/butter-churn: a plunge churn with a maple cross dasher whose handle rises through the lid. The body is sixteen tapered oak staves that narrow toward the top, bound by three iron hoops. It has a three-board bottom set in a croze and a two-board lid with a hole for the handle.Selection: the first entry in the pool was the ox-cart tongue I added as a restock in #255. I moved it behind the bookshelf rather than building it now:
The churn is the next unclaimed standalone prop. There were no open PRs, and the only
feat/showcase-*ref is already-merged work.Binaries (all local,
.scratch/):blender-4.5.11-windows-x64reportsBlender 4.5.11 LTSblender-5.1.2-windows-x64reportsBlender 5.1.2blender-5.2.1-windows-x64reportsBlender 5.2.1 LTSThe budget that matters: plunge stroke (exit 20)
The body narrows toward the top, so a plunger that clears the staves at rest can jam partway up. It still sits inside the body without touching it, the handle still clears the lid and the envelope does not move.
The piece reads the inner wall off the staves ring by ring and the plunger's reach off the slats. It then finds how far the plunger can rise before it comes within 10 mm of the wall, or reaches the lid, and asserts a 400 mm floor.
--wide-dasherUnder
--wide-dasherthe plunger still clears the staves at rest, and every other budget passes. live-run-provenFalsifiers: exit codes per binary (live-run-proven)
--skip-decimate--stray-vert--lift-z--short-stave--one-piece-bottom--short-handle--float-hoops--float-lid--tight-hole--wide-dasher--output--skip-decimate--stray-vert--lift-z--short-stave--one-piece-bottom--short-handle--float-hoops--float-lid--tight-hole--wide-dasherEnvelope: every falsifier leaves the AABB unchanged. live-run-proven
Checks run locally
tests/check_falsifier_targets.py: the static check passes.--run <BLENDER> --only butter-churnpasses all 10 falsifiers on each of the three binaries. live-run-proventests/smoke/run_example.py --forbid-skip:[PASS] butter-churnon 4.5.11, 5.1.2 and 5.2.1. live-run-provenOther local checks:
check_exit_code_readme,check_import_export_rules,check_engine_id,check_gallery_images,test_harness34 showcase pieces, no drift)All pass. live-run-proven
Determinism: every budget value is byte-identical across the three binaries. The only difference is the glTF byte count: 239796 on 5.2.1 against 239804 on the others, which is exporter metadata. There is no RNG. Check-only wall-clock is about 1.8 s. live-run-proven
Remote-only checks: the ecosystem drift check and the 4.5 / 5.1 / 5.2 smoke jobs are CI-proven on this PR.
Fix cycles (live-run-proven unless marked)
240 coplanar cross-shell pairs. Neighbouring stave feet and tops, the two lid boards, and the bottom boards (faces and a rim chord the seams split) each shared a plane. The fixes:
The count is now 0.
Collider steal.
--float-hoopsfirst exited 11 (collider 242 against 240) instead of 18. The hoops add nothing to collide with, so they came out of the body hull and the ceiling was not raised. The collider is now 178 triangles, and the falsifier exits 18.Framing (inspection-only for the look, measured by the gate). The first render filled 0.944 tall, over the gate's 0.90 cap, and exited 10. The camera was pulled back 12%, and the fill is now 0.839.
Visual gates
Contact sheet:
docs/gallery/contact-sheets/butter-churn-contact-sheet.webpAsset sheet:
docs/gallery/asset-sheets/butter-churn.webp, beside the four re-rendered reference panels. Verdict: passes.inspection-only
Close-ups (lit and clay: lid, hoop, foot, underside, side, handle, rim):
inspection-only
The hero was rendered on 5.2.1 through
scripts/render_hero.py, andbuild_gallery.pywas run last. I read the generated<img alt>and the witnesses callout indocs/gallery/index.htmlanddocs/gallery/butter-churn/index.html. inspection-onlyneeds-5.1is applied because the piece runs a normal bake.🤖 Generated with Claude Code