Skip to content

fix: hay-bale second quality pass - #246

Merged
TMHSDigital merged 3 commits into
mainfrom
fix/hay-bale-second-pass
Sep 25, 2026
Merged

TMHSDigital merged 3 commits into
mainfrom
fix/hay-bale-second-pass

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

A second quality pass on hay-bale (Track A). Every piece has had a first pass, so this run returns to the oldest passes and grades them against the conventions added since. The binaries were .scratch/blender-4.5.11-windows-x64 (reports Blender 4.5.11 LTS), blender-5.1.2-windows-x64 (Blender 5.1.2) and blender-5.2.1-windows-x64 (Blender 5.2.1 LTS). The hero was rendered on 5.2.1 through scripts/render_hero.py; the framing gate passed without deviation=. The inspection sheets (six orthos, two three-quarter views, clay, wire, joint close-ups, ground contact) stayed in .scratch/.

Picks: I compared the heroes of the four oldest passes: hay-bale, chopping-block, crate-stack and stone-archway.

  • hay-bale read worst, and is fixed below.
  • stone-archway was inspected and left alone. Its keystone is already a radial wedge, and the V at the crown is its intended raked mortar joint. The only note left was subtle per-stone tone variation, too minor to justify a generator change.
  • chopping-block and crate-stack are strong.

hay-bale (Track A)

Defects (round 0):

  1. The loaf's top edge was crumpled in profile, so the bale read as a stuffed sack, not a compressed bale. The cause is a ±14 mm cos(24x) ridge term. Seen in the clay three-quarter and both three-quarter views.
  2. A sharp wedge flap stuck out at a bottom corner, and the base skirt was ragged. The chamfer ran over the ridged, gravity-flattened corner. Seen in joint_belt1_ground and ground_contact.
  3. The twine was an 8 × 10 mm cord, only 4 mm proud of the waisted loaf, in dark brown. It read as a scored groove in every view (joint_belt*_top, the hero).
  4. Each knot was a 60 mm ring lying flat on the top, which read as a printed symbol rather than a tie (joint_belt*_top).
  5. The bake was 256 px, which left 5.6 texels per UV cell (below the 12 px floor tavern-stool established), and its 0.04 m cage reached the twine standing proud of the loaf.

Generator changes:

  • RIDGE_AMP dropped from 14 mm to 6 mm. The straw texture now comes through the high mesh's flakes and the bake, not the low mesh's silhouette. This fixed defect 2 as well, because the chamfer now has an undistorted corner to work on (1, 2).
  • TWINE_T/TWINE_W went to 10 × 14 mm, so the cord stands 6 mm proud of the finished loaf's own raycast profile, and the material is orange polypropylene (3).
  • The knot is a KNOT_MAJOR 13 mm loop, standing in the belt's plane at the belt's station. Its foot is derived from the sampled top of the profile, so it follows the loaf if the loaf changes (4).
  • BAKE_RES is 1024 and CAGE_EXTRUSION 0.02, with a texel floor (5).

New budget: bake texel density, meaning the smallest UV cell must have at least 12 px at the baked resolution, exit 20. It measures 22.43 px on 4.5.11, 5.1.2 and 5.2.1.

Re-fitted: the outer AABB moved from (0.922, 0.530, 0.409) to (0.921, 0.508, 0.417): the ridge narrows Y, and the knots now set the top. The stated loaf size moved from (0.922, 0.409) to (0.921, 0.393), tighter against the nominal 0.38 m bale.

Every other budget was re-measured and still holds, identically on all three binaries:

Budget Measured
Hygiene 0
Cross-shell z-fight 0
Shells 5
Belt wrap zmin 1.46 mm
Belt seat band 4.00–11.14 mm over 20/20 stations
Belt mirror 0
Loaf mirror 0.093 mm
Cinch 10.5 mm

Falsifiers: --low-bake is new and exits 20: a 256 px bake measures 5.61 px per cell against the 12 px floor. --float-belts and --slack-belt first exited 8, because the knots now set the envelope's top. They were resized to their own budgets, never by widening the tolerance:

  • --float-belts: 20 mm → 8 mm, against a 6 mm wrap gate. It now exits 16 with a belt zmin of 9.46 mm.
  • --slack-belt: 10 mm → 6 mm, against a 2 mm seat floor. It now exits 18 with a seat of −2.0 mm.

The convention this taught is added to showcase/README.md.

default --skip-decimate --stray-vert --lift-z --float-belts --slack-belt --skew-belt --odd-loaf --low-bake
4.5.11 0 9 15 16 16 18 19 19 20
5.1.2 0 9 15 16 16 18 19 19 20
5.2.1 0 9 15 16 16 18 19 19 20

Triangles: 2012 → 2044, inside the unchanged 1700–2400 band. The collider went from 120 to 140 against a ceiling of 400.

Inspection rounds: 2. Round 1 fixed the silhouette, the spike, the cord and the knot. Round 2 changed the twine colour, after the real-material hero still read the brown cord as a cut. A few faint creases remain along the top edge where the cinch meets the chamfer; they read as the straw breaking, not as a defect.

Contact sheet

hay-bale: luma 0.306, stage 0.257, warmth +0.30, saturation 0.23. The old hero measured 0.305 with an identical stage, so this sits at the top edge of the 0.151–0.305 band, as the old one did. The subject fills the frame and is legible at thumbnail size; the orange twine carries the "bound" read even at card size.

Checks run locally: check_falsifier_targets.py (224 falsifiers across 28 pieces), check_exit_code_readme.py and check_gallery_images.py pass. I read the generated alt text in docs/gallery/index.html and docs/gallery/hay-bale/index.html.

🤖 Generated with Claude Code

TMHSDigital and others added 2 commits September 24, 2026 20:31
A 14 mm ridge crumpled the loaf's top edge into a stuffed sack, the
8 x 10 mm dark cord read as a scored cut, and each knot was a 60 mm ring
lying flat like a printed symbol. The ridge is 6 mm, the twine a 10 x 14 mm
orange cord standing 6 mm proud, and each knot a 13 mm loop standing in
the belt's plane. The 256 px bake became 1024 px with a texel floor
(exit 20, --low-bake) and a 0.02 m cage. The twine falsifiers were resized
to their own budgets after the knots began to set the envelope top.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Also refreshes the gallery card and alt for the reworked hay bale.

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 25, 2026
@github-actions github-actions Bot added showcase Budget-conformance props under showcase/ documentation Improvements or additions to documentation labels Sep 25, 2026
The page embeds the piece README, whose texel figure was corrected after
the last build.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
@TMHSDigital
TMHSDigital merged commit c27713d into main Sep 25, 2026
12 checks passed
@TMHSDigital
TMHSDigital deleted the fix/hay-bale-second-pass branch September 25, 2026 00:48
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. showcase Budget-conformance props under showcase/

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant