fix: terrain-scatter and car-mirror-symmetry quality pass - #248
Merged
Merged
Conversation
…dgets The tile read as a slice of cake with pebbles dropped on it. - Stones were seated by one dirt sample at their centre, which left daylight under the downhill side: no stone was sealed in more than 6 of 8 azimuth sectors. Each stone now samples the ground under every vertex and sinks until every sector holds a buried vertex (exit 21, --perch-rocks). - All nine stones were within ~20% of one size. STONE_SIZES gives each a factor from 0.55 to 1.45 and the relaxation spaces pairs by their own bounds (footprint ratio 9.81 >= 3.0, exit 22, --uniform-rocks). - The hill met the walls at a knife edge. The rim is bevelled in four segments, bounded by the step in normal elevation (33.5 <= 40 deg, exit 23, --sharp-rim). - Two closed-form micro-relief terms in the GN tree; hill smooth-shaded; stones mid-grey; dirt darkens to subsoil down the walls. Base tris 1758 -> 2398. The collider hulls a coarse unbevelled tile (36). The outer AABB was re-fitted from 0.584 to 0.570 m. Same results on 4.5.11, 5.1.2 and 5.2.1. Includes the asset sheet. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
… rim tilt Three conventions from the terrain-scatter pass: a seated part is sunk until every azimuth sector holds a buried vertex; scatter carries a size factor and asserts a footprint-ratio floor; a rim over a slope bounds its step in normal elevation (not the dihedral, which misreads rounded corners). Relaxation now spaces each pair by the sum of its own bounds. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
The key light is at -X but the camera stood at +X, so the flank it saw was the one the key cannot reach and the whole visible side rendered near-black: the hero measured luma 0.138, below the 0.151 calibration floor. The car is mirror-symmetric, so mirroring the camera keeps the composition; luma is now 0.169. Render path only. Exit codes unchanged on 4.5.11, 5.1.2 and 5.2.1 (default 0, --no-mirror 5, --output 0), and every measured line matches the baseline. Shared gallery index rides here. 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.
A quality pass on two items:
terrain-scatter(Track A, showcase) andcar-mirror-symmetry(Track B, gallery example).How I picked: I laid out all 28 showcase heroes in one mosaic.
terrain-scatterread worst: a dirt slab with pebbles dropped on it.car-mirror-symmetrywas the weakest unchanged example in the last run (PR #247).Binaries:
.scratch/blender-4.5.11-windows-x64(reportsBlender 4.5.11 LTS)blender-5.1.2-windows-x64(Blender 5.1.2)blender-5.2.1-windows-x64(Blender 5.2.1 LTS)Heroes were rendered on 5.2.1 through
scripts/render_hero.py. The inspection renders stayed in.scratch/.terrain-scatter(Track A)Inspection sheet: six orthographic views, two three-quarter views, clay, wireframe, four stone-seat close-ups, two slab close-ups and a ground-contact view.
Defects (round 0):
ground_contactand as an air gap along the base ofjoint_stone_seat_2.joint_slab_corner, front and left orthos).Generator changes, and why each is structural:
slabify.STONE_SIZESgives each scatter point a size factor from 0.55 to 1.45, and the relaxation spaces each pair of stones by the sum of their own bounds, so large and small stones clear by the same margin.Collider: it now hulls a coarse, unbevelled 9-vertex tile (
COLLIDER_GRID). On the full-resolution tile, the chamfer and relief pushed the hull to 178 triangles, over its 120 ceiling. The ceiling was not raised.New budgets. Every value is identical on 4.5.11, 5.1.2 and 5.2.1:
The rim budget measures the step in normal elevation, not the full angle between faces. At the four corners, the two chamfer strips meet at 90° in plan, which is a rounded corner, not a knife edge.
Existing budgets, re-measured:
Re-fitted: the stated outer AABB height moved from 0.584 m to 0.570 m, because the stones now sink into the ground.
Triangles:
Falsifiers. Each new one violates exactly one new budget:
--perch-rocksrestores the old centre-sample seating: 3 of 8 sectors sealed.--uniform-rockssets every size factor to 1: footprint ratio 1.851.--sharp-rimskips the bevel: 88.50° step.--pile-rocksnow reports 7 interpenetrating pairs (it was 6).--skip-decimate--stray-vert--lift-z--poke-rock--float-rocks--box-rocks--pile-rocks--perch-rocks--uniform-rocks--sharp-rim--outputInspection rounds: 3.
deviation=.Determinism: every measured value matches between repeated runs on 5.2.1 and across the three binaries. Export size differs by 16 bytes on 5.2.1, as before; export size is not a gated budget.
Contact sheet: terrain-scatter.
It sits inside the band and is legible at thumbnail size.
Asset sheet: terrain-scatter. The tile is rendered alone, neutrally, beside the four pinned asset references. Verdict: passes, narrowly.
This is the first showcase asset sheet committed. The renderer is the
.scratch/aq/asset_sheet_one.pyrecipe from #117, extended to find showcase scripts.Convention change (its own commit, in
showcase/README.md):car-mirror-symmetry(Track B)Defect: the key light is at −X, but the camera stood at +X. The flank it saw was the one the key cannot reach, so the whole visible side rendered near-black. The old hero measured luma 0.138, below the calibration band's 0.151 floor. Revealed by the hero and
close_2_WheelRearin the inspection sheet.Presentation change: the camera is mirrored to −X. The car is mirror-symmetric, which is the very contract it witnesses, so the composition is unchanged and only the lit flank now faces the lens.
Contract confirmation: the contract, assertions and exit codes are unchanged. I diffed every measured-value line across all 9 runs against the pre-change baseline logs, and there are no differences.
--no-mirror--outputContact sheet: car-mirror-symmetry.
It is now inside the band. The existing alt text still describes the still accurately.
Checks
Run locally and passing:
check_exit_code_readme.pycheck_gallery_images.pycheck_falsifier_targets.py(227 falsifiers across 28 pieces)build_gallery.pywas run last. I read the generated alt text indocs/gallery/index.htmland on both detail pages.🤖 Generated with Claude Code