[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51509] trunk/blender/source/blender/bmesh /intern/bmesh_decimate.c: decimator - small optimization on check for degenerate edges.

Campbell Barton ideasman42 at gmail.com
Mon Oct 22 19:33:11 CEST 2012


Revision: 51509
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51509
Author:   campbellbarton
Date:     2012-10-22 17:33:11 +0000 (Mon, 22 Oct 2012)
Log Message:
-----------
decimator - small optimization on check for degenerate edges.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_decimate.c

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_decimate.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_decimate.c	2012-10-22 17:19:05 UTC (rev 51508)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_decimate.c	2012-10-22 17:33:11 UTC (rev 51509)
@@ -496,6 +496,18 @@
 	        );
 }
 
+/* takes the edges loop */
+BLI_INLINE int bm_edge_is_manifold_or_boundary(BMLoop *l)
+{
+#if 0
+	/* less optimized version of check below */
+	return (BM_edge_is_manifold(l->e) || BM_edge_is_boundary(l->e);
+#else
+	/* if the edge is a boundary it points to its self, else this must be a manifold */
+	return LIKELY(l) && LIKELY(l->radial_next->radial_next == l);
+#endif
+}
+
 static int bm_edge_collapse_is_degenerate(BMEdge *e_first)
 {
 	/* simply check that there is no overlap between faces and edges of each vert,
@@ -506,7 +518,7 @@
 	/* clear flags on both disks */
 	e_iter = e_first;
 	do {
-		if (!(BM_edge_is_manifold(e_iter) || BM_edge_is_boundary(e_iter))) {
+		if (!bm_edge_is_manifold_or_boundary(e_iter->l)) {
 			return TRUE;
 		}
 		bm_edge_tag_disable(e_iter);
@@ -514,7 +526,7 @@
 
 	e_iter = e_first;
 	do {
-		if (!(BM_edge_is_manifold(e_iter) || BM_edge_is_boundary(e_iter))) {
+		if (!bm_edge_is_manifold_or_boundary(e_iter->l)) {
 			return TRUE;
 		}
 		bm_edge_tag_disable(e_iter);




More information about the Bf-blender-cvs mailing list