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. */

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to