[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