feat: witness n-gon, unapplied-scale, and coincident-vert pathologies - #130
Merged
Conversation
Gallery examples build clean geometry. These three synthesize the defects, pre-assert they exist, then check how hygiene/tangents, glTF export_apply, and export-crossing duplicates actually behave. Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com> Co-authored-by: Cursor <cursoragent@cursor.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.
Summary
ngon-triangulateinvertsmesh-hygiene-audit/triangulate-tangents.unapplied-scale-gltfinvertsgltf-export-roundtrip(identity scale) and neighborsprop-origin-transform.coincident-vert-weldinvertsdegenerate-bevel-weld(bevel-pinch coincidences).Why these three
N-gons, unapplied non-uniform scale, and coincident duplicate verts are the defects that stress contracts this repo already teaches. Overlapping UVs already have a SAT gate and
--falsifyonlightmap-uv-channel. Zero-area faces are owned bydegenerate-bevel-weld.Type
feat— new example (minor bump)Squash-merge subject:
feat: witness n-gon, unapplied-scale, and coincident-vert pathologiesPre-assertions (required)
--no-dissolvengon count 0(2,1,0.5)and local verts ±1--identityscale(1,1,1)--no-duplicateV=8 unique=8Handling (second axis)
calc_tangentsaborts until triangulate → 4 tris + 4 quads / 28 loops. glTF tris=12 either way.--skip-triangulateexport_applyis modifiers-only. node.scale Y-up(2, 0.5, 1), POSITION ±1. Vert count 8 either way.--bake→ node.scale None, POSITION x ±2remove_doubles→ one cube, still manifold.--weld→ 24 pos / 12 trisEvidence
Live-run-proven (local Windows)
Binaries:
.scratch/blender-5.2.1-windows-x64/blender.exe5.2.1 LTS9e2066aef7ef;blender-4.5.11-windows-x644.5.11 LTS4db51e9d1e1e.Both LTS: happy path exit 0; detection flags exit 3; handling flags exit 4. Same closed forms. No skips.
Falsification is local-Windows only (ROADMAP, next to inverted-canary marker-text).
Inspection-only
CI 4.5 job will float (last PR used 4.5.13).
export_applyRNA description and Y-up scale permute were read from the live exporter.Gallery
None. Hexagon-on-cube, stretched box vs modeled size, and coincident cubes do not prove the defect at thumbnail.
Release-owned fields — do not hand-edit
Left at 0.52.0.
Test plan
release.ymlon the merge SHA; expectRELEASE (bump=minor)→ v0.53.0Made with Cursor