[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