[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52327] trunk/blender/source/blender: bevel now only takes manifold edges (so it doesnt need to check for them)

Campbell Barton ideasman42 at gmail.com
Sun Nov 18 10:33:13 CET 2012


Revision: 52327
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52327
Author:   campbellbarton
Date:     2012-11-18 09:33:11 +0000 (Sun, 18 Nov 2012)
Log Message:
-----------
bevel now only takes manifold edges (so it doesnt need to check for them)

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/operators/bmo_bevel.c
    trunk/blender/source/blender/bmesh/tools/bmesh_bevel.c
    trunk/blender/source/blender/modifiers/intern/MOD_bevel.c

Modified: trunk/blender/source/blender/bmesh/operators/bmo_bevel.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_bevel.c	2012-11-18 09:25:57 UTC (rev 52326)
+++ trunk/blender/source/blender/bmesh/operators/bmo_bevel.c	2012-11-18 09:33:11 UTC (rev 52327)
@@ -32,20 +32,27 @@
 
 void bmo_bevel_exec(BMesh *bm, BMOperator *op)
 {
-	BMOIter siter;
-	BMVert *v;
-
 	const float offset = BMO_slot_float_get(op, "offset");
 	const int seg = BMO_slot_int_get(op, "segments");
 
 	if (offset > 0) {
+		BMOIter siter;
+		BMEdge *e;
+		BMVert *v;
+
 		/* first flush 'geom' into flags, this makes it possible to check connected data */
 		BM_mesh_elem_hflag_disable_all(bm, BM_VERT | BM_EDGE, BM_ELEM_TAG, FALSE);
 
-		BMO_ITER (v, &siter, bm, op, "geom", BM_VERT | BM_EDGE) {
+		BMO_ITER (v, &siter, bm, op, "geom", BM_VERT) {
 			BM_elem_flag_enable(v, BM_ELEM_TAG);
 		}
 
+		BMO_ITER (e, &siter, bm, op, "geom", BM_EDGE) {
+			if (BM_edge_is_manifold(e)) {
+				BM_elem_flag_enable(e, BM_ELEM_TAG);
+			}
+		}
+
 		BM_mesh_bevel(bm, offset, seg);
 	}
 }

Modified: trunk/blender/source/blender/bmesh/tools/bmesh_bevel.c
===================================================================
--- trunk/blender/source/blender/bmesh/tools/bmesh_bevel.c	2012-11-18 09:25:57 UTC (rev 52326)
+++ trunk/blender/source/blender/bmesh/tools/bmesh_bevel.c	2012-11-18 09:33:11 UTC (rev 52327)
@@ -1414,12 +1414,8 @@
 
 	BM_ITER_ELEM (bme, &iter, v, BM_EDGES_OF_VERT) {
 		if (BM_elem_flag_test(bme, BM_ELEM_TAG)) {
-			if (BM_edge_is_manifold(bme)) {
-				nsel++;
-			}
-			else {
-				BM_elem_flag_disable(bme, BM_ELEM_TAG);
-			}
+			BLI_assert(BM_edge_is_manifold(bme));
+			nsel++;
 		}
 	}
 
@@ -1672,6 +1668,7 @@
 
 /**
  * currently only bevels BM_ELEM_TAG'd verts and edges
+ * all tagged edges _must_ be manifold.
  */
 void BM_mesh_bevel(BMesh *bm, const float offset, const float segments)
 {

Modified: trunk/blender/source/blender/modifiers/intern/MOD_bevel.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_bevel.c	2012-11-18 09:25:57 UTC (rev 52326)
+++ trunk/blender/source/blender/modifiers/intern/MOD_bevel.c	2012-11-18 09:33:11 UTC (rev 52327)
@@ -134,9 +134,11 @@
 	else {
 		/* crummy, is there a way just to operator on all? - campbell */
 		BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
-			BM_elem_flag_enable(e, BM_ELEM_TAG);
-			BM_elem_flag_enable(e->v1, BM_ELEM_TAG);
-			BM_elem_flag_enable(e->v2, BM_ELEM_TAG);
+			if (BM_edge_is_manifold(e)) {
+				BM_elem_flag_enable(e, BM_ELEM_TAG);
+				BM_elem_flag_enable(e->v1, BM_ELEM_TAG);
+				BM_elem_flag_enable(e->v2, BM_ELEM_TAG);
+			}
 		}
 	}
 




More information about the Bf-blender-cvs mailing list