Commit: 6f475521e4242bf0674b12e6363ef06c65c97be2
Author: Campbell Barton
Date:   Sat Nov 28 14:00:28 2015 +1100
Branches: bmesh-boolean-experiment
https://developer.blender.org/rB6f475521e4242bf0674b12e6363ef06c65c97be2

BMesh boolean no longer splits geometry

Duplicate geometry was created along intersections.

===================================================================

M       source/blender/bmesh/tools/bmesh_intersect.c
M       source/blender/modifiers/intern/MOD_boolean.c

===================================================================

diff --git a/source/blender/bmesh/tools/bmesh_intersect.c 
b/source/blender/bmesh/tools/bmesh_intersect.c
index b867053..6437835 100644
--- a/source/blender/bmesh/tools/bmesh_intersect.c
+++ b/source/blender/bmesh/tools/bmesh_intersect.c
@@ -481,6 +481,22 @@ static BMVert *bm_isect_edge_tri(
        return NULL;
 }
 
+static bool bm_loop_filter_fn(const BMLoop *l, void *UNUSED(user_data))
+{
+       if (l->radial_next != l) {
+               BMLoop *l_iter = l->radial_next;
+               const char hflag_test = BM_ELEM_DRAW;  /* XXX, set in 
MOD_boolean.c */
+               const char hflag = BM_elem_flag_test(l->f, hflag_test);
+               do {
+                       if (BM_elem_flag_test(l_iter->f, hflag_test) != hflag) {
+                               return false;
+                       }
+               } while ((l_iter = l_iter->radial_next) != l);
+               return true;
+       }
+       return false;
+}
+
 /**
  * Return true if we have any intersections.
  */
@@ -1570,7 +1586,7 @@ bool BM_mesh_intersect(
                groups_array = MEM_mallocN(sizeof(*groups_array) * 
(size_t)bm->totface, __func__);
                group_tot = BM_mesh_calc_face_groups(
                        bm, groups_array, &group_index,
-                       NULL, NULL,
+                       bm_loop_filter_fn, NULL,
                        0, BM_EDGE);
 
 #ifdef USE_DUMP
diff --git a/source/blender/modifiers/intern/MOD_boolean.c 
b/source/blender/modifiers/intern/MOD_boolean.c
index db795c9..fb47ab1 100644
--- a/source/blender/modifiers/intern/MOD_boolean.c
+++ b/source/blender/modifiers/intern/MOD_boolean.c
@@ -247,7 +247,7 @@ static DerivedMesh *applyModifier(
                                        bm,
                                        looptris, tottri,
                                        bm_face_isect_pair, NULL,
-                                       false, true, false,
+                                       false, false, false,
                                        bmd->operation,
                                        bmd->threshold);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to