Add tests and implement boundary smoothing and cutout functionality
- Introduced tests for boundary smoothing in `test_boundary_smoothing.py`, verifying that smoothing reduces stair-step artifacts while preserving boundary integrity. - Added tests for cutout boundary behavior in `test_cutout_boundary.py`, ensuring proper handling of boundary triangles and normal blending. - Created `test_temporary_attributes.py` to check the cleanup of temporary attributes across depth modifier branches, ensuring no warnings are raised. - Implemented point culling functionality in `test_validity.py`, confirming that invalid points are removed without affecting adjacent geometry. - Developed boundary smoothing logic in `boundary_smoothing.py`, allowing for depth smoothing while maintaining edge integrity. - Added cutout boundary management in `cutout_boundary.py`, including functions for removing boundary triangles and tapering thickness profiles. - Implemented validity checks in `validity.py` to ensure proper deletion of invalid vertices and associated wire edges.
This commit is contained in:
@@ -134,7 +134,8 @@ def test_split_input_precedes_smooth_without_cleanup_switch(kind):
|
||||
split = inputs[names.index("Split Threshold")]
|
||||
assert split.parent == inputs[names.index("Smooth")].parent
|
||||
assert split.parent.name != "Options"
|
||||
assert (split.default_value, split.min_value, split.max_value, split.subtype) == (0, 0, 1, "FACTOR")
|
||||
assert split.default_value == pytest.approx(0.1 if kind == "cutout" else 0)
|
||||
assert (split.min_value, split.max_value, split.subtype) == (0, 1, "FACTOR")
|
||||
assert "Remove Strip Faces" not in names
|
||||
|
||||
|
||||
@@ -198,7 +199,7 @@ def test_zero_split_bypasses_cleanup_and_positive_split_can_empty_mesh(kind):
|
||||
np.testing.assert_array_equal(restored, original)
|
||||
|
||||
|
||||
def test_cutout_cleans_triangle_strips_only_when_split_is_enabled():
|
||||
def test_cutout_removes_an_all_boundary_triangle_strip():
|
||||
import bmesh
|
||||
from tests.support.depth_surface import surface, evaluated
|
||||
|
||||
@@ -208,15 +209,10 @@ def test_cutout_cleans_triangle_strips_only_when_split_is_enabled():
|
||||
bmesh.ops.triangulate(mesh, faces=list(mesh.faces))
|
||||
mesh.to_mesh(obj.data)
|
||||
mesh.free()
|
||||
set_value("Split Threshold", 0.0)
|
||||
original, faces = evaluated(obj)
|
||||
assert len(faces) == 4
|
||||
set_value("Split Threshold", 0.001)
|
||||
assert not evaluated(obj)[1]
|
||||
set_value("Thickness", 0.2)
|
||||
assert not evaluated(obj)[1]
|
||||
set_value("Thickness", 0.0)
|
||||
set_value("Split Threshold", 0.0)
|
||||
restored, restored_faces = evaluated(obj)
|
||||
assert restored_faces == faces
|
||||
np.testing.assert_array_equal(restored, original)
|
||||
# Every vertex lies on the boundary, even before any depth separation.
|
||||
for split in (0.0, 0.001, 0.0):
|
||||
set_value("Split Threshold", split)
|
||||
for thickness in (0.0, 0.2):
|
||||
set_value("Thickness", thickness)
|
||||
points, faces = evaluated(obj)
|
||||
assert not faces and not len(points)
|
||||
|
||||
Reference in New Issue
Block a user