0
$\begingroup$

I know there are many threads about this specific Boolean problem, but I couldn't find a solution that works for me. I have created an example file that illustrates my problem very well.

I have a large cube into which I "drilled" a rectangular hole using a Boolean modifier. Then, I selected the open edges in Edit Mode and closed them with "F". Next, I used another cube and the Boolean modifier to place the cube into the previously closed area. So far, so good.

Now to the problem: If I try to create another indentation in this recessed area using the Boolean modifier, it doesn't work as expected but instead adds another shape.

If I now move the last shape further up or down, the modifier seems to work after all. But why?

I used this simple example file to explain the problem. My original file is quite large and slows down significantly. For testing purposes, I’ll upload the test file for you. I’ve also included some images to better illustrate the problem.

enter image description here Here you can see that the long object was "added" by the Boolean modifier.

enter image description here Here are the normals.Top view.

enter image description here View from the bottom.

If I now move the long object further up or down on the Z-axis, the modifier seems to work after all. However, it should work exactly at the position where the long object was originally located. enter image description here

I hope someone can help me :3 Thank you!

Update:

I checked the non-manifold edges via 3d-print Toolbox Addon and it says "8 non manifold edges". Those are definitely the edges of the closed holes at the top and bottom. So, how can I close holes without this happening?

enter image description here

$\endgroup$
4
  • 1
    $\begingroup$ Please use BSE's own sharing site for your Blend file rather than an external site which will not be permanent. You can share it via blend-exchange.com following the instructions there to copy the full link on that page. Then edit your question here and paste the link into it. Thanks. $\endgroup$ Commented Feb 3 at 15:57
  • 1
    $\begingroup$ The Boolean doesn't work very well with non-manifold meshes or at least you have a high chance of getting errors. When you say you close the open edges - what do you mean by "open edges"? There are no open edges, the edges are connected to the faces inside the "drill hole" as well. Closing them with F creates non-manifold geometry. Also inveted normals can cause problems with the nodifier - like the red ones in your screenshot. But even if you flip them, it's still manifold geometry. $\endgroup$ Commented Feb 3 at 16:05
  • $\begingroup$ @JohnEason Thanks, I changed that :) $\endgroup$ Commented Feb 4 at 7:03
  • $\begingroup$ @GordonBrinkmann By "open edges," I meant that I "drilled" through the cube with another, longer one and then applied the modifier. This essentially created an abstract donut-shaped form. I selected the edges at the top and bottom holes and closed them with "F." And I think that’s where the problem lies, but I don’t understand why. $\endgroup$ Commented Feb 4 at 7:06

1 Answer 1

0
$\begingroup$

The Boolean modifier has problems with non-manifold geometry. Without going into complex discussions what exactly is manifold and non-manifold, I simplify it to say: non-manifold geometry is something that cannot exist in reality.

When editing meshes these are for examples the components on their own, the vertices, edges, faces. Vertices and edges do not even have a surface, and a face has no thickness. This is not possible in reality, even the thinnest foil has thickness to it.

To create a mesh that resembles a real object, you have to model a closed or watertight mesh, something that encloses a volume in some way and all face normals have to point "outwards". A closed mesh needs a minimum of 4 faces, all its vertices have to be connected to a minimum of 2 edges, and each edge is connected to exactly 2 faces - no more, no less. But let's take an easy example with 6 faces: the default cube.

default cube

All faces show blue, i.e. their face normals (the cyan lines) are pointing outwards. Everything is connected, there is no loose geometry, no additional inner faces, every corner vertex is connected to 3 edges, each edge connects 2 faces in a 90° angle. Subdivisions can lead to vertices having 2 or more than 3 edge connections, but that would be okay.

Now moving on to a torus or donut shape. Also a very simple version, just four segments:

square torus

This is also a manifold mesh. Everything is showing blue, no edge has more or less than 2 face connections. Even the hole in the middle is not "open" - because the walls of the hole are facing outwards to the environment, just like all the other faces of the mesh.

If you would now select the edges on top and bottom of hole and fill them with F, you create a non-manifold mesh:

non-manifold faces

First of all you can see that the new faces have their normals or their blue sides pointing inside the hole, so that looking at it from the top or bottom, the new faces show red. The reason for this is, when you fill this, the normal could either be pointing away from the hole or towards the hole. Away from hole there are no surrounding faces for reference, towards the hole there are faces and they are blue, i.e. indicating they are the outside of a mesh. Therefore the new faces will have their outside be the insid of the hole.

Okay, sounds confusing. But no matter if they would show red or blue (you could flip them to show blue), they would still be creating non-manifold geometry. Their edges connect more than 2 faces, they have 3: the top face, the face inside the hole and the new face. Although (when flipped) this would be a closed mesh, you then have inner faces which are not possible in reality. That would be as if walls separating rooms in a house would have no thickness - that's impossible. To make this mesh manifold, would have to delete the inner faces remaining inside the hole.

And the reason why this non-manifold mesh can make problems with the Boolean modifier is that calculating Boolean Difference, Union or Intersection depends on determining where the inside and outside of combined meshes are, what remains, where new outside faces have to be generated when cutting away something for example and so on.

Since with non-manifold meshes there is indifference or room for interpretation, the modifier results might not always meet your expectations of how this should be resolved, and the different Solver options whether you use Fast or Exact and their settings might get you what you want, but eventually not.

By the way, the explanations are all assuming you have everything connected. No duplicate vertices, no split edges, everything merged together. If for example the default cube had all edges split, this would just be a bunch of planes arranged in a cubic shape, and a single-face plane is non-manifold, because the boundary edges are only connected to 1 face.

$\endgroup$
1
  • 1
    $\begingroup$ Omg thank you so much! The "inner walls" were my problem. $\endgroup$ Commented Feb 5 at 10:50

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.