22
$\begingroup$

I'm trying to model an M16, but it's not going so well when it comes to the magazine of the weapon.

Next to the magazine is a mesh. I want to cut holes in the mag with that mesh. But the magazine just goes invisible or connects with the mesh when trying to execute the Boolean Modifier. I have tested to invert the normals and some other stuff, but it isn't working.

$\endgroup$
5
  • $\begingroup$ Make sure that the Boolean modifier is set to difference $\endgroup$
    – A.D.
    Commented Jul 30, 2015 at 7:10
  • 1
    $\begingroup$ You need to remove doubles on the Cube.003 mesh.. $\endgroup$
    – zeffii
    Commented Jul 30, 2015 at 7:13
  • $\begingroup$ @zeffii Thanks alot! The solution seems pretty obvious. I'm not so good with Blender, Sorry :/ $\endgroup$
    – Zemah
    Commented Jul 30, 2015 at 13:16
  • 1
    $\begingroup$ No need to feel sorry. I think everyone struggles with doubles, normals, booleans, etc when first starting out. It gets easier with time once you learn the common causes of mesh problems. $\endgroup$
    – Mentalist
    Commented Jul 30, 2015 at 13:57
  • $\begingroup$ There is an addon "BoltFactory" that might help you... Just change the diameter settings to 16 and you're done... $\endgroup$
    – Samoth
    Commented Nov 18, 2015 at 16:59

6 Answers 6

20
$\begingroup$

As zeffii stated - you need to remove doubles on the carving object (Cube.003). There were 16 double vertices on there. If a boolean doesn't work it's probably because something in your geometry isn't making sense (even if it looks and renders fine).

Last time your issue was caused by inverted normals. This time it was caused by doubled-up verts.

I will add a tip about removing doubles to the answer I posted to your other boolean question.

Here's a solved .blend - although it will be more helpful for you to go through the steps of removing doubles yourself than to see the finished result.

$\endgroup$
1
  • 2
    $\begingroup$ If somebody successfully answers a question in the comments please let them post the answer in the answers section. See this meta post. $\endgroup$
    – PGmath
    Commented Jul 30, 2015 at 13:50
51
$\begingroup$

Most of the common problems people experience with the Boolean modifier are generally down to only 2 or 3 things: Normals, Doubles (or overlapping geometry), Non-Manifold geometry.

Normals

Faces have a direction, it may seem like a weird idea but it's necessary in computer graphics to give a polygon (different word for face) a direction.

enter image description here

The fact that faces have a direction is included in the word "face", for English speakers: "what direction is it facing? it's facing that direction". Blender will give the new faces you create a direction that corresponds to the faces around it, it's up to you as a modeler to be aware of this.

The direction of the Normals determines how the objects combine when using a Boolean Modifier:

On the first image the cube and the torus have their normals facing out:

enter image description here

On the second image the Torus has the normals facing in:

enter image description here

On the third image both objects have their normals facing in:

enter image description here

What are Difference, Union, and Intersect supposed to produce?

  • Difference: The result will be those parts of the mesh which do not share volume in 3D space. see here a good expose on how to do this, and what to expect
  • Union: Returns the two meshes joined as one, the two meshes do need to have at least some common volume in 3D space. If they don't you can use the Join command (Ctrl+j) instead of a boolean.
  • Intersect: will return the shared 3d volume of the two meshes.

Quote from the manual:

  • Difference

The modified mesh is subtracted from the target mesh.

If the target Mesh has inverted normals, Blender will Intersect the modified mesh.

If the modified Mesh has inverted normals, Blender will add both meshes (Union).

If both Meshes use inverted normals, Blender will Intersect the target Mesh.

  • Union

The target mesh is added to the modified mesh.

If the target Mesh has inverted normals, Blender will Intersect the target Mesh.

If the modified Mesh has inverted normals, Blender will subtract the target Mesh.

If both Meshes use inverted normals, Blender will Intersect the modified Mesh.

  • Intersect

The target mesh is subtracted from the modified mesh.

If the target Mesh has inverted normals, Blender will subtract the target Mesh.

If the modified Mesh has inverted normals, Blender will intersect the target Mesh.

If both Meshes use inverted normals, Blender will add both meshes (Union).

Fixes for problems caused by normals in boolean operations are generally easy: Faces of both objects should all be outward facing with no exceptions.

To recalculate normals enter Edit Mode (Tab).

Select all faces and press CtrlN To have the normals face out

Or CtrlShiftN to have normals face inside the mesh.

To flip a single face, select it and use Mesh>Normals>Flip Normals.

enter image description here

You can toggle the display of normals in the Properties Panel (right panel N): enter image description here

Doubles

Doubles are multiple vertices which share the same 3d location. These are problematic for the boolean modifier if they occur in one object, because they're a sign of degenerate geometry (zero area faces, hidden duplicated edges) or simple geometry which isn't fully connected as you might be led to believe by how it looks.

To Remove doubles

  1. Enter edit mode (Tab).
  2. Select everything (A.
  3. Presss W and select Remove Doubles.

( insert images of example tell-tale signs of doubles )

  • Overlapping geometry between objects:
    If you've removed doubles and flipped normals the right way, then a third cause of Boolean Failure is that some of your edges are shared by more than 2 faces. Inspect your Objects closely. Multiple vertices in the same location will often cause the boolean modifier to act up. In addition to Double geometry on Object A or B, object B should also not share any duplicated geometry with A. You can always prevent this by adjusting one of your Objects to comply with this limitation of the Boolean Algorithm. From this bug report:

    this is a known bug in Carve upstream (a library we're using for boolean operations)

Non-Manifold Geometry

Boolean operations will fail when using Non-manifold objects.

For all intents are purposes manifold means 'is it air-tight', meaning it has no holes. Examples of non-manifold objects could be objects like planes with no thickness, or objects that are self-intersecting or that have Zero-area faces or have Open volumes.

For some operations it helps if you use the Outliner to hide the object you are doing the boolean operation with from view/render so you can see clearly the effect of the operation before applying the modifier (apply at the last possible moment!)

Other cases where boolean operations can fail:

  • Using Curve objects instead of Mesh objects

    Blender doesn't let you use a curve objects for boolean operations. That inlcudes Text objects, as they are considered curves as well. Those objects would need to converted to mesh by pressing ⎇ AltC.

$\endgroup$
3
  • $\begingroup$ It is easier to see problems with normals if you activate backface culling. Faces that have wrong facing will simply be transparent. $\endgroup$ Commented Dec 16, 2018 at 17:00
  • $\begingroup$ It seems like w doesn't do this in edit mode. Maybe it has changed in newer Blender versions? $\endgroup$
    – monokrome
    Commented Feb 19, 2021 at 2:57
  • 1
    $\begingroup$ @monokrome Yes, It's now under Merge "M" by distance to remove doubles $\endgroup$
    – Jeff Lange
    Commented Mar 19, 2021 at 21:02
4
$\begingroup$

In Blender 2.8, if boolean operations fail because of double geometry Removes Doubles is now found in the menu, Vertex > Merge Vertices > By distance.

$\endgroup$
1
  • 1
    $\begingroup$ In Blender 2.83.1 it is Mesh > Clean Up > Merge By Distance $\endgroup$
    – koubin
    Commented Jul 8, 2020 at 7:58
1
$\begingroup$

In Blender 2.90.0 I added two cylinders, on smaller in X and Y but bigger in Z so to cut a hole in the outer cylinder. After applying the Boolean Modifier I wasn't seeing the result of the Difference option.

Only after I hid the inner cylinder from the View Port in the Data Outliner I was able to see the result.

$\endgroup$
1
  • $\begingroup$ +1, sometimes it really does work, but the result is not immediately visible. You might also need to exit Edit mode. $\endgroup$ Commented Apr 28, 2022 at 19:56
1
$\begingroup$

In blender 2.91 I also got some troubles (my modifier was just removed). I ended up just clicking "self", and now it works:

enter image description here

$\endgroup$
1
$\begingroup$

For Blender 2.92 changing the solver from Exact to Fast fixed it.

In my case I was also using a Solidify modifier, which needed Only Rim to be enabled.

$\endgroup$
1
  • $\begingroup$ This was it. Saved me a major headache $\endgroup$ Commented Nov 29, 2023 at 22:13

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .