Skip to content

fix: rebuild hay-bale and hitching-post so the joints actually meet - #170

Merged
TMHSDigital merged 3 commits into
mainfrom
feat/showcase-visual-quality-hay-bale-hitching-post
Sep 16, 2026
Merged

TMHSDigital merged 3 commits into
mainfrom
feat/showcase-visual-quality-hay-bale-hitching-post

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

Summary

Visual quality pass on two showcase pieces that had never had an inspection-sheet pass. Hay-bale was a plastic cube with picture-frame twine; hitching-post was a Minecraft post with floating staple-rings. Generators were rebuilt so parts meet from shared planes, then those contacts were locked as hygiene assertions.

Picks: hay-bale and hitching-post — neither had a prior inspection-sheet quality pass; both failed the silhouette/joint test on first look.

Hay-bale

Defects (first inspection)

  1. Loaf was a bevelled crate, not a bale — clay tq_a, wire, front ortho.
  2. Twine was four overlapping boxes with black corner voids — front ortho, joint_end_neg_x.
  3. Hitch knots were cubes hovering above the strap with daylight — joint_knot, front ortho.
  4. End faces read as glued slabs, not nap — joint_end_pos_x.
  5. Belts did not cinch: hay–twine vert-vert gap ~37 mm because wrap used the global AABB and the inner strap face has no mid-edge verts — joint_twine_top.
  6. Razor edges, zero waist, silhouette unreadable as hay — clay.

Generator fixes (structural)

  • Pillow loaf from closed-form bulge + ridges, not a cube nudge.
  • Belts are a solid square torus snapped to the four belt-local loops (BELT_XS on the 4-cut loaf), cinched to y_max - RIDGE - EMBED.
  • Hitch knots are tori whose center sits on the top-belt outer face (z_hi + TWINE_T), not a magic Z offset.
  • Hay–twine gap is BVH surface distance, query twine → hay (vert-vert is the wrong metric for a 4-corner strap).

Hygiene (copied from examples/mesh-hygiene-audit, not imported)

loose/nonman/zero-area/doubles/ngons = 0, zmin within 1e-4 of 0, hay–twine BVH gap < 8 mm.

Measured on 4.5.11 / 5.1.2 / 5.2.1:

  • base tris 852 / 852 / 852 (was 252)
  • hygiene all 0, zmin 0, gap 0.00007 m
  • collider 78, export 70720 / 70720 / 70712 B

Exits: default 0 / 0 / 0; --skip-decimate 9 / 9 / 9 (LOD1 ratio); --lift-z 16 / 16 / 16 (grounded zmin).

Inspection rounds: 2. Round 1 seated the belts; round 2 dropped the hitch knots into the top belt.

Framing on 5.2.1: fill y=0.828, no deviation=.

Hitching-post

Defects (first inspection)

  1. Post read as a Minecraft cube — clay, front ortho.
  2. Rings floated on staple cubes, not threaded through the arm — joint_ring_*, tq_a.
  3. Cross-arm was one box punched through the post — joint_arm_post, top ortho.
  4. Cap sat proud of the post with a lip/seam — joint_cap_post, top ortho.
  5. Bands were four overlapping boxes (doubles/non-manifold) — wire.
  6. Shoe was a solid plate the post punched through — joint_shoe_post, bottom ortho.
  7. Round-1 leftover: 14 mm daylight between arm stubs and post because stubs started at half + TENON_PEEK — top ortho.

Generator fixes (structural)

  • Cap is a 4-sided cone whose radius is half * sqrt(2), rotated 45°, embedded 2 mm so the base vertices land on the post corners.
  • Arm is two stubs that start at the post face plus an internal tenon sized from POST_W / ARM_*.
  • Shoe and bands are closed XY collars, not 4-box wraps.
  • Hitch rings live in YZ and thread iron eyes on the -Y arm face.
  • Round 2: drop TENON_PEEK from the stub start so the arm butts the post; tenon stays internal.

Hygiene

Same combinatorics. Wood–metal BVH gap < 8 mm. Euler is 10 (multi-body) and is not gated to 2.

Measured on 4.5.11 / 5.1.2 / 5.2.1:

  • base tris 1598 / 1598 / 1598 (was 848)
  • hygiene all 0, zmin 0, gap 0.00045 m
  • collider 78 (was 144), export 121496 / 121496 / 121480 B

Exits: default 0 / 0 / 0; --skip-decimate 9 / 9 / 9; --lift-z 16 / 16 / 16 (grounded zmin).

Inspection rounds: 2.

Framing on 5.2.1: fill y=0.806, no deviation=.

Conventions

showcase/README.md now requires hygiene budgets, grounded zmin, BVH contact gaps, and --lift-z as the zmin falsifier for every future piece.

Test plan

  • Default check 0 on 4.5.11, 5.1.2, 5.2.1 for both pieces
  • --skip-decimate exits 9 on all three
  • --lift-z exits 16 on all three (named grounded-zmin budget)
  • Hero preview.webp re-rendered on 5.2.1; framing gate passed without deviation=
  • Inspection sheets in .scratch/inspect/ (untracked) looked at, every view
  • CI smoke 5.2 + 4.5 + labeled 5.1 green
  • Squash-merge, tag, Pages, gallery 200

Proven by live run: all three binaries, both falsifiers, both framing gates, visual inspection of every sheet image. Established by inspection only: HTML alts after build_gallery.py.

Made with Cursor

TMHSDigital and others added 3 commits September 15, 2026 20:12
Solid square-torus belts snap to belt-local loops so the strap cinches the pillow instead of framing a cube, and hygiene budgets lock the joints.

Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Cap, arm, shoe, and rings are derived from the post faces so they meet instead of overlapping boxes, and hygiene budgets lock the contacts.

Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Copied mesh-hygiene-audit combinatorics, grounded zmin, and BVH contact gaps are now conventions so the next visual pass inherits them.

Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Sep 16, 2026
@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 16, 2026
@TMHSDigital
TMHSDigital merged commit a3aac9d into main Sep 16, 2026
13 checks passed
@TMHSDigital
TMHSDigital deleted the feat/showcase-visual-quality-hay-bale-hitching-post branch September 16, 2026 00:22
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 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant