[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60232] trunk/blender/source/blender/bmesh /intern/bmesh_polygon.c: speedup for ngon tessellation, check if the angle is an improvement before doing the full intersection check .

Campbell Barton ideasman42 at gmail.com
Thu Sep 19 09:58:47 CEST 2013


Revision: 60232
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60232
Author:   campbellbarton
Date:     2013-09-19 07:58:47 +0000 (Thu, 19 Sep 2013)
Log Message:
-----------
speedup for ngon tessellation, check if the angle is an improvement before doing the full intersection check.
with 500 verts gives approx 2x speedup.

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

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_polygon.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_polygon.c	2013-09-19 07:40:41 UTC (rev 60231)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_polygon.c	2013-09-19 07:58:47 UTC (rev 60232)
@@ -941,18 +941,18 @@
 			const BMVert *v2 = l_iter->v;
 			const BMVert *v3 = l_iter->next->v;
 
-			if (bm_face_goodline((float const (*)[2])projectverts, f,
-			                     BM_elem_index_get(v1),
-			                     BM_elem_index_get(v2),
-			                     BM_elem_index_get(v3)))
-			{
-				/* Compute highest cos (i.e. narrowest angle) of this tri. */
-				cos = max_fff(abscoss[i],
-				              fabsf(cos_v3v3v3(v2->co, v3->co, v1->co)),
-				              fabsf(cos_v3v3v3(v3->co, v1->co, v2->co)));
+			/* Compute highest cos (i.e. narrowest angle) of this tri. */
+			cos = max_fff(abscoss[i],
+			              fabsf(cos_v3v3v3(v2->co, v3->co, v1->co)),
+			              fabsf(cos_v3v3v3(v3->co, v1->co, v2->co)));
 
-				/* Compare to prev best (i.e. lowest) cos. */
-				if (cos < cos_best) {
+			/* Compare to prev best (i.e. lowest) cos. */
+			if (cos < cos_best) {
+				if (bm_face_goodline((float const (*)[2])projectverts, f,
+				                     BM_elem_index_get(v1),
+				                     BM_elem_index_get(v2),
+				                     BM_elem_index_get(v3)))
+				{
 					/* We must check this tri would not leave a (too much) degenerated remaining face! */
 					/* For now just assume if the average of cos of all
 					 * "remaining face"'s corners is below a given threshold, it's OK. */




More information about the Bf-blender-cvs mailing list