Skip to content

fix(showcase): anvil and campfire visual quality pass - #178

Merged
TMHSDigital merged 2 commits into
mainfrom
fix/showcase-anvil-campfire-quality
Sep 17, 2026
Merged

TMHSDigital merged 2 commits into
mainfrom
fix/showcase-anvil-campfire-quality

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

Summary

Visual quality pass on anvil and campfire — the two remaining pieces that had never had one. Three inspection rounds on 5.2.1. Fixes are in the generators. Hygiene 15–19 already live in showcase/README.md; this PR does not change that file.

Picks: never-passed. Next run should take market-stall / watchtower (largest remaining unpassed silhouettes).

Anvil

Defects (inspection sheet, rounds 1–2)

  1. Horn loft twisted into a needle/ribbon — front ortho, three-quarter, wire spikes.
  2. Pritchel was a star of internal faces (rect-8 to octagon index mismatch) — clay, top, joint-horn.
  3. Face was segmented boxes with black seam lines — three-quarter, clay.
  4. Round-1 leftover: circular tori on a 24-gon, nubs glued on as holes, no coopered staves, huge overhanging slab.

Round 3: horn is an oval cone, hardy and pritchel are through-holes in one slab, stump/hoops/waist/foot seated. Face is still a razor-edged London bar (no iron bevel); that is remaining polish, not a budget fail.

Structural fixes

  • One add_slotted_slab for the face (grid around two hole cells) instead of welded boxes.
  • Horn as circular/oval rings with a shared N_SECTION parameterization — no superellipse morph.
  • Hoops from host_outer_r stave chords; --round-band uses a circle.
  • Foot-on-head BVH gap; --float-anvil lifts the iron 10 mm so bbox 8 still passes and 17 fires.
  • Camera from measured AABB span (no deviation=).

Budgets (4.5.11 / 5.1.2 / 5.2.1)

Axis All three
tris 2988 (was 6616)
LOD 0.5000 / 0.2195
mats 1040 wood / 822 metal
AABB 0.621 × 0.414 × 0.489 m, zmin 0
hygiene all 0
staves 16, stave_z 0
hoop bite 0.00300
seat 0.00300
collider 134
export 244052 / 244052 / 244036
Flag Exit Budget
default 0
--skip-decimate 9 LOD1 ratio
--stray-vert 15 loose verts
--lift-z 16 zmin
--short-staves 16 named staves
--float-anvil 17 foot-on-head
--round-band 18 hoop bite

Inspection rounds: 3. Framing on 5.2.1: fill y=0.800, margins ok. No deviation=.

Campfire

Defects (inspection sheet, rounds 1–2)

  1. Upper course floated with a mortar gap — front ortho, joint-running-bond.
  2. Teepee caps ended ~7 mm apart at one point — joint-teepee-apex.
  3. Angular daylight between running-bond wedges — elevation orthos.
  4. Round-1 leftover: identical boxes, empty pit, floor logs floating.

Round 3: courses share Z, teepee crosses at the apex, ash fills the pit, 14 wedges grounded. Stones still read as bricks more than cobbles; silhouette is a campfire.

Structural fixes

  • Courses stacked on row * STONE_H (shared plane). --gap-courses inserts COURSE_GAP.
  • Apex ring (STICK_R * 0.55) / sin(π/N) plus overshoot past the kiss point. --float-logs inflates the ring.
  • GAP_ANG 0.004 from the span function, not per-stone nudges.
  • Three-Z barrelled wedges; remove_doubles after bevel.
  • Camera from measured AABB span (no deviation=).

Budgets (4.5.11 / 5.1.2 / 5.2.1)

Axis All three
tris 2200 (was 3616)
LOD 0.5000 / 0.2200
mats 1304 stone / 216 wood / 48 ash
AABB 0.807 × 0.808 × 0.404 m, zmin 0
hygiene all 0
stones 14, stone_z 0
kiss 0.00001
course seat 0
collider 198
export 206244 / 206244 / 206236
Flag Exit Budget
default 0
--skip-decimate 9 LOD1 ratio
--stray-vert 15 loose verts
--lift-z 16 zmin
--short-stones 16 named bottom stones
--float-logs 17 teepee kiss
--gap-courses 18 course seat

Inspection rounds: 3. Framing on 5.2.1: fill y=0.733, bottom margin 0.033. No deviation=.

Evidence

  • Live run: default + all named falsifiers on .scratch/blender-4.5.11-windows-x64, blender-5.1.2-windows-x64, blender-5.2.1-windows-x64 (binaries self-report those versions). Hero stills Cycles 5.2.1. Generated HTML alts/witnesses read back after python scripts/build_gallery.py.
  • Inspection only: six orthos, two three-quarters, clay, wire, joint close-ups, ground contact in .scratch/qpass/ (untracked).
  • Did not touch examples, skills, snippets, rules, templates, gallery_framing.py, LICENSE, VERSION, CHANGELOG, release/smoke/pages workflows.

Test plan

  • Validate + blender-smoke 5.2 and 4.5 green
  • needs-5.1 labeled; 5.1 smoke green
  • Socket Security not failing
  • Squash-merge, tag, Pages, gallery 200

Made with Cursor

TMHSDigital and others added 2 commits September 16, 2026 21:28
The old piece stacked beveled boxes with glued nubs as holes and a
twisted horn. One slotted face, oval rings, and stave-chord hoops are
durable; per-coordinate nudges are not.

Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
The old ring floated a mortar gap between identical boxes and ended
the tripod at one point. Shared-Z courses and an overshooting apex
ring are durable; per-log coordinate nudges are not.

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 17, 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 17, 2026
@TMHSDigital
TMHSDigital merged commit 33bb510 into main Sep 17, 2026
13 checks passed
@TMHSDigital
TMHSDigital deleted the fix/showcase-anvil-campfire-quality branch September 17, 2026 01:39
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