Page MenuHome

BMesh booleans fail with self-overlapping geometry
Closed, ResolvedPublicTO DO


System Information
Win7, nVidia GForce 1060

Blender Version
Broken: 2.79.1 - 66c1b213 (2.78.c is broken also)
Worked: (optional)

Short description of error

In the attached Blend file we have an object named Cover from which we try to extract via Difference Boolean Modifier two objects named Cutout and Cutout 2. With BMesh the thing doesn't work (press Apply - to see faces and vertices artifacts). Choosing Carve as Boolean library it works ok.

Related Objects

Event Timeline

Sebastian Koenig (sebastian_k) lowered the priority of this task from 90 to 50.Aug 17 2017, 9:04 PM

Yeah, that's true. It's weird, the meshes are also note really broken nor do they have flipped normals, so I don't see why it shouldn't work here.
I also noticed it myself that sometimes Carve works better than BMesh for no apparent reason.

"Yeahm, that's true" - to quote you. :) "...for no apparent reason" is the thing which disturbs me the most.

Look here:

I post a very simple case to show a bug in BMesh. It was "fixed" (thaks a lot for the effort, btw) but if I move slightly one of the objects which are one of the parts of the Boolean Operator, the bug surfaces again.

Can we have something more trusty?

How other modelling programs solve this problem?

@Campbell Barton (campbellbarton) , please, perhaps can you shed a light on this task and on the which is closely related?

TIA for your effort!

There are two problems here:

  • The mesh has degenerate geometry (run degenerate-dissolve tool removes 96 faces)
  • Cover has two exactly overlapping regions (remove doubles removes 48 verts).

This could be supported, but for now you can't put objects exactly side by side and expect them to behave a solid.

Campbell Barton (campbellbarton) renamed this task from Difference Boolean Modifier does not work with BMesh. Works with Carve to BMesh booleans fail with self-overlapping geometry.Sep 12 2017, 12:08 PM
Campbell Barton (campbellbarton) edited a custom field.