[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44445] trunk/blender/source/blender/bmesh /intern/bmesh_mods.c: fix for vertex dissolve not doing anything with a single vertex on a single face .

Campbell Barton ideasman42 at gmail.com
Sun Feb 26 01:43:51 CET 2012


Revision: 44445
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44445
Author:   campbellbarton
Date:     2012-02-26 00:43:47 +0000 (Sun, 26 Feb 2012)
Log Message:
-----------
fix for vertex dissolve not doing anything with a single vertex on a single face.
now collapse the vertex into the edges.

also disable removing the vertrex when it could not be collapsed (old code), found it could would connected faces which isn't acceptable - now return fail in that case.

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

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_mods.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_mods.c	2012-02-25 23:56:20 UTC (rev 44444)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_mods.c	2012-02-26 00:43:47 UTC (rev 44445)
@@ -72,20 +72,22 @@
 		}
 		else if (!v->e->l) {
 			if (len == 2) {
-				BM_vert_collapse_edge(bm, v->e, v);
+				return (BM_vert_collapse_edge(bm, v->e, v) != NULL);
 			}
 			else {
-				/* this may be too harsh, we could do nothing here instead.
-				 * To test, connect 3 edges to a vert and dissolve the vert. It will be removed */
-
-				BM_vert_kill(bm, v); /* will kill edges too */
+				/* used to kill the vertex here, but it may be connected to faces.
+				 * so better do nothing */
+				return FALSE;
 			}
-			return TRUE;
 		}
 		else {
 			return FALSE;
 		}
 	}
+	else if (len == 2 && BM_vert_face_count(v) == 1) {
+		/* boundry vertex on a face */
+		return (BM_vert_collapse_edge(bm, v->e, v) != NULL);
+	}
 	else {
 		return BM_disk_dissolve(bm, v);
 	}




More information about the Bf-blender-cvs mailing list