[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52325] trunk/blender/source/blender/ modifiers/intern/MOD_bevel.c: commented bevel modifier code now calls bevel direct rather then the bevel operator .

Campbell Barton ideasman42 at gmail.com
Sun Nov 18 09:56:49 CET 2012


Revision: 52325
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52325
Author:   campbellbarton
Date:     2012-11-18 08:56:47 +0000 (Sun, 18 Nov 2012)
Log Message:
-----------
commented bevel modifier code now calls bevel direct rather then the bevel operator.

Modified Paths:
--------------
    trunk/blender/source/blender/modifiers/intern/MOD_bevel.c

Modified: trunk/blender/source/blender/modifiers/intern/MOD_bevel.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_bevel.c	2012-11-18 08:35:27 UTC (rev 52324)
+++ trunk/blender/source/blender/modifiers/intern/MOD_bevel.c	2012-11-18 08:56:47 UTC (rev 52325)
@@ -92,20 +92,15 @@
 
 #ifdef USE_BM_BEVEL_OP_AS_MOD
 
-#define GEOM_MARK   1
-
 /* BMESH_TODO
  *
- * this bevel calls the operator which is missing many of the options
- * which the bevel modifier in trunk has.
+ * this bevel calls the new bevel code (added since 2.64)
+ * which is missing many of the options which the bevel modifier from 2.4x has.
  * - no vertex bevel
  * - no weight bevel
  *
  * These will need to be added to the bmesh operator.
- *       - campbell
- *
- * note: this code is very close to MOD_edgesplit.c.
- * note: if 0'd code from trunk included below.
+ * - campbell
  */
 static DerivedMesh *applyModifier(ModifierData *md, struct Object *UNUSED(ob),
                                   DerivedMesh *dm,
@@ -116,14 +111,11 @@
 	BMIter iter;
 	BMEdge *e;
 	BevelModifierData *bmd = (BevelModifierData *) md;
-	float threshold = cos((bmd->bevel_angle + 0.00001f) * (float)M_PI / 180.0f);
+	float threshold = cosf((bmd->bevel_angle + 0.00001f) * (float)M_PI / 180.0f);
 	const int segments = 16;  /* XXX */
 
 	bm = DM_to_bmesh(dm);
 
-	BM_mesh_normals_update(bm, FALSE);
-	BMO_push(bm, NULL);
-
 	if (bmd->lim_flags & BME_BEVEL_ANGLE) {
 		BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
 			/* check for 1 edge having 2 face users */
@@ -132,9 +124,9 @@
 			    (l2 = e->l->radial_next) != l1)
 			{
 				if (dot_v3v3(l1->f->no, l2->f->no) < threshold) {
-					BMO_elem_flag_enable(bm, e, GEOM_MARK);
-					BMO_elem_flag_enable(bm, e->v1, GEOM_MARK);
-					BMO_elem_flag_enable(bm, e->v2, GEOM_MARK);
+					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);
 				}
 			}
 		}
@@ -142,20 +134,19 @@
 	else {
 		/* crummy, is there a way just to operator on all? - campbell */
 		BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
-			BMO_elem_flag_enable(bm, e, GEOM_MARK);
-			BMO_elem_flag_enable(bm, e->v1, GEOM_MARK);
-			BMO_elem_flag_enable(bm, e->v2, GEOM_MARK);
+			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);
 		}
 	}
 
-	BMO_op_callf(bm, BMO_FLAG_DEFAULTS,
-	             "bevel geom=%fve offset=%f segments=%i",
-	             GEOM_MARK, bmd->value, segments);
-	BMO_pop(bm);
+	BM_mesh_bevel(bm, bmd->value, segments);
 
 	result = CDDM_from_bmesh(bm, TRUE);
 	BM_mesh_free(bm);
 
+	CDDM_calc_normals(result);
+
 	return result;
 }
 




More information about the Bf-blender-cvs mailing list