Boolean glitches with flush surfaces

Blender’s boolean modifier always glitches out with surfaces that are perfectly flush, using snapping. This happens in all cases where there is a flush edge - whether it’s Difference, Intersection or Union.

This is not a problem in 3DS, it’s unique to Blender, and I’ve been working around this for months now, over-extending surfaces to solve the problem, but it’s getting unwieldy now that I’m working with models intended for 3D print - as it’s throwing off my measurements!

First example: below I have a Boolean Union from the larger box to the smaller box. The smaller box is flush with the edge of the larger box. Notice the strange polygons added, visible in wireframe. This doesn’t happen in Max, it just attaches them as expected.

In the inverse example, I have the smaller box internal to the larger box, but the outer edges are flush. Max resolves this correctly and cuts a clean hole. Blender gets confused again and makes thin slithers of glitchy triangles over the hole.


Moving the object out ever so slightly, fixes the problem, but throws off my measurements.

Yes I could give up and model the changes in manually, which I do - and then wonder, why bother having the Boolean modifier? The whole point is to allow flexibility during development so you can make changes without disrupting the mesh.

Is there a better sub-forum for this question?

Is this a known problem, that we just accept?

It’s such an obvious one, so if anyone is reading this post, they must know what I’m talking about…

Blender’s boolean modifier always glitches out with surfaces that are perfectly flush, using snapping. This happens in all cases where there is a flush edge - whether it’s Difference, Intersection or Union.

This is not a problem in 3DS, it’s unique to Blender, and I’ve been working around this for months now, over-extending surfaces to solve the problem, but it’s getting unwieldy now that I’m working with models intended for 3D print - as it’s throwing off my measurements!

First example: below I have a Boolean Union from the larger box to the smaller box. The smaller box is flush with the edge of the larger box. Notice the strange polygons added, visible in wireframe. This doesn’t happen in Max, it just attaches them as expected.
[ATTACH=CONFIG]519633[/ATTACH]

In the inverse example, I have the smaller box internal to the larger box, but the outer edges are flush. Max resolves this correctly and cuts a clean hole. Blender gets confused again and makes thin slithers of glitchy triangles over the hole.
[ATTACH=CONFIG]519634[/ATTACH]
Moving the object out ever so slightly, fixes the problem, but throws off my measurements.
[ATTACH=CONFIG]519635[/ATTACH]

Yes I could give up and model the changes in manually, which I do - and then wonder, why bother having the Boolean modifier? The whole point is to allow flexibility during development so you can make changes without disrupting the mesh.

I could be wrong, but bolean need an intersection and a volume, so if both face are flush, how can it work ?

The limitation is listed in the manual. Carve solver can do a better job but doesn’t work in all cases.

There was some boolean bug fixes in 2.79a. What blender version are you using?
I’ve had a job on hold because of issues with boolean operations. Haven’t had the time yet to see if the problems still exist.

Ah thanks for the heads up. Well I have 2.79b now, and I’ve reproduced the same problems as above - although I notice it glitches more “neatly” :smiley: it still leaves a thin polygon layer at the join in both the above cases, but I noticed now it’s a neat square with a single diagonal cut, instead of a glitchy mess.

Nevertheless, the original problem still remains; I have to over-extend the intersection to get the desired result, in both cases. When adding, the two boxes should not have a polygon layer between them, and when subtracting, the two boxes should not have a polygon layer covering the opening.

3DS Max does it :slight_smile: I know conceptually, in the real world, it doesn’t make sense, and I admit that when I first experimented with it in 3DS I wondered if it would work, but to my pleasant surprise it did, and that is very useful because when you’re modelling something that needs to be glued together, or cut a hole to a specific depth, this allows your boolean shapes to use the actual measurement that you’ll be using in real life, and you don’t need to record it somewhere separately, introducing possible mistakes.

That’s unfortunate I guess… thank you for letting me know though. Also I tried Carve with the same results in every case I tried, including the ones above :frowning:

This also causes problems in round objects too. When an edge or face on a poly-cylinder is even with another surface, it doesn’t handle them correctly either. From what I understand it happens to be a flaw in the algorithm used.

I remember seeing somewhere that somebody was developing an an add-on to fix this (anyone else recall it?), hopefully they succeed at it. And maybe it’ll eventually be incorporated into the main Blender code.

In the meantime, you shouldn’t need to move the full piece of geometry, but rather edit the mesh so the problem area extends through. (Should preserve the other dimensions in a relative sense.) Again this doesn’t work in all cases where flush surfaces may be desired. And when booleans don’t always work well, might not hurt to learn some retopo-style work flows and other manual mesh editing with things like knife-project for joins.

nothing is ever perfect in production so, just like most craftsmen, especially woodworkers & carpenters do when sawing/cutting wood, the dimensions of a saw blade are taken into account - for your case this would mean enlarging / translating specific vertices of the object as much as you move it in = clean cut, precise dimensions

What is your OS…system specs…video card specs?
Upload a .blend file, I’ll check it out .

Thank you :slight_smile: I really appreciate your offer of checking it out. I’ve attached the example Blend file demonstrating the problems above. Note that the wireframes may look cleaner in the new version, but the problem with “polygon slivers” covering what should be an opening, is still there.

It’s very unlikely my system specs have anything to do with it, as it is the way Blender is cutting up the polygons using its internal methods, but here they are anyway.
OS: Windows 7
CPU: Q6600 2.4 Ghz quad core
RAM: 8gb
Video card: Nvidia GeForce GTX 1050: 2gb VRAM

Attachments

Blender boolean problems.zip (67.4 KB)

Glad you noticed it to.

If I understand you correctly when you say “extend the mesh so the problem area extends through” I’ll still have to remember to go into edit mode and take the measurement of the edges that come before the little extension bit, rather than the whole object’s dimensions, which isn’t that much better!

Of course if I hard model it in, it’s a nightmare to make changes. Imagine some tiny pieces jutting out from a large, non-flat surface, crossing through some of its angles - once you cut those in to the existing polygons, they’re pretty much permanently in place - you can’t move them around without re-creating the whole surface.

As I said, 3DS Max can handle this situation “perfectly” :slight_smile: My question is about finding out a way to avoid the unnecessary complications you just described. Some objects will be the correct measurement. Other objects will be the correct measurement + whatever amount I nudged it in to work around the problem, and this will introduce many unnecessary points for human error, the exact opposite of “clean cut, precise dimensions”.

I stand partially corrected - I tried it again, and Carve does work for Union, but not Difference, which is a lot of my situations where I’m cutting holes in things.

I’m glad people are acknowledging it at least, and I do appreciate the suggestions.

Hi Domarius

Just came across this reply, got no BA forum email update.
Checked out your blend file.

This is a limitation of blenders boolean modifier, what your trying to do will not work. There has to be some overlapping geometry. Modo can do this also, but not blender.
You might want to check out the “Face Tools” in blender. Do not know anything about 3D printing, so I do not know if the face tools will work for you.

Menu: Mesh ‣ Faces ‣ Intersect (Knife)
Menu: Mesh ‣ Faces ‣ Intersect (Boolean)

I would say check out the blender 2.79 manual for face tools and Boolean Modifier at blender.org, but the site seems to be down, been trying to connect for 5 minuets now, cant get in.

Docs » Modeling » Meshes » Editing » Face Tools
Docs » Modeling » Modifiers » Boolean Modifier

Sorry I could not be of any more help.

1 Like

It’s a double thread with
https://blenderartists.org/forum/showthread.php?447832-Boolean-glitches-with-flush-surfaces


And yes, carve difference didn’t work in the example file for me either. Bmesh solver with increased overlap threshold did

There is no way to stop the double posting going on around here at BA?
I did report it, but see no action yet.

As far as the issue goes, I did change the overlap threshold to many different settings…up to 1.0, saw no difference, strange, must of missed something.

Moderation: I’ve merged this thread with its duplicate in the Technical Support Forum. Please do not cross-post the same question across multiple subforums.

This is a very late reply I know, but I was going through my unread threads and I just wanted to apologise for double posting. I wasn’t sure which board it qualified for. I won’t do it again though.

Shame about booleans and flush edges - increasing the overlap throws off my measurements, eg. hole depth. I can use the measure tool to measure the resulting hole depth, it just would be way more convenient to take the depth from the boolean object I used to cut the hole.

@XYZero When you say “Menu: Mesh > Faces…” etc. where can I find this? Traditionally “Menu” is the top bar on a Window, but Blender is anything but traditional :slight_smile: