diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-04-12 07:24:09 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2021-04-12 07:24:09 +0300 |
commit | 2a14ab998a576df6ba1fa5dc2c680d9078e58f81 (patch) | |
tree | 59505a2ac547eada0777ae23bdcedaa6f99f10ee /source/blender/bmesh/tools | |
parent | 3a05135e12415c202e3fe7d69f3722c3711a3701 (diff) |
Fix T87259: Un-Subdivide creates duplicate faces
Add argument to BM_vert_collapse_faces to remove any faces that become
duplicate as result of the collapse.
Diffstat (limited to 'source/blender/bmesh/tools')
-rw-r--r-- | source/blender/bmesh/tools/bmesh_decimate_dissolve.c | 4 | ||||
-rw-r--r-- | source/blender/bmesh/tools/bmesh_decimate_unsubdivide.c | 2 | ||||
-rw-r--r-- | source/blender/bmesh/tools/bmesh_intersect.c | 2 |
3 files changed, 4 insertions, 4 deletions
diff --git a/source/blender/bmesh/tools/bmesh_decimate_dissolve.c b/source/blender/bmesh/tools/bmesh_decimate_dissolve.c index 4a024f745ed..8b4a9bb26ac 100644 --- a/source/blender/bmesh/tools/bmesh_decimate_dissolve.c +++ b/source/blender/bmesh/tools/bmesh_decimate_dissolve.c @@ -439,7 +439,7 @@ void BM_mesh_decimate_dissolve_ex(BMesh *bm, for (i = 0; i < vinput_len; i++) { BMVert *v = vinput_arr[i]; if (LIKELY(v != NULL) && BM_vert_is_edge_pair(v)) { - BM_vert_collapse_edge(bm, v->e, v, true, true); /* join edges */ + BM_vert_collapse_edge(bm, v->e, v, true, true, true); /* join edges */ } } } @@ -482,7 +482,7 @@ void BM_mesh_decimate_dissolve_ex(BMesh *bm, BM_vert_is_edge_pair(v) #endif ) { - e_new = BM_vert_collapse_edge(bm, v->e, v, true, true); /* join edges */ + e_new = BM_vert_collapse_edge(bm, v->e, v, true, true, true); /* join edges */ if (e_new) { diff --git a/source/blender/bmesh/tools/bmesh_decimate_unsubdivide.c b/source/blender/bmesh/tools/bmesh_decimate_unsubdivide.c index 0a512fdd592..c96a7be1adf 100644 --- a/source/blender/bmesh/tools/bmesh_decimate_unsubdivide.c +++ b/source/blender/bmesh/tools/bmesh_decimate_unsubdivide.c @@ -110,7 +110,7 @@ static bool bm_vert_dissolve_fan(BMesh *bm, BMVert *v) if (tot_edge == 2) { /* check for 2 wire verts only */ if (tot_edge_wire == 2) { - return (BM_vert_collapse_edge(bm, v->e, v, true, true) != NULL); + return (BM_vert_collapse_edge(bm, v->e, v, true, true, true) != NULL); } } else if (tot_edge == 4) { diff --git a/source/blender/bmesh/tools/bmesh_intersect.c b/source/blender/bmesh/tools/bmesh_intersect.c index 81b016e9601..c176210426b 100644 --- a/source/blender/bmesh/tools/bmesh_intersect.c +++ b/source/blender/bmesh/tools/bmesh_intersect.c @@ -1622,7 +1622,7 @@ bool BM_mesh_intersect(BMesh *bm, } if (ok) { - BM_vert_collapse_edge(bm, v->e, v, true, false); + BM_vert_collapse_edge(bm, v->e, v, true, false, false); } } } |