BMesh booleans fail with self-overlapping geometry
Open, ConfirmedPublic

Description

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.

Details

Type
To Do
Sebastian Koenig (sebastian_k) triaged this task as "Confirmed" priority.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: https://developer.blender.org/T52329

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 https://developer.blender.org/T52329 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) changed the title from "Difference Boolean Modifier does not work with BMesh. Works with Carve" to "BMesh booleans fail with self-overlapping geometry".Tue, Sep 12, 12:08 PM
Campbell Barton (campbellbarton) changed Type from Bug to To Do.