[Bf-taskforce25] BMesh integration status

Brecht Van Lommel brecht at blender.org
Wed Jul 22 15:01:59 CEST 2009


Hi Joe,

Thanks for the status update, nice progress.

Brecht.

On Tue, 2009-07-21 at 07:05 -0600, joe wrote:
> I've done quite a lot of work at integrating bmesh into the 2.5
> codebase.  I've replaced EditMesh with BMesh (though not completely as
> yet, a lot of stuff still uses EditMesh), changed mesh DNA, modified
> DerivedMesh and made a good start at getting all the modifiers working
> with ngons, and a bunch of other stuff.
> 
> BMesh doesn't directly replace EditMesh.  Instead, I created a wrapper
> structure around BMesh called BMEditMesh, that stores a bmesh, it's
> triangle tesselation, and a bunch of stuff that didn't belong in the
> BMesh structure itself.  I've ported a lot of tools to this new
> infrastructure, though there's still a lot to be done.  I've made the
> remaining EditMesh tools interface with BMesh, though this hasn't
> worked out well; I hope to port over all existing EditMesh tools
> before commencing serious user testing.
> 
> The changes I made to mesh DNA are pretty much as we discussed
> earlier.  MFaces are now used to store the tesselation of the mesh,
> while a new layer (MPolys and MLoops) are used to store real faces.
> MPolys logically represent a face, while the face boundary itself is
> defined by a series of MLoops (stored in one contiguous array for all
> faces).
> 
> The new face structures are:
> 
> typedef struct MPoly {
>     int loopstart;
>     int mat_nr;
>     int totloop;
>     int flag;
> } MPoly;
> 
> typedef struct MLoop {
> //vert, edge indices
>     int v, e;
> } MLoop;
> 
> Mesh {
> <all the stuff in Mesh>
>     MPoly *mpoly;
>     MLoop *mloop;
> }
> 
> MPoly->loopstart points into mesh->mloop.  MPoly->totloop defines the
> number of MLoops, and together the mpoly and the mloops define the
> boundary of the face.
> 
> On the DerivedMesh side, I added simple face iterators to DerivedMesh.
>  I did this for two reasons; I wanted to evaluate the possibility of
> porting DerivedMesh to be entirely iterator-based, and it also seemed
> like using iterators would be easier then matching the design of the
> rest of DerivedMesh, given the new split nature of faces into
> MPolys/MLoops.  I'm no longer convinced this was a good idea, and I
> may rewrite it if I get the chance.
> 
> The Subsurf, array, and mirror modifiers are now ngon-aware.  Subsurf
> still has some work left to be done (e.g. with CustomData
> interpolation).  Both array and mirror now use bmesh; array is mostly
> working, but has a few minor things done, while mirror is pretty much
> finished.
> 
> At this point, I've started tackling the UV editor/unwrapper code.
> UVs are now stored per-loop, and I've managed to port much of the uv
> editor code to this new representation in the past few days.  My plan
> is to finish this, port over vertex/weight paint, and then concentrate
> for a while on stabilizing mesh editmode; rewrite old EditMesh tools
> in BMesh, fix bugs, and in general get that stabilized.  Once I've
> gotten this next bit with the UV and vertex/weight paint code done, I
> figure I'll be finished with the major refactors, and can concentrate
> on getting what I already have stabilized.
> 
> Joe
> _______________________________________________
> Bf-taskforce25 mailing list
> Bf-taskforce25 at blender.org
> http://lists.blender.org/mailman/listinfo/bf-taskforce25
> 



More information about the Bf-taskforce25 mailing list