[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53966] trunk/blender/source/blender/bmesh /intern/bmesh_polygon.c: fix [#33937] Planar decimate + triangulate operator leaves non-triangle faces
Campbell Barton
ideasman42 at gmail.com
Mon Jan 21 18:25:09 CET 2013
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);
More information about the Bf-blender-cvs
mailing list