Boolean modifier issues

I would like to use a difference boolean modifier on this mesh so the small branches on top “sculpt” detail into it. But the boolean operation will not work. There seems to me a problem with the bottom mesh, because I can use the branches to do a boolean difference with other primitives without any issue. I’ve tried pretty much everything. The bottom mesh is manifold, all normals are correct, rotation and scale were applied, no loose vertices or edges, doubles were removed, etc… I even tried to triangulate it, but nothing seems to make it work properly. As soon as I try to apply the boolean operation, I get this weird result where the branches perform a union rather than a difference and their normals get inverted.

Here is the file: booleanissue.blend (669 KB) if anyone is willing to take a look at it. If this happens to be a bug and cannot be resolved, any suggestions as to how I could have made such details into my mesh without boolean?


What surprises me is that you can make any booleans at all with this object. This mesh (the twigs) is full of internal geometry, double vertices, and self intersections. The last two twigs, in particular, are the worst offenders.
Give me a minute to check out the forums, and make some mesh cleaning.

Here you are: booleanissue.blend (284 KB)

For reference, I’ve left the original and the corrected one on layers 2 and 3. Boolean still won’t work ¡BUT! if you join the copy of the corrected one with the base, you can play with Face/Intersect which will work.

In general, I find Face/Intersect to be more stable than Boolean.

Other problems: Your base had an unapplied scale. It won’t make a difference in this case, but could make for others. Try to work always with unscaled geometry.

On the corrected @Ovnuniarchos version triangulate the bottom mesh again and it will work.

Thank you so much for taking the time to reply and doing what you did. You are right about the scale of the base mesh, I really thought I had done everything in that sense, seems as I overlooked this (I spent way too much time late at night on this!). The twigs do have internal geometry because they were modeled from tapered and bevel curves and AFAIK the only way to make curves “branch off” is to make several curves and place their start somewhere on the other curve. I didn’t it would matter to retopologize them too mush as they were gonna be thrown away and the mesh was closed.

I did take a look at your upload and indeed the twigs’ topology is much cleaner, but do you have any idea why I still cannot perform boolean? I did try the intersect tool (which so far I didn’t even know existed, thanks for that!) but I’m having a hard time have it do what I want. It seems to me that it’s acting like project knife, basically cutting a hole the shape of the cuve into the mesh. Is there anyway to make the depth of the twigs to be carved into the base mesh? I’m also left with tiny tiny impossible to zoom in faces on my edges when doing this, as seen in the picture:

On a side note, I’m pretty sure the way I went in order to achieve the result I wanted was overly complicated… is there any method you would have recommended? Basically I made both objects from 2D bezier curves, added bevel and taper for the twigs, converted to mesh and decimated it for a lower number of polys. For the base, I just made the curve cyclic to get a plane, converted to mesh, used remesh so I wouldn’t be stuck with a very large and irregular n-gon, and then extruded it to give it some depth. And then of course tried using boolean difference with both but didn’t and still doesn’t seem to work. Is that the reason for all the hate towards this modifier? At first I thought of sculpting the twigs inside the base mesh but AFAIK there is no way to sculpt with a mouse and get such a smooth curve. And that is without mentioning the multiplied geometry… Maybe I should’ve just done a knife project with the unbeveled twig curve and model and topologize the depth by manually, before using bmesh? How do pros do it effectively?

Indeed, it did work, go figure… Thank you for that!