Skip to content

fix(showcase): street-lantern and water-trough visual quality pass - #181

Merged
TMHSDigital merged 3 commits into
mainfrom
fix/showcase-lantern-trough-quality
Sep 18, 2026
Merged

TMHSDigital merged 3 commits into
mainfrom
fix/showcase-lantern-trough-quality

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

Summary

Visual quality pass on street-lantern and water-trough. Both were budget-green assemblies that did not read as the objects they claim to be. Generators were rebuilt structurally (shared planes/radii, named overlap/rebate) and the new hygiene/joint budgets were locked with falsifiers proven on 4.5.11, 5.1.2, and 5.2.1.

Picks: the two remaining complex assemblies whose gallery witnesses still only mentioned --skip-decimate.

street-lantern

Defects (view that revealed each)

  1. Open pyramid — the 4-gon cone roof had no base; four non-manifold boundary edges. Bottom ortho + wireframe.
  2. Arm, post, and brass skirt weldedcreate_cone cap centres shared one vertex at the post top, collapsing three parts into one shell. Arm-root close-up + clay.
  3. Cage crossings shared vertices — posts, rails, and muntins occupied the same corners; three doubles after merge-by-distance. Wireframe overlay.
  4. Glass z-fighting the mid-rail — pane outer faces coplanar with the inner rail (four coplanar disjoint pairs). Cage close-up + material three-quarter.
  5. Brace looked seated but measured 12 cm off — the brace lands mid-face on the arm; vert-vert missed it. Brace joint close-up.
  6. Hanger floated ~8.5 mm above the apex — finial cones did not start at the roof peak. Three-quarter + hanger close-up.
  7. Plinth step coplanar with the base top — z-fight risk on the foot. Front ortho + ground-contact close-up.
  8. Clay silhouette was a post with a floating box — hanger not on the peak, so it did not read as a hanging lantern. Clay pass.

Generator changes (structural)

  • Square pyramid lofted on the cage axes with a base, seated at cage_top - 0.001. Apex is a function of that plane; finial cones sit on the apex; metal stub runs from apex + 0.70 * FINIAL_H into the arm underside.
  • Hang-station hang_z is always post top. Arm Z is independent so --sink-arm can drop the arm without dragging the cage.
  • Arm starts at post_radius_at(arm_z) - 0.008; brass skirt lifted off the post bottom so cap centres cannot weld.
  • Brace is an oriented box from a post-radius station to an arm station. Gap is BVH, not vert-vert.
  • Cage posts/rails/muntins use named CAGE_JOINT overlap; muntins split around the mid rail. Glass inset by PANE_REBATE.
  • Stepped plinth uses STEP_SINK so the two boxes do not share a coplanar face.
  • remove_doubles + dissolve_degenerate after bevel; n-gons triangulated.

Hygiene (measured 4.5.11 / 5.1.2 / 5.2.1)

Budget Declared Measured
loose / nonman / zero-area / doubles / n-gons / z-fight all 0 0 on every axis
zmin ≤ 1e-4 0.0000
brace BVH gap ≤ 0.006 m 0.00000
arm-roof clearance ≥ 0.008 m 0.05300
hanger-roof BVH gap ≤ 0.004 m −0.00100
post plan 0.100 × 1.120 m 0.1000 × 1.1200
plumb ≤ 0.008 m 0.00000

Exit codes (all three binaries)

Path Exit Budget
default 0
--skip-decimate 9 LOD1 ratio
--stray-vert 15 loose verts
--lift-z 16 zmin
--float-brace 17 brace gap
--sink-arm 18 arm-roof clearance
--rake-post 19 post plumb

Tris / rounds

3520 → 3338. Collider 84 → 78. Inspection rounds: 3.

Hero on 5.2.1: check_framing fill 0.711, min margin 0.072. No deviation=.

water-trough

Defects (view that revealed each)

  1. Box-slab end caps around the U — daylight at stave/cap joints; the rim was a rectangle, not a U. Front ortho + end close-up.
  2. Straps reported a 20 cm gap while wrapping the hull — vert-vert on a mid-face seat. Strap close-up.
  3. Straps sat on LEG_X — trestle legs punched through the iron. Side ortho + strap-leg close-up.
  4. Stretchers through the leg volumes — black interior-face holes. Wireframe + stretcher joint close-up.
  5. Water stopped short of the end-cap faces — slit at the rim. Water close-up.
  6. Identical staves — instant CG. All orthos.
  7. Clay silhouette was a bathtub on sticks — box ends hid the U. Clay pass.

Generator changes (structural)

  • Ten staves from one YZ arc with sin(i) width jitter. End caps are add_u_shell boards the staves tenon into.
  • STRAP_X = TRAY_L * 0.18, offset from LEG_X = TRAY_L * 0.28. Strap inner radius is host outer minus STRAP_BITE.
  • Stretchers span inner faces: y_leg is a lerp of the leg stations; length is 2*(y_leg - 0.022), not through-volume.
  • Water add_u_water from inside the left cap thickness to inside the right.
  • Legs bury STAVE_T * 0.35 into the hull along the leg direction. Shoes at Z=0.
  • --short-legs lifts shoes only so AABB zmin stays 0 and the named-support gate fires.
  • --box-ends adds a subdivided slab after bevel so rim-span 17 fires without killing wood verts.
  • Hull-size (19) runs before outer AABB (8) so --narrow-hull is not swallowed by a moved box.

Hygiene (measured 4.5.11 / 5.1.2 / 5.2.1)

Budget Declared Measured
loose / nonman / zero-area / doubles / n-gons / z-fight all 0 0 on every axis
zmin ≤ 1e-4 0.0000
4 shoes each zmin ≤ 0.001 4, shoe_z 0.00000
end-cap rim Z-span ≤ 0.080 m 0.0050
strap BVH gap ≤ 0.008 m 0.00000
water-hull BVH gap ≤ 0.008 m 0.00260
hull plan 1.08 × 0.44 m ± 0.08 1.0448 × 0.4661

Exit codes (all three binaries)

Path Exit Budget
default 0
--skip-decimate 9 LOD1 ratio
--stray-vert 15 loose verts
--lift-z 16 zmin
--short-legs 16 named shoes
--box-ends 17 end-cap rim span
--float-strap 18 strap gap
--narrow-hull 19 hull plan

Tris / rounds

2484 → 3700. Collider 32 → 64. Inspection rounds: 3. Remaining nit: ~1 mm water/end-cap slit at the rim (water_gap 2.6 mm, under budget).

Hero on 5.2.1: check_framing fill 0.794, min margin 0.044. No deviation=.

Convention

showcase/README.md now states the designed-overlap rule: coplanar faces z-fight, shared vertices weld; seat with a named overlap/rebate from the host; hang-station vs arm-station so a contact falsifier can move one member.

Evidence

Live headless runs on .scratch/blender-4.5.11-windows-x64, .scratch/blender-5.1.2-windows-x64, .scratch/blender-5.2.1-windows-x64 (binary-reported versions). Inspection sheets in .scratch/ (untracked). Gallery HTML alts and witnesses read back after scripts/build_gallery.py.

Test plan

  • blender-smoke 5.2 LTS green
  • blender-smoke 4.5 LTS green
  • blender-smoke 5.1 (needs-5.1) green
  • validate / drift-check / Socket green
  • Default and every falsifier above already proven locally on all three binaries

TMHSDigital and others added 3 commits September 17, 2026 22:06
Seat the hanger on a closed square pyramid and lock brace/hanger contact as BVH budgets so a welded cone stack cannot regress.

Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Rebuild the hull as U-staves and U-caps on one radius so box-slab ends and through-leg stretchers cannot pass.

Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Record coplanar-vs-weld seating so future pieces inherit a named overlap or rebate instead of coincident faces.

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 18, 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 18, 2026
@TMHSDigital
TMHSDigital merged commit a09254c into main Sep 18, 2026
13 checks passed
@TMHSDigital
TMHSDigital deleted the fix/showcase-lantern-trough-quality branch September 18, 2026 02:14
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