fix: hay-bale, treasure-chest, gn-instance-grid and temp-override-join quality pass - #232
Merged
TMHSDigital merged 5 commits intoSep 23, 2026
Merged
Conversation
…mmetric loaf Straw shader (fibres along and across, colour break-up, fibre bump) and an 8 x 10 mm cord in place of the 16 x 24 mm band. Thinning the cord exposed a 0.45 mm belt asymmetry from non-mirrored quad diagonals; the loaf is now triangulated along short diagonals and its X-symmetry asserted directly (exit 19, --odd-loaf). showcase/gallery.json also carries the treasure-chest alt. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
…anning out Each band was eight boxes rotated +t where the tangent needs -t, so the segments fanned out like feathers. Bands are now arc slabs on the lid's own vault; caps and hasp use -t. A lid-band budget asserts three bands on the vault radially in the hinge frame (exit 18, --lift-lid-bands). Grain and rust materials. The temp glTF export is removed after measuring. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
…its instances Render path only. The check, its assertions and exit codes are unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
… of hanging Render path only. The check, its assertions and exit codes are unchanged. examples/gallery.json and docs/gallery/index.html also carry the gn-instance-grid, hay-bale and treasure-chest card alts. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
TMHSDigital
deleted the
fix/quality-pass-haybale-chest-instancegrid-join
branch
September 23, 2026 17:02
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.
Quality pass: four items, two showcase (Track A) and two gallery examples (Track B). Every pathology/cross-version example (Track C) had already been reviewed. Everything below comes from live runs on
.scratch/blender-{4.5.11,5.1.2,5.2.1}-windows-x64/blender.exe, which report 4.5.11 LTS / 5.1.2 / 5.2.1 LTS, unless it is labelled inspection. Baselines were taken on the pristine tree before any edit.(The prompt now asks for "four or five pieces" in its intro and "two or three items" in Step 2. This run takes four.)
A —
showcase/hay-baleTook 2 inspection rounds plus hero passes.
Defects
Fixes, and why each is structural
straw_materialbuilds a dense fibre field stretched along the bale and a weaker crossing field. Colour is pulled between pale straw and dark tan, with a faint green cast. Roughness and bump come from the same fibres. The baked normal is chained under the bump.TWINE_T/TWINE_W16/24 → 8/10 mm. The hitch-loop tube is now derived fromTWINE_T.quad_method="SHORT_EDGE". On mirror-symmetric vertices the short diagonal is mirror-symmetric, and ties only occur where a quad is planar, where either split is the same surface. This is the surface engines render, so it is fixed in the mesh, not in the sampling. Averaging the two stations' profiles was tried first and rejected: it seated one belt 0.52 mm deep, below the band.New budget, identical on 4.5.11, 5.1.2 and 5.2.1:
Belt mirror is back to 0.000000, and the seats are 0.00400–0.00903 at both stations (was 0.00400–0.01676). Triangles are unchanged at 2012 (same triangles, now explicit). Hay faces 712 → 1404, collider 156 → 120. Same-binary deterministic.
Falsifier:
--odd-loafadds a 2 mm oddsindisplacement → 19 on all three binaries (worst vertex 4.000 mm). It is applied after the bevel. Put into the shaping function, even 0.3 mm of odd term flipped the bevel's 50° edge selection and grew the envelope 16 mm, so the AABB fired instead.Existing exit codes, before → after, identical on all three: default 0→0,
--skip-decimate9→9,--stray-vert15→15,--lift-z16→16,--float-belts16→16,--slack-belt18→18,--skew-belt19→19.Hero:
check_framingruns withoutdeviation=, fill y 0.789. Contact sheet:docs/gallery/contact-sheets/hay-bale-contact-sheet.webp, luma 0.305, at the top of the calibration band.A —
showcase/treasure-chestTook 2 inspection rounds.
Defects
+t. The arc's tangent attis(cos t, −sin t), a rotation of−t, so every segment sat2toff. The front-edge band caps and the hasp had the same sign error. The feather tips also set the AABB's Y extent..glbexport leaked into the working directory.Fixes, and why each is structural
add_arc_slabon the lid's own vault: the same span and segment count (LID_SEGS), with inner radiusLID_BAND_BITEinside the lid. Caps and hasp rotate by−t. The honest envelope is 18 mm narrower, soOUTER_SIZEwas re-fitted to (0.764, 0.524, 0.696).shipping-crate).New budget, identical on all three binaries:
The builder re-centres the mesh after swinging the lid, so the audit recovers the shift from the feet, which are symmetric. Using "everything low on the body" included the hasp and read 8.6 mm off. The first feet-based version crashed under
--lift-z, which lifts the whole mesh; the matrix caught it, and the feet are now measured from the mesh's own lowest point.Triangles: 3852 → 3816. Collider 176 → 180. Same-binary deterministic.
Falsifier:
--lift-lid-bandsfloats the bands 5 mm off the vault → 18 on all three binaries (5.000 mm). The feathered construction would be the more literal falsifier, but it pushes the envelope out 18 mm and trips the AABB first.Existing exit codes, before → after, identical on all three: default 0→0,
--skip-decimate9→9,--lift-z16→16,--stray-vert15→15,--short-legs16→16,--float-hinge17→17,--narrow-bands18→18.Hero: framing fill y 0.744, min margin 0.050. Contact sheet:
docs/gallery/contact-sheets/treasure-chest-contact-sheet.webp, luma 0.176.B —
examples/gn-instance-gridPresentation changes (render path only):
GRID_SIZE/GRID_X/GRID_Yand turned with the instances, so each cube visibly sits on a grid point.Contract unchanged. Before → after, identical on all three binaries: default 0 → 0,
--one-cell4 → 4.Framing: measured externally (the render path has no
check_framing): fill y 0.839, min margin 0.050. Contact sheet (new):docs/gallery/contact-sheets/gn-instance-grid-contact-sheet.webp, luma 0.230.B —
examples/temp-override-joinThe joined staircase is the contract. Step i sits at (i, 0, i + 0.5), steps meet only along an edge, and the Z span is asserted, so the cubes stay where they are.
Presentation changes (render path only):
Contract unchanged. Before → after, identical on all three binaries: default 0 → 0,
--no-override3 → 3.Framing: measured externally (no
check_framingin the render path): fill y 0.861, min margin 0.056. Contact sheet:docs/gallery/contact-sheets/temp-override-join-contact-sheet.webp, luma 0.301.Also
showcase/README.mdconventions:🤖 Generated with Claude Code