[Bf-committers] BMesh Booleans, ready for testing.
ideasman42 at gmail.com
Fri Dec 11 12:14:30 CET 2015
On Fri, Dec 11, 2015 at 8:48 PM, Campbell Barton <ideasman42 at gmail.com> wrote:
> In master, an alternative boolean method (using BMesh) can now be used.
> Before the release we would like to remove Carve (existing boolean
> library) completely,
> however since booleans are quite fragile/error prone - its useful to
> keep both available for comparisons.
> In the modifier UI, check the "Use BMesh" option, other BMesh options
> should be left unchanged for typical usage.
> If there are examples that fail with BMesh enabled, please report them
> in our tracker.
Tobias Sargeant (author of Carve) contacted me asking what the reasons
for replacing Carve are, since decisions like this is best discussed
in public, Ill reply on the mailing list.
Firstly Carve worked quite well for us, so there wasn't some big
motivation to replace it.
The BMesh-Boolean code started out with a modeling tool made to cut
intersections - a kind of quick-editmode geometry edits, where you
didn't have to setup a modifier - or worry about the model having
holes and loose geometry which would be problematic for a boolean
It turned out this ended up being quite a way towards having working
booleans - since you only have to identify which parts are
inside/outside and remove them.
As for the limits in Carve, there are two I can recall off hand.
(Sergey was dealing with these directly, so correct me if I miss something).
- Non-planar faces
Non-planar ngons/quads would make carve give bad results,
while this may seem acceptable at first, it meant we had to
preemptively split faces on the off-chance they would be included in
an intersection where they may cause problems.
The downside of this is many faces which are (to the user) looking
quite flat - would be split, giving unnecessary tessellation and extra
vertices along the edges.
- No Edge Data
While this isn't such a big limitation, we got at least one bug-report.
Bevel weights, seams and creases are lost on boolean since Carve isn't
More information about the Bf-committers