From 2a14ab998a576df6ba1fa5dc2c680d9078e58f81 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 12 Apr 2021 14:24:09 +1000 Subject: 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. --- source/blender/bmesh/operators/bmo_dissolve.c | 6 +++--- source/blender/bmesh/operators/bmo_offset_edgeloops.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'source/blender/bmesh/operators') diff --git a/source/blender/bmesh/operators/bmo_dissolve.c b/source/blender/bmesh/operators/bmo_dissolve.c index da2603ad8cd..6723c0f7cb0 100644 --- a/source/blender/bmesh/operators/bmo_dissolve.c +++ b/source/blender/bmesh/operators/bmo_dissolve.c @@ -242,7 +242,7 @@ void bmo_dissolve_faces_exec(BMesh *bm, BMOperator *op) BM_ITER_MESH_MUTABLE (v, v_next, &viter, bm, BM_VERTS_OF_MESH) { if (BMO_vert_flag_test(bm, v, VERT_MARK)) { if (BM_vert_is_edge_pair(v)) { - BM_vert_collapse_edge(bm, v->e, v, true, true); + BM_vert_collapse_edge(bm, v->e, v, true, true, true); } } } @@ -355,7 +355,7 @@ void bmo_dissolve_edges_exec(BMesh *bm, BMOperator *op) BM_ITER_MESH_MUTABLE (v, v_next, &iter, bm, BM_VERTS_OF_MESH) { if (BMO_vert_flag_test(bm, v, VERT_MARK)) { if (BM_vert_is_edge_pair(v)) { - BM_vert_collapse_edge(bm, v->e, v, true, true); + BM_vert_collapse_edge(bm, v->e, v, true, true, true); } } } @@ -462,7 +462,7 @@ void bmo_dissolve_verts_exec(BMesh *bm, BMOperator *op) /* final cleanup */ BMO_ITER (v, &oiter, op->slots_in, "verts", BM_VERT) { if (BM_vert_is_edge_pair(v)) { - BM_vert_collapse_edge(bm, v->e, v, false, true); + BM_vert_collapse_edge(bm, v->e, v, false, true, true); } } diff --git a/source/blender/bmesh/operators/bmo_offset_edgeloops.c b/source/blender/bmesh/operators/bmo_offset_edgeloops.c index d723e128bf1..2c7e478b549 100644 --- a/source/blender/bmesh/operators/bmo_offset_edgeloops.c +++ b/source/blender/bmesh/operators/bmo_offset_edgeloops.c @@ -263,7 +263,7 @@ void bmo_offset_edgeloops_exec(BMesh *bm, BMOperator *op) } while ((v = STACK_POP(varr))) { - bmesh_kernel_join_edge_kill_vert(bm, v->e, v, true, false, false); + bmesh_kernel_join_edge_kill_vert(bm, v->e, v, true, false, false, true); } } } -- cgit v1.2.3