[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