Skip to content

fix: hay-bale, treasure-chest, gn-instance-grid and temp-override-join quality pass - #232

Merged
TMHSDigital merged 5 commits into
mainfrom
fix/quality-pass-haybale-chest-instancegrid-join
Sep 23, 2026
Merged

TMHSDigital merged 5 commits into
mainfrom
fix/quality-pass-haybale-chest-instancegrid-join

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

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-bale

Took 2 inspection rounds plus hero passes.

Defects

  1. The hay was flat mustard with no fibre, and the end-face strata read as corrugated cardboard (hero; this was the README's recorded "known gap").
  2. The twine was a 16 × 24 mm band that read as packing tape (hero, belt close-ups).
  3. The belts were 0.45 mm out of mirror, exposed by fixing 2. The loaf's vertices were symmetric to 71 µm, but its quads are non-planar and a fixed triangulation diagonal is not mirrored. The raycast belt profiles at ±0.225 sampled surfaces up to 5.6 mm apart. The old wide band's extents happened to hide it.

Fixes, and why each is structural

  • 1: straw_material builds 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.
  • 2: TWINE_T/TWINE_W 16/24 → 8/10 mm. The hitch-loop tube is now derived from TWINE_T.
  • 3: the loaf is triangulated with 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:

Budget Band Measured
Loaf X-mirror (exit 19) every loaf vertex has a partner at (−x, y, z) within 2e-4 m 0.000071

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-loaf adds a 2 mm odd sin displacement → 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-decimate 9→9, --stray-vert 15→15, --lift-z 16→16, --float-belts 16→16, --slack-belt 18→18, --skew-belt 19→19.

Hero: check_framing runs without deviation=, 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-chest

Took 2 inspection rounds.

Defects

  1. The lid's iron bands fanned out from the vault like feathers (side orthos, lid close-ups, hero). Each band was eight boxes rotated about X by +t. The arc's tangent at t is (cos t, −sin t), a rotation of −t, so every segment sat 2t off. The front-edge band caps and the hasp had the same sign error. The feather tips also set the AABB's Y extent.
  2. The timber was one flat tone and the iron flat black (three-quarters).
  3. The temp .glb export leaked into the working directory.

Fixes, and why each is structural

  • 1: each band is one add_arc_slab on the lid's own vault: the same span and segment count (LID_SEGS), with inner radius LID_BAND_BITE inside the lid. Caps and hasp rotate by −t. The honest envelope is 18 mm narrower, so OUTER_SIZE was re-fitted to (0.764, 0.524, 0.696).
  • 2: per-plank tone and grain, and iron rust (copied from shipping-crate).
  • 3: the export is removed after it is measured.

New budget, identical on all three binaries:

Budget Band Measured
Lid bands on the vault (exit 18) 3 bands spanning ≥ 60% of the lid arc; every vertex radius within 1e-4 m of the band's radial range, in the un-rotated hinge frame 3; 0.000000

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-bands floats 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-decimate 9→9, --lift-z 16→16, --stray-vert 15→15, --short-legs 16→16, --float-hinge 17→17, --narrow-bands 18→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-grid

Presentation changes (render path only):

  • Lattice: the source Mesh Grid is drawn as a faint wire lattice on the floor, built from the tree's own GRID_SIZE/GRID_X/GRID_Y and turned with the instances, so each cube visibly sits on a grid point.
  • Camera: raised from 2.7 m to 4.3 m. From the low angle, perspective scrambled the rows and the right column crowded the frame edge.

Contract unchanged. Before → after, identical on all three binaries: default 0 → 0, --one-cell 4 → 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-join

The 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):

  • Plinths: render-only stepped plinths under steps 1 and 2, slimmer than a step and 2 mm short of it, so the staircase stands instead of hanging in the air.
  • Lights: fill and rim softened, which removed the floor hot spot.
  • Standard view transform (VISUAL-STYLE). The key went from 1500 to 950 W, because under Standard the frame measured luma 0.348, above the band.

Contract unchanged. Before → after, identical on all three binaries: default 0 → 0, --no-override 3 → 3.

Framing: measured externally (no check_framing in 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.md conventions:
    • Body symmetry: assert a body's mirror symmetry on the body itself; triangulate non-planar quads on short diagonals; apply odd-term falsifiers after angle-selected bevels.
    • Curved hosts: bands on a curved host are arc slabs on the host's own radius function, asserted radially in its construction frame.
  • Framing-gate gap: now known in four gallery examples (gn-sdf-remesh, shape-key-blend, gn-instance-grid, temp-override-join). Each was measured externally and passes. Adding the gate adds exit 10, so it belongs in its own PR.

🤖 Generated with Claude Code

TMHSDigital and others added 5 commits September 23, 2026 12:55
…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 TMHSDigital added the needs-5.1 Opt-in Blender 5.1 smoke on this PR. Default matrix stays 4.5 + 5.2. Auto-label will not apply this. label Sep 23, 2026
@github-actions github-actions Bot added examples Runnable smoke-gated examples under examples/ showcase Budget-conformance props under showcase/ documentation Improvements or additions to documentation labels Sep 23, 2026
@TMHSDigital
TMHSDigital merged commit 937ba1a into main Sep 23, 2026
14 checks passed
@TMHSDigital
TMHSDigital deleted the fix/quality-pass-haybale-chest-instancegrid-join branch September 23, 2026 17:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation examples Runnable smoke-gated examples under examples/ needs-5.1 Opt-in Blender 5.1 smoke on this PR. Default matrix stays 4.5 + 5.2. Auto-label will not apply this. showcase Budget-conformance props under showcase/

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant