[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