Revision: 53966
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53966
Author:   campbellbarton
Date:     2013-01-21 17:25:08 +0000 (Mon, 21 Jan 2013)
Log Message:
-----------
fix [#33937] Planar decimate + triangulate operator leaves non-triangle faces

triangulate operation will now always triangulate, even on degenerate faces.

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-01-21 
16:43:04 UTC (rev 53965)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_polygon.c   2013-01-21 
17:25:08 UTC (rev 53966)
@@ -883,7 +883,13 @@
        while (!done && f->len > 3) {
                done = true;
                l_iter = find_ear(f, projectverts, use_beauty, abscoss);
-               if (l_iter) {
+
+               /* force triangulation - if we can't find an ear the face is 
degenerate */
+               if (l_iter == NULL) {
+                       l_iter = BM_FACE_FIRST_LOOP(f);
+               }
+
+               {
                        done = false;
 /*                     printf("Subdividing face...\n");*/
                        f = BM_face_split(bm, l_iter->f, l_iter->prev->v, 
l_iter->next->v, &newl, NULL, true);
@@ -914,6 +920,8 @@
                }
        }
 
+       BLI_assert(f->len == 3);
+
 #if 0 /* XXX find_ear should now always return a corner, so no more need for 
this piece of code... */
        if (f->len > 3) {
                l_iter = BM_FACE_FIRST_LOOP(f);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to