3
$\begingroup$

I am trying to make an object cut through another object by using the boolean modifier. I tried using the difference and also tried intersect but to no avail.

This is what I am trying to achieve. Input

The smaller object Which is named "Output Diff" would be the "Hole" so to speak

This is what I am trying to design.

reference

The boolean modifier for some reason sometimes doesn't work out :/ Is there something I'm doing wrong perhaps?

$\endgroup$
  • $\begingroup$ Boolean will not work as expected when meshes have inverted normals and other types of non-manifold geometry, see blender.stackexchange.com/questions/34781/…. Try executing Ctrl+N while in Edit mode with all selected and proceed to Boolean again. If that doesn't help please attach a copy of your file for reproducing problem. $\endgroup$ – Mr Zak May 12 '16 at 19:17
  • $\begingroup$ I tried to use the CTRL+N as suggested but was ineffective and with no success. I cannot upload my file since it exceeeds the upload limit :/ $\endgroup$ – Cyanic Wolf May 12 '16 at 20:25
  • $\begingroup$ sometimes I experienced boolean not working even if normal seemed ok. In the end, it was that at leas one object had a negative scale, so, normals seemed to point outwards, but it was the opposite, since the object as completely reversed. Check both objects scale also. $\endgroup$ – m.ardito May 12 '16 at 21:38
  • $\begingroup$ I would like to thank you all for your support and your answers. I manged to achieve the result I wanted :) $\endgroup$ – Cyanic Wolf May 15 '16 at 18:10
3
$\begingroup$

Your meshes are positioned not properly and have geometry unsuitable for Boolean to work - flipped normals, doubles.

Problem 1. Position of objects

In your file objects are placed one inside of another. The modifier will work (under certain conditions) however you won't see any result (because the result of this operation will be only a copy of object, which was expected to be cut off, located inside of the main one).

position of object matters screenshot

Solution Place object to be cut off appropriately; generally you want it to create an indentation somewhere in the main object, so move it out of main object as much as indentation should be. If you want to cut through the other object (so to "break it into 2 pieces) then scale up the one which is used for cutting appropriately.

Problem 2. Normals

Normals of the objects are pointing in the wrong way.

wrong normals screenshot

Solution In Edit mode select all and press Ctrl+N; if nothing changed choose Inside in the Last Operator panel or press Ctrl+Shift+N.
From manual:

The face normals are taken into account for the calculations.

See also Why are some faces in my mesh darker? for more info.

Problem 3. Doubles

There are double vertices in the mesh which prevented normals from being recalcualated successfully.

While Boolean, oddly enough, will work without this being done, it's best to get rid of them because of possible problems furthermore.

Solution

Select all > W > Remove Doubles.

Result

possible result


Applying transforms

Scale and rotation aren't applied to both objects. While Boolean will work with that, it's best to apply them to have expected result of work of modifiers. See Why is it important to apply transformation to an objects data?.

Optionally: fixing topology

Listed above is enough to make Boolean start working. Generally you would keep track of topology of objects though, because Ngons can be treated differently in different circumstances (still there are cases when they can be good).

As from manual:

The target topology determines the new topology of the modified mesh.

In your model top faces are Ngons; it's better to not leave this:

screenshot of topology

and tend to create something more like grid:

screenshot of fixed (well, not that much) topology

It can be easily done with insetting face with I and converting Ngon into grid of quads by filling it with Ctrl+F > GridFill.
Same applies to both sides of both meshes.

More reading:

$\endgroup$
  • $\begingroup$ omg .. you sir are a true saviour xD I followed your steps and read them carefully over and over and kept trying to apply them to my project and it actually worked !! Not really sure which 1 did work I think maybe it was the Normals and using the Inside thing on both the objects, but it worked out perfectly! and I used the intersect instead of difference. Here's my final result! :) prntscr.com/b4dsp9 $\endgroup$ – Cyanic Wolf May 15 '16 at 18:09
0
$\begingroup$

Without your file, it is hard to tell what your issue is. However, in addition to checking your normals, as suggested in the comments, apply the subsurf modifier. Also, make sure you don't have any large n-gon faces where you are trying to cut the hole. The boolean modifier hates faces with more than 4 vertices.

Your problem could also be the result of the loop cut that you most likely added to flatten out the top of the object from the subsurf; the loop cut in the object you are trying to cut into.

Edit:

The loop cut was the problem, and there should be a way to locate the loop cut. Position your mouse cursor where the 3D Cursor is in this image:

enter image description here

Key Alt + RightMouseButton to select an edge loop. If there is a gradient from orange to black below your selected loop, like this:

enter image description here

you have selected the right loop. Key X and click Dissolve Edges. If the subsurf changes, but nothing else, you have succeeded. Repeat for every edge loop that you added.

Edit 2:

It occurs to me that you could also key A once or twice to select the entire mesh in edit mode, then key W and select Remove Doubles. That would probably have the same effect.

$\endgroup$
  • $\begingroup$ I did add a loop cut and slide yes to flatten it from the top and I cannot locate the Line that I added in order to try and delete it for some reason :/ The "Large" object so to speak has 2.2k vertices due to the subsurf modifier I presume. Unfortunately I cannot upload my file since it exceeds the upload limit. Do you maybe know of anything I can use other than boolean modifier which will give me same result perhaps? $\endgroup$ – Cyanic Wolf May 12 '16 at 20:22
  • $\begingroup$ 2.2k isn't that big. I would be very interested to know what's taking up so much space, however. I cannot tell you a way to fake boolean, but I can tell you how to find the edge loop. Look at the edit to my answer. $\endgroup$ – Shady Puck May 12 '16 at 20:45
  • $\begingroup$ Edited! If this helps, please consider accepting my answer (the checkmark). If there are still more issues, let me know! $\endgroup$ – Shady Puck May 12 '16 at 20:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.