feat(showcase): add brazier - #253
Merged
Merged
Conversation
A brazier was the next unclaimed showcase candidate. What an envelope check cannot see on it is whether it would tip when knocked: legs tucked in under the bowl still reach the floor and still fit its bounding box. The piece recomputes a density-weighted mass centre from the closed shells and the support polygon from the feet on the floor, and asserts the tip angle; --tuck-legs exits 19 at 10.2 degrees while every other budget passes. Also asserts the legs bite the bowl, the coals sit in the ash below the rim without interpenetrating and vary in size, each with a falsifier proven on 4.5.11, 5.1.2 and 5.2.1. 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/brazier: a spun-iron fire bowl with a rolled rim on three forged legs, holding a bed of ash and a heap of 36 broken, glowing charcoal lumps. Each leg is one sweep from the bowl wall to a curled foot.Selection: it is the first unclaimed candidate in the ROADMAP pool now that grain-sacks has shipped. It is a prop, so it goes in showcase. There were no open PRs; the only
feat/showcase-*ref is already-merged work.Binaries (all local,
.scratch/):blender-4.5.11-windows-x64, reportsBlender 4.5.11 LTSblender-5.1.2-windows-x64, reportsBlender 5.1.2blender-5.2.1-windows-x64, reportsBlender 5.2.1 LTSThe budget that matters: tip angle (exit 19)
A brazier holds burning coals, so it must not tip when knocked. Legs tucked in under the bowl still reach the floor and still fit the bowl's bounding box, so no envelope check can see the difference.
The piece recomputes stability from the mesh:
atan(d_edge / z_com).Default: 51.9 kg, mass centre on the axis at 0.466 m, 154 mm inside the support edge, 18.30° against a 13° floor.
--tuck-legsbrings the feet in to 0.15 m of the axis while they still ground and the envelope is unchanged. It exits 19 at 10.23°, with every other budget passing. live-run-provenFalsifiers: exit codes per binary (live-run-proven)
--skip-decimate--stray-vert--lift-z--float-foot--short-legs--float-coals--overfill--tuck-legs--pile-coals--uniform-coals--output--skip-decimate--stray-vert--lift-z--float-foot--short-legs--float-coals--overfill--tuck-legs--pile-coals--uniform-coalsEnvelope: every falsifier leaves the AABB unchanged. live-run-proven
Checks run locally
tests/check_falsifier_targets.py: static check passes.--run <BLENDER> --only brazierpasses all 10 on each of the three binaries. live-run-proventests/smoke/run_example.py --forbid-skip:[PASS] brazieron 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_harness31 showcase pieces)All pass. live-run-proven
Determinism: every budget value is byte-identical across 4.5.11, 5.1.2 and 5.2.1, including both LOD counts. The only difference is the glTF byte count: 450936 on 5.2.1 against 450940 on the others, which is exporter metadata. There is no RNG. Check-only wall-clock is about 2.0–2.4 s. live-run-proven
Ecosystem drift check is a remote action, so it is CI-proven only. The 4.5 / 5.1 / 5.2 smoke jobs are CI-proven on this PR.
Fix cycles (live-run-proven unless marked)
--overfill,--pile-coalsand--uniform-coalsfirst exited 4 or 5 (triangle band, face floor) instead of 18 / 20 / 21. The packer placed as many coals as fit, so every falsifier that changed the space changed the count. I fixed the model rather than the bands: the heap is a fixedN_COALS= 36, and the uniform draw is one size at which the whole heap still fits.BMFaceanswered for the wrong face aftercreate_icosphere(subdivisions=2)reallocated faces (aKeyErroron a dead vertex). UV islands now live in a face int layer, with provisional UVs in the loop layer.Visual gates
Contact sheet:
docs/gallery/contact-sheets/brazier-contact-sheet.webpAsset sheet:
docs/gallery/asset-sheets/brazier.webp. Verdict: passes.inspection-only
Close-ups (clay leg joint, feet, heap, underside, rim, side): the legs enter the bowl underside cleanly, and the toes curl as forged scrolls. There is no z-fight speckle and no faceting on the spun bowl. Coals still show some ash between elongated lumps, which I accepted. inspection-only
The hero was rendered on 5.2.1 through
scripts/render_hero.py, andbuild_gallery.pywas run last. I read the generated alt text and witness callout indocs/gallery/index.htmlanddocs/gallery/brazier/index.html. inspection-only🤖 Generated with Claude Code