I'm trying to model a M16 but I have a problem with cutting the holes on top of the handguard of the weapon.

As you can see in the picture above, I have tried to cut holes into the handguard (The marked mesh in edit mode) with the object above it (The multiple cylinder one). But I simply can't. I have tried the Boolean modifier but the handguard just disappears and doesn't make any holes. Same with the Knife Project thing. Nothing works, it won't make a hole in it. I also installed the BoolTool 0.2 but that didn't work either...The multiple cylinder object goes invisible and doesn't make any cuts.

enter image description here

In the picture above you can see how I want the cuts to be made. I want the holes of the multiple cylinder object to be there on the handguard when I take it away. Nothing works. The 3 methods I tried with worked on other parts of this model but not on the handguard. It should be the handguards mesh's fault but I can do nothing about it. Is there any solution?

  • 2
    $\begingroup$ Booleans in blender are notoriously unreliable (in my experience). I would have recommended manually modelling one hole on a short section of the barrel and then using an array (as long as the cylinders are equally spaced). However, because the barrel gets smaller towards the end, I'm not sure this would work. It might be a starting point though. $\endgroup$ Commented Jul 24, 2015 at 1:14
  • $\begingroup$ I can't understand why a boolean difference modifier wouldn't work with such simple geometry. Please upload your file so we can inspect it and give a meaningful answer. i.sstatic.net/P8eA7.gif $\endgroup$
    – user1853
    Commented Jul 24, 2015 at 6:36
  • $\begingroup$ related: blender.stackexchange.com/questions/16002/… $\endgroup$
    – user1853
    Commented Jul 24, 2015 at 6:42
  • $\begingroup$ @cegaton I have now added the file at the bottom of the post. $\endgroup$
    – Zemah
    Commented Jul 24, 2015 at 12:02
  • $\begingroup$ @ToddMcIntosh I will test that. But first I want to be sure that there's no way of fixing this dumb problem. $\endgroup$
    – Zemah
    Commented Jul 24, 2015 at 12:03

1 Answer 1


How to do a subtractive boolean

  1. Make sure you've selected the object to be carved from, and add a Boolean Modifier (when in Edit mode, look for a wrench icon on the right-side panel when you have the object to be carved from selected - this is the modifier panel).
  2. For the modifier's Operation choose "Difference".
  3. For the Object field choose the object that will do the carving.
  4. Apply the Boolean Modifier and delete your carving object.

Tip: For step 4, as an alternative non-destructive approach you could also leave the modifier on without applying it, and hide the carving object from rendering. If you want to see the carving object's shape and its effect at the same time, instead of totally hiding it in the viewport you could go to the Object Tab and set the Maximum Draw Type to "Wire".

Using "Wire" view to see the geometry of the object causing the boolean

Tip: Low-poly meshes may not boolean so well, while high-poly meshes can be slow to calculate or in extreme cases even crash Blender. So consider your mesh density before using a boolean.

Tip: If either mesh's normals are facing the wrong direction you will have problems when doing a boolean. Recalculating normals can sometimes be a solution if you find a boolean is not working as expected.

Tip: Remove doubles. If your normals are just fine, the next thing to try is removing doubled-up vertices. This can be done from within Edit Mode by pressing W and choosing "Remove Doubles". At the top of the interface near the tiny Blender logo a message will momentarily appear saying "Removed __ vertices". If this number is not 0 then you'll know that some doubles were removed and that the problem has probably been fixed.

Tip: Large n-gons can cause booleans to fail. The solution is to convert to triangles. Here is a post addressing this problem in more detail.

Tip: Avoid booleans if you plan to SubSurf. Modeling with booleans may be fine for simple hard-surface geometry, but if you then put a Subdivision Surface Modifier on that object you can expect unsightly results. This is because for things like subdivision and mesh deformation topology is important. An all-quad mesh is ideal, but still requires some good old-fashioned manual modeling to create. It's worth learning the concepts of edge-flow and poles if you intend to create a low or med-poly mesh with "holes" cut into it that still looks good when SubSurfed.

Tip: Sometimes using "Smooth" shading doesn't go so smoothly after modeling with a boolean. This has a lot to do with the topology issues I mentioned above, but there is a quick fix that is suitable for many cases. Navigate to the Mesh context tab and check the Auto Smooth option. Adjust the slider until the shading looks desirable in the viewport. Here is a before/after example:

enter image description here

Note that regardless of the angle specified for Auto Smooth, any edges that have been Marked Sharp (CtrlE) will be sharp as long as the Auto Smooth feature is enabled.

The solution for your case

enter image description here

It was caused by conflicting normals, as I mentioned in one of the tips above. In fact, you can even see from the darkly shaded geometry in your screen shots that some of the normals are inverted. After recalculating normals on both objects I was able to boolean just fine. Here's the solved file:

  • $\begingroup$ It just says "Cannot execute boolean operation". And when I tested to use a newly created cylinder mesh, the handguard just goes invisible. And when I afterwards apply it, the cylinder becomes my handguard and the real handguard deletes. $\endgroup$
    – Zemah
    Commented Jul 24, 2015 at 11:50
  • $\begingroup$ Please see the new section I added in my answer: "The solution for your case". $\endgroup$
    – Mentalist
    Commented Jul 24, 2015 at 12:47
  • 1
    $\begingroup$ @Zemah why are you removing the blend files ? $\endgroup$
    – Chebhou
    Commented Jul 26, 2015 at 12:02
  • $\begingroup$ Mesh context tab/Auto Smooth is a life saver!! $\endgroup$ Commented Aug 12, 2017 at 14:26

You must log in to answer this question.

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