Modeling: add an angle threshold that affects vertex dissolve

When dissolving an edge merges faces, use an angle threshold before
dissolving vertices from the face which have become chains as reult
of the merge (connected to 2 edges).

Also fix edge-flag handling when dissolving multiple edges
from a chain into a single edge, previously flags from the
resulting edge was effectively random.
Now flags from all edges are merged.

Resolves #100184.

Ref !134017
This commit is contained in:
Jason C. Wenger
2025-06-05 05:33:49 +00:00
committed by Campbell Barton
parent 6fbef14f4b
commit e418f7b1f1
6 changed files with 240 additions and 27 deletions

View File

@@ -112,8 +112,21 @@ def main():
),
SpecMeshTest(
"CylinderDissolveEdges.UseVertsTrue", "testCylinderDissolveEdges", "expectedCylinderDissolveEdges.DissolveAllVerts",
[OperatorSpecEditMode("dissolve_edges", {"use_verts": True}, "EDGE", {0, 5, 6, 9})],
"CylinderDissolveEdges.AngleThrehsoldNoDissolve", "testCylinderDissolveEdges", "expectedCylinderDissolveEdges.DissolveNoVerts",
[OperatorSpecEditMode("dissolve_edges", {"use_verts": True,
"angle_threshold": 0}, "EDGE", {0, 5, 6, 9})],
),
SpecMeshTest(
"CylinderDissolveEdges.AngleThresholdSomeDissolve", "testCylinderDissolveEdges", "expectedCylinderDissolveEdges.DissolveThresh.218166",
[OperatorSpecEditMode("dissolve_edges", {"use_verts": True,
"angle_threshold": 0.218166}, "EDGE", {0, 5, 6, 9})],
),
SpecMeshTest(
"CylinderDissolveEdges.AngleThresholdAllDissolve", "testCylinderDissolveEdges", "expectedCylinderDissolveEdges.DissolveAllVerts",
[OperatorSpecEditMode("dissolve_edges", {"use_verts": True,
"angle_threshold": 3.14159}, "EDGE", {0, 5, 6, 9})],
),
# dissolve faces