Revision: 53915
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53915
Author: nicholasbishop
Date: 2013-01-20 00:46:33 +0000 (Sun, 20 Jan 2013)
Log Message:
-----------
Delete loose edges left behind by sculpting with collapse-short-edges
After deleting a face, check for unused edges and delete them.
Fixes bug [#33891]
projects.blender.org/tracker/?func=detail&aid=33891&group_id=9&atid=498
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c
Modified: trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c 2013-01-20
00:19:57 UTC (rev 53914)
+++ trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c 2013-01-20
00:46:33 UTC (rev 53915)
@@ -817,10 +817,13 @@
for (i = 0; i < deleted_faces->count; i++) {
BMFace *f_del = BLI_buffer_at(deleted_faces, BMFace *, i);
BMVert *v_tri[3];
+ BMEdge *e_tri[3];
int j;
- // BM_iter_as_array(NULL, BM_VERTS_OF_FACE, f_del, (void
**)v_tri, 3);
+ /* Get vertices and edges of face */
BM_face_as_array_vert_tri(f_del, v_tri);
+ for (j = 0; j < 3; j++)
+ e_tri[j] = BM_edge_exists(v_tri[j], v_tri[j == 2 ? 0 :
j + 1]);
/* Check if any of the face's vertices are now unused, if so
* remove them from the PBVH */
@@ -838,6 +841,13 @@
pbvh_bmesh_face_remove(bvh, f_del);
BM_face_kill(bvh->bm, f_del);
+ /* Check if any of the face's edges are now unused by any
+ * face, if so delete them */
+ for (j = 0; j < 3; j++) {
+ if (BM_edge_face_count(e_tri[j]) == 0)
+ BM_edge_kill(bvh->bm, e_tri[j]);
+ }
+
/* Delete unused vertices */
for (j = 0; j < 3; j++) {
if (v_tri[j]) {
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs