[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54265] trunk/blender/source/blender/bmesh /intern/bmesh_log.c: Remove loose edges created during undo in dynamic-topology sculpt mode

Nicholas Bishop nicholasbishop at gmail.com
Sat Feb 2 17:54:18 CET 2013


Revision: 54265
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54265
Author:   nicholasbishop
Date:     2013-02-02 16:54:18 +0000 (Sat, 02 Feb 2013)
Log Message:
-----------
Remove loose edges created during undo in dynamic-topology sculpt mode

Fixes [#34043] "Dyntopo: noise appear during sculpting (parasite edges)"
projects.blender.org/tracker/index.php?func=detail&aid=34043&group_id=9&atid=498

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

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_log.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_log.c	2013-02-02 14:11:58 UTC (rev 54264)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_log.c	2013-02-02 16:54:18 UTC (rev 54265)
@@ -252,8 +252,25 @@
 		void *key = BLI_ghashIterator_getKey(&gh_iter);
 		unsigned int id = GET_INT_FROM_POINTER(key);
 		BMFace *f = bm_log_face_from_id(log, id);
+		BMVert *v_tri[3];
+		BMEdge *e_tri[3];
+		int i;
 
+		/* Remove any unused edges */
+		BM_face_as_array_vert_tri(f, v_tri);
+		for (i = 0; i < 3; i++) {
+			BMVert *v1 = v_tri[i];
+			BMVert *v2 = v_tri[i == 2 ? 0 : i + 1];
+			e_tri[i] = BM_edge_exists(v1, v2);
+		}
+
 		BM_face_kill(bm, f);
+
+		for (i = 0; i < 3; i++) {
+			BMEdge *e = e_tri[i];
+			if (BM_edge_face_count(e) == 0)
+				BM_edge_kill(bm, e);
+		}
 	}
 }
 




More information about the Bf-blender-cvs mailing list