fix: stone-archway, gn-zone-iterate and coincident-vert-weld quality pass - #228
Merged
Merged
Conversation
…one that reads as stone Every joint was air: courses floated 7 mm apart and voussoirs 9.7 mm, with daylight through each. Mortar beds and wedges are now sized from the two blocks they join, recessed behind the faces and biting into both, and a mortar-contact budget asserts each of the 18 overlaps exactly two stones (exit 18, --short-mortar). classify skips mortar. The streaky noise mix that read as wood grain is replaced by an isotropic stone shader with a seeded per-block tone. 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>
…r blown out Render path only. The check, its assertions and exit codes are unchanged. docs/gallery/index.html also carries the stone-archway card alt from the previous commit, since both regenerate in one build. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
…at catches it, re-verified on 5.1 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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Quality pass: three items, one per track. 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.A —
showcase/stone-archwayTook 3 inspection rounds: r0 baseline, r1 fixes, r2 tuning. Each round covered six orthos, two three-quarters, clay, wireframe, 8 joint close-ups (springings, pier bases, keystone, a voussoir joint, pier courses, intrados crown) and ground contact.
Defects
.glbexport leaked into the working directory.Fixes, and why each is structural
add_mortarbuilds a bed between each pair of courses and under each impost, and a wedge between each pair of voussoirs. Each is sized from the two blocks it joins (build_pierandbuild_archnow return their block dimensions), so a course that weathers back or a voussoir that rises takes its mortar with it. Joints are recessedCHAMFER + 3 mmso they read as raked, and bite 1.5 mm into both blocks. Mortar is added after the chamfer pass and left unchamfered.classifyskips mortar shells, so every existing stone budget still measures stone against stone; they all read the same values as before.stone_materialuses isotropic object-space mottling, speckle driving roughness, and a bump. Dressed stone is paler and smoother; mortar is its own slot.wire_normalnow chains the baked normal map under the bump.paint_blockswrites a seededBlockToneface attribute that the shader reads.New budget. Measured identically on 4.5.11, 5.1.2 and 5.2.1.
The material count is now exactly 3. Base tris band re-fitted around the measurement: 700–2600 → 950–1450.
Triangles: 924 → 1140. Collider unchanged at 168. LOD2 is 250 / 0.2193 on 4.5 and 5.1, and 244 / 0.2140 on 5.2 (ratio band unchanged). Same-binary determinism: two runs on 5.2.1 match on every measured line.
Falsifier:
--short-mortarstops every joint 1 mm shy of both stones, so all 18 shells overlap 0 stones → 18 on all three binaries.tests/check_falsifier_targets.pypasses (184 falsifiers).Existing exit codes, before → after, identical on 4.5.11, 5.1.2 and 5.2.1: default 0→0,
--skip-decimate9→9,--stray-vert15→15,--lift-z16→16,--float-pier16→16,--sink-keystone17→17,--wide-mortar18→18,--off-circle19→19.Hero re-rendered on 5.2.1 through
scripts/render_hero.py.check_framingruns withoutdeviation=: fill y 0.889, min margin 0.028. Contact sheet:docs/gallery/contact-sheets/stone-archway-contact-sheet.webp.No asset sheet, since no showcase piece has one yet (#202).
B —
examples/gn-zone-iteratePresentation changes (render path only):
Glintspot became a broad 3 m light. It had blown the top tower cube out to near-white cyan. A rim light was added so the cubes separate from the wall.build()is untouched.Inspection (Workbench clay and wireframe from the hero camera, through the example's own
render_still) showed no scaffolding defects. The cubes sit on the floor, the tower gaps are the contract'sIndex × 0.6offsets, and nothing interpenetrates. The unbevelled cubes stay unbevelled because their 8-vertex topology is the contract.Contract unchanged.
check(), the assertions and the exit codes are untouched.--unpair-repeat--unpair-foreach--no-offset--foreach-mainFraming: fill y 0.817, margins left 0.150, right 0.169 (the first reframe hit exit 10 and was pulled back). Contact sheet:
docs/gallery/contact-sheets/gn-zone-iterate-contact-sheet.webp, luma 0.246.C —
examples/coincident-vert-weldREADME improvements:
bmesh.ops.find_doubles(dist=1e-5)reports 8. A doubles check catches it, which is why the showcase hygiene budgets count doubles separately.Re-verification (live probe):
find_doublesremove_doubles--no-duplicate/--weldDocumented behaviour is correct. The old README said "same on 4.5 and 5.2"; it now covers 5.1 as well. No code change.
Also
showcase/README.mdconventions: filled mortar joints (a contact budget of exactly two stones per joint, mortar kept out of stone classifiers, mortar added after the chamfer), and stone surfaces (isotropic mottling, per-block tone, baked normal chained under the bump).docs/gallery/index.htmlcarries both card alts in the zone-iterate commit, because one build regenerates both.🤖 Generated with Claude Code