fix was infact for: [#29907] Uncoherent behaviour of Delete Edge Loop On Tue, Jan 17, 2012 at 2:40 PM, Campbell Barton <[email protected]> wrote: > Revision: 43438 > > http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43438 > Author: campbellbarton > Date: 2012-01-17 03:40:37 +0000 (Tue, 17 Jan 2012) > Log Message: > ----------- > fix own error [#28645] TODO: dissolve edges doesn't delete lonely vertices on > edges > > made this mistake when refactoring edge collapse code, though overall I think > the function works better then before now. > > Modified Paths: > -------------- > branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c > branches/bmesh/blender/source/blender/bmesh/operators/dissolveops.c > > Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c > =================================================================== > --- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c > 2012-01-17 02:20:23 UTC (rev 43437) > +++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c > 2012-01-17 03:40:37 UTC (rev 43438) > @@ -408,17 +408,21 @@ > BMEdge *ne = NULL; > BMVert *tv = bmesh_edge_getothervert(ke, kv); > > + BMEdge *e2; > + BMVert *tv2; > > BMIter iter; > BMLoop *l=NULL, *kvloop=NULL, *tvloop=NULL; > BMFace **faces = NULL, *f; > BLI_array_staticdeclare(faces, 8); > + > void *src[2]; > float w[2]; > > /* Only intended to be called for 2-valence vertices */ > BLI_assert(bmesh_disk_count(kv) <= 2); > > + > w[0] = 1.0f - fac; > w[1] = fac; > > @@ -441,19 +445,13 @@ > BLI_array_append(faces, f); > } > > - /* Collapse between 2+ faces */ > - if (faces && BLI_array_count(faces) > 1) { > - BMFace *f2; > - BMEdge *e2; > - BMVert *tv2; > + BM_Data_Interp_From_Verts(bm, kv, tv, kv, fac); > > - /* only call when making real changes */ > - BM_Data_Interp_From_Verts(bm, kv, tv, kv, fac); > + e2 = bmesh_disk_nextedge(ke, kv); > + tv2 = BM_OtherEdgeVert(e2, kv); > > - e2 = bmesh_disk_nextedge(ke, kv); > - tv2 = BM_OtherEdgeVert(e2, kv); > - > - f2 = BM_Join_Faces(bm, faces, BLI_array_count(faces)); > + if (BLI_array_count(faces) > 1) { > + BMFace *f2 = BM_Join_Faces(bm, faces, BLI_array_count(faces)); > if (f2) { > BMLoop *nl = NULL; > if (BM_Split_Face(bm, f2, tv, tv2, &nl, NULL)) { > @@ -461,7 +459,12 @@ > } > } > } > - /* else we cant do anything! */ > + else { /* single face or no faces */ > + /* same as BM_Collapse_Vert_Edges() however we already > + * have vars to perform this operation so dont call. */ > + bmesh_jekv(bm, ke, kv); > + ne = BM_Edge_Exist(tv, tv2); > + } > > BLI_array_free(faces); > > @@ -472,8 +475,7 @@ > /** > * BM_Collapse_Vert_Edges > * > - * Collapses a vertex onto another vertex it shares an edge with. Fac defines > - * the amount of interpolation for Custom Data. > + * Collapses a vertex onto another vertex it shares an edge with. > * > * Note that this is not a general edge collapse function. > * > > Modified: branches/bmesh/blender/source/blender/bmesh/operators/dissolveops.c > =================================================================== > --- branches/bmesh/blender/source/blender/bmesh/operators/dissolveops.c > 2012-01-17 02:20:23 UTC (rev 43437) > +++ branches/bmesh/blender/source/blender/bmesh/operators/dissolveops.c > 2012-01-17 03:40:37 UTC (rev 43438) > @@ -159,10 +159,9 @@ > > BM_ITER(v, &iter, bm, BM_VERTS_OF_MESH, NULL) { > if (BMO_TestFlag(bm, v, VERT_MARK) && > - BM_Vert_EdgeCount(v) == 2) > + BM_Vert_EdgeCount(v) == 2) > { > - BLI_array_growone(verts); > - verts[BLI_array_count(verts)-1] = v; > + BLI_array_append(verts, v); > } > } > > @@ -224,8 +223,8 @@ > BMVert *v1= e->v1, *v2= e->v2; > > /*collapse the vert*/ > - if (BM_Vert_EdgeCount(v1) == 2) > BM_Collapse_Vert_Edges(bm, v1->e, v1); > - if (BM_Vert_EdgeCount(v2) == 2) > BM_Collapse_Vert_Edges(bm, v2->e, v2); > + if (BM_Vert_EdgeCount(v1) == 2) > BM_Collapse_Vert_Faces(bm, v1->e, v1, 1.0f); > + if (BM_Vert_EdgeCount(v2) == 2) > BM_Collapse_Vert_Faces(bm, v2->e, v2, 1.0f); > > } > } > @@ -298,7 +297,7 @@ > if (BM_Vert_EdgeCount(v) == 2) { > > /*collapse the vert*/ > - BM_Collapse_Vert_Edges(bm, v->e, v); > + BM_Collapse_Vert_Faces(bm, v->e, v, 1.0f); > continue; > } > > > _______________________________________________ > Bf-blender-cvs mailing list > [email protected] > http://lists.blender.org/mailman/listinfo/bf-blender-cvs
-- - Campbell _______________________________________________ Bf-blender-cvs mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-blender-cvs
