[Bf-blender-cvs] [1b00351] master: BMesh: boundary walker, skip non-manifold loops
Campbell Barton
noreply at git.blender.org
Wed May 11 21:56:45 CEST 2016
Commit: 1b003511be5c8a048ed376f8dec9372b7b1b86fb
Author: Campbell Barton
Date: Thu May 12 04:39:01 2016 +1000
Branches: master
https://developer.blender.org/rB1b003511be5c8a048ed376f8dec9372b7b1b86fb
BMesh: boundary walker, skip non-manifold loops
Instead of setting an exception, treat non-manifold edges as boundaries.
===================================================================
M source/blender/bmesh/intern/bmesh_walkers_impl.c
===================================================================
diff --git a/source/blender/bmesh/intern/bmesh_walkers_impl.c b/source/blender/bmesh/intern/bmesh_walkers_impl.c
index 627f835..36bbdde 100644
--- a/source/blender/bmesh/intern/bmesh_walkers_impl.c
+++ b/source/blender/bmesh/intern/bmesh_walkers_impl.c
@@ -711,13 +711,6 @@ static void *bmw_IslandboundWalker_step(BMWalker *walker)
e = l->e;
v = BM_edge_other_vert(e, iwalk->lastv);
-
- if (!BM_vert_is_manifold(v)) {
- BMW_reset(walker);
- BMO_error_raise(walker->bm, NULL, BMERR_WALKER_FAILED,
- "Non-manifold vert while searching region boundary");
- return NULL;
- }
/* pop off current state */
BMW_state_remove(walker);
@@ -726,7 +719,7 @@ static void *bmw_IslandboundWalker_step(BMWalker *walker)
while (1) {
l = BM_loop_other_edge_loop(l, v);
- if (l != l->radial_next) {
+ if (BM_loop_is_manifold(l)) {
l = l->radial_next;
f = l->f;
e = l->e;
@@ -737,6 +730,7 @@ static void *bmw_IslandboundWalker_step(BMWalker *walker)
}
}
else {
+ /* treat non-manifold edges as boundaries */
f = l->f;
e = l->e;
break;
More information about the Bf-blender-cvs
mailing list