[Bf-blender-cvs] [df3116b] master: Fix for un-subdivide creating duplicate faces
Campbell Barton
noreply at git.blender.org
Wed Mar 5 15:00:47 CET 2014
Commit: df3116b3269f428ffbbcc31a1f786da0d6510400
Author: Campbell Barton
Date: Thu Mar 6 01:00:18 2014 +1100
https://developer.blender.org/rBdf3116b3269f428ffbbcc31a1f786da0d6510400
Fix for un-subdivide creating duplicate faces
===================================================================
M source/blender/bmesh/tools/bmesh_decimate_unsubdivide.c
===================================================================
diff --git a/source/blender/bmesh/tools/bmesh_decimate_unsubdivide.c b/source/blender/bmesh/tools/bmesh_decimate_unsubdivide.c
index 092a004..ffc6808 100644
--- a/source/blender/bmesh/tools/bmesh_decimate_unsubdivide.c
+++ b/source/blender/bmesh/tools/bmesh_decimate_unsubdivide.c
@@ -41,6 +41,8 @@ static bool bm_vert_dissolve_fan_test(BMVert *v)
BMIter iter;
BMEdge *e;
+ BMVert *varr[4];
+
unsigned int tot_edge = 0;
unsigned int tot_edge_boundary = 0;
unsigned int tot_edge_manifold = 0;
@@ -56,17 +58,25 @@ static bool bm_vert_dissolve_fan_test(BMVert *v)
else if (BM_edge_is_wire(e)) {
tot_edge_wire++;
}
+
+ /* bail out early */
+ if (tot_edge == 4) {
+ return false;
+ }
+
+ /* used to check overlapping faces */
+ varr[tot_edge] = BM_edge_other_vert(e, v);
+
tot_edge++;
}
- if ((tot_edge == 4) && (tot_edge_boundary == 0) && (tot_edge_manifold == 4)) {
- return true;
- }
- else if ((tot_edge == 3) && (tot_edge_boundary == 0) && (tot_edge_manifold == 3)) {
- return true;
- }
- else if ((tot_edge == 3) && (tot_edge_boundary == 2) && (tot_edge_manifold == 1)) {
- return true;
+ if (((tot_edge == 4) && (tot_edge_boundary == 0) && (tot_edge_manifold == 4)) ||
+ ((tot_edge == 3) && (tot_edge_boundary == 0) && (tot_edge_manifold == 3)) ||
+ ((tot_edge == 3) && (tot_edge_boundary == 2) && (tot_edge_manifold == 1)))
+ {
+ if (!BM_face_exists(varr, tot_edge, NULL)) {
+ return true;
+ }
}
else if ((tot_edge == 2) && (tot_edge_wire == 2)) {
return true;
More information about the Bf-blender-cvs
mailing list