fix: terrain-scatter, export-preset-axis and mesh-automasking-settings quality pass - #230
Merged
Merged
Conversation
…hat never interpenetrate The stones were smooth near-white ellipsoids on pale clay, and two pairs interpenetrated. Stones are now cleaved by closed-form planes, flat-shaded and scaled 1.35x; centres relax apart to twice a radius bound derived from the same constants. A stone-overlap budget BVH-tests every pair (exit 20, --pile-rocks). Dark mottled soil and grey stone materials. 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>
…file Render path only: props moved together and the camera made oblique so the Godot reimport's mast reads along its length. The check, its assertions and exit codes are unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
…es and states the traps Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
…en rock 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. Baselines were taken on the pristine tree before any edit.A —
showcase/terrain-scatterTook 3 inspection rounds. Each round covered six orthos, two three-quarters, clay, wireframe, 4 stone-seat close-ups, slab edge and corner, and ground contact.
Defects
.glbexport leaked into the working directory.Fixes, and why each is structural
N_CLEAVESplanes. Normals and depths come from the stone's own centre, closed form, and every vertex beyond a plane is projected onto it. Stones are flat-shaded.relax_centrespushes centres apart to2 × STONE_R_BOUND + STONE_CLEAR(fixed iteration count, symmetric, clamped on the tile).STONE_R_BOUNDis derived fromROCK_SCALE, the largest semi-axis, the bump and the tilt, so it tracks any size change. Stated honestly: with today's cleaved sizes the unrelaxed scatter would also clear; the relaxation is what guarantees it.ROCK_SCALE= 1.35 on every semi-axis and the bump.New budget. Measured identically on 4.5.11, 5.1.2 and 5.2.1.
The declared outer AABB z was re-fitted to the measurement, 0.552 → 0.584 (tolerance unchanged). The existing hygiene set stays all zero.
Triangles: 1758 → 1758 (same icospheres, cleaved in place). Collider 81 → 72. LOD ratios are unchanged. Same-binary determinism: two runs on 5.2.1 match on every measured line.
Falsifier:
--pile-rocksskips relaxation and draws the scatter in to 40%. 6 pairs interpenetrate → 20 on all three binaries. Skipping relaxation alone was tried first and exited 8, not 20: the cleaved stones miss each other unrelaxed, so it would have witnessed nothing.tests/check_falsifier_targets.pypasses (186 falsifiers).Existing exit codes, before → after, identical on all three binaries: default 0→0,
--skip-decimate9→9,--stray-vert15→15,--lift-z16→16,--poke-rock17→17,--float-rocks18→18,--box-rocks19→19.Hero re-rendered on 5.2.1 through
scripts/render_hero.py.check_framingruns withoutdeviation=: fill y 0.706, min margin 0.033. Contact sheet:docs/gallery/contact-sheets/terrain-scatter-contact-sheet.webp.Still weak: the relaxed layout keeps a visible 3×3 grid rhythm (top ortho). It is inherited from the GN point grid, which this pass left alone.
B —
examples/export-preset-axisPresentation changes (render path only):
The lying beacon is the contract and stays lying. The clay pass showed no scaffolding defects. The reframe went through two framing failures (fill 0.656, then top margin 0) before landing at fill y 0.828, min margin 0.061. Contact sheet:
docs/gallery/contact-sheets/export-preset-axis-contact-sheet.webp, luma 0.157, inside the band.Contract unchanged.
build(),check(), the assertions and the exit codes are untouched. Before → after, identical on 4.5.11, 5.1.2 and 5.2.1: default 0 → 0,--same-axis9 → 9.C —
examples/mesh-automasking-settingsREADME improvements:
AttributeError.brushes.new(name)withoutmode="SCULPT"leavingmesh_automasking_settingsasNoneon 5.2.Brushattributes against their 5.2 names. The 10use_automasking_*keep their names, the 8automasking_*drop the prefix, and the new struct addscavity_curve_op. This replaces the vague "18+".Brush.Re-verification (live probe):
MeshAutomaskingSettingstypeBrushmode="SCULPT"/ default modeNone--assume-brush-attrsexitDocumented behaviour is correct. No code change.
Also
showcase/README.mdconventions:🤖 Generated with Claude Code