Posts filed under ‘Coding Stuff’

BMesh Status

bmesh logo

Myself (Joseph Eagar), Geoffry Bantle, and Levi Schooley have been working on a replacement for the old, unmaintainable, outdated mesh modeling code in blender.  Geoffry did most of the difficult design work, and wrote bmesh, a quasi-independant mesh library, with some help from Levi, and now myself.

My task is to integrate this new mesh library into blender, which involves quite a lot of reworking of existing tools.  I’m the only developer working on this now, so it’s quite an undertaking.  The work is being done in a branch, location at

Why This Is Important

The old mesh code suffered from two major problems: it was close to unmaintainable, and it didn’t support polygons of more then 4 sides (which is a requirement for more advanced modeling tools to work properly).

The original solution was hemesh, a half-edge mesh implementation for blender; however, half-edge turned out to be an unworkable data structure for blender, so Geoffry Bantle designed and implemented a new structure, bmesh.  The first version was used for the revamped bevel tool, while the second is what I’m integrating into blender.

How This Benefits You

bmesh spiral ngon

A complex spiral ngon

The integration of bmesh will have myriad benefits to users.  Winged extrusion, better beveling tools, and more stable tools in general will be possible.  Support for ngons will allow more flexibility in building subdivision surfaces, and produce cleaner meshes for the architectural visualization people.  Many new tools will be possible.

Current Status

Vertex Dissolve Tool

Vertex Dissolve Tool

I’ve finished ripping out the old EditMesh (which did mesh editmode) and replaced it with bmesh.  Many things are still not quite working right or missing, but (as per the initial design) most of the old editmesh tools still work, internally converting the BMesh to an EditMesh (with fgons) as needed.

I’ve recoded extrude and edge (wkey) subdivide, and I also coded three new experimental tools, vertex dissolve, face dissolve, and vertex connect (vert dissolve can be found in the xkey menu, while to dissolve faces, simply select adjacent faces and press the fkey.   To connect vertices within the same face, select them and press the fkey).

I’ve also modified the format used to store meshes outside of editmode to support ngons.  This affects the .blend format, but is mostly backwards-compatible.

Sounds Cool? Well I Wouldn’t Use It Yet

Bmesh isn’t yet ready for full-scale testing.  There’s still some bugs I need to work out, and at the moment it’s somewhat usable, but very unreliable.  I’d not recommend testing it just yet.

Donations Are Welcome

I’m currently the only developer working on this project.  It’s a massive undertaking, so any financial help I can get will go a long way.  Even small donations help.

May 26, 2009 at 5:24 pm 42 comments