Boolean Union modifier on manifold object produces non-manifold object

I’m having a problem with creating an irregular shape and wonder if I need to post a bug report.

I try to create 3 intersecting button like shapes and merge them using the Boolean Union. The 3 shapes are manifold but after merging them using Boolean Union it seems the become Non Manifold.

To reproduce it, I do it as follows:

  • Add a bezier curve and put it in the correct shape
  • I then convert the curve to a mesh
  • Then I spin it 360 degrees
  • Remove doubles
  • Add faces to the top and bottom
  • Then I copy the shape 2 times and move it on the Y axis so they’re neatly aligned but with overlapping skirts
  • Then I do Boolean Union so the 3 buttons form 1 shape
  • Then I use the 3D Printing button Make Manifold and notice that the shape wasn’t properly merged using the Boolean Union.

Whatever I try, when I press the Non Manifold button, the design gets broken because the new shape is Non Manifold so a lot of verteces get lost.

I played around with the Normals, regular Join (actually better to avoid this), Solidify modifier, Remove Doubles (non are present) but nothing that solves the issue.

Either I’m overlooking something or the Boolean Union modifier has a bug in it. I hope it’s the first. I attached my blender file (Test.blend.zip (172 KB)) recreated with version 2.79. In fact I first created it with version 2.72 with the exact same issue so that’s why I tried it with the most recent version.

The bottom faces are co-planar and when you intersect the forms, those faces overlap. Switching the boolean solver from Bmesh to Carve gives a better result and is known to work better with overlapping geometry, but it would be better to have forms clearly intersect without overlapping geometry.

It’s a known issue https://docs.blender.org/manual/en/dev/modeling/modifiers/generate/booleans.html#known-limitations
and no report is needed.

File -> save as dialog has a compress option. Use that instead of zip or rar, as it’s transparent to the user

Attachments

Test_ja12.blend (134 KB)

Thanks for the very informative answer. Your suggestion solves the issue. I also noticed that the Bmesh versus Carve wasn’t present in the older 2.72 version.

It seems I was a little over enthusiastic past time.

I had some spare time so I tried continuing my creation but ran into the rather same problem again. I created a new irregular shape and copied it 3 times but the Boolean modifier acts strange and 1 of them will just disappear choosing Carve.

The docs say:

The following characteristics are known to give bad output.
    

- Open volumes.
- Overlapping geometry.
- Self-intersections.
- Zero-area faces.


But:

  • Open volumes. As far as I can tell it’s a closed volume and that’s also how it should be.
  • Overlapping geometry. I tried lowering one of the objects so there is just intersecting and no overlapping co-planar faces to no avail.
  • Self-intersections. Don’t think there are self intersection as it was simply created by spinning a curve, adding a face on top and bottom and removing doubles.
  • Zero-area faces. Not sure what this is but it’s a 3D object all with normal faces to my knowledge.

So is there still hope for merging my 3 identical shapes in their current arrangement into 1 manifold shape? I know I could just recycle the shapes from the previous version but the shape is not detailed enough and I’m looking for a more robust solution to the problem which will also occur for other future shapes.

Test2_compressed.blend (141 KB)

The reason is because the surfaces are pointing in the wrong way. They describe a solid which is the size of the universe, with an air pocket in it that has the same form as your object.


The object scale is unapplied. That’s significant in few ways:

  • you’re not looking at a mesh that the tools and modifiers see
  • which means that if you’re removing double vertices (0 area faces when filled), the merge distance doesn’t match the viewport http://pasteall.org/pic/show.php?id=72366 and other seemingly weird behaviour with tools and modifiers, especially when the scale is non-uniform across axes
  • and if the scale is negative, the surfaces can point the wrong way, even if they look ok

Common troubleshooting series of operations is

  • apply object scale. ctrl+A -> scale
  • edit mode, select all, W -> remove doubles to remove double vertices
  • all still selected, ctrl+N to make normals consistent and pointing out
    In that order.

Some terminology:
A shape is two dimensional - an outline or a silhouette. A form is 3-dimensional. A mesh (vertices, edges, faces) can be manifold or non-manifold because that describes a surface which is supposed to enclose a solid.

It doesn’t usually cause confusion and I can understand just fine, the context is very clear with the file, but good to know because sometimes it could when explaining these things. For example, you were using a bezier curve which describes the shape of the cross-section, and repeating it around creates a form, which in turn creates a shape (silhouette) when viewed from any view angle. All of them are relevant when modeling.

Open volumes - surface that is not fully closed, the mesh has open edges
Overlapping geometry - already shown. Mesh elements that take the same 3D space
Self-intersections - a surface that goes through itself
Zero-area faces - double vertices that are connected with edges and filled with a face. Vertices are on top of each other, and the face area is 0.

Thanks for taking your time JA12 and giving an elaborate explanation. Taking your suggestions into account I solved the problem(s) as follows:

Giving applied scale: (in object mode) Ctrl+A > Scale
Recalculate outside normals: (in edit mode) Mesh > Normals > Recalculate outside (or simply Ctrl+N). I assume this is the part that makes the surfaces point in the correct way thus “un-inverting” my shape?

Then I clone my object 2 times, arrange them how I want, add a boolean union modifier using the carve. My object disappears but then I raise it on the Z axis very slightly as to not have overlapping co-planar faces. Complete the union + remove doubles and then do the Make Manifold in the 3D printing tab.

I do wonder how one can see or detect that the object is “inverted” as in “a solid which is the size of the universe, with an air pocket in it that has the same form as your object”?

Test2a_compressed.blend (141 KB)

The surface is drawn much darker when you’re looking at the backfaces in solid viewport shading mode. Could also visualize which way the normals are pointing at in edit mode, 3d view properties (N) - > mesh display: normals (face). They’ll show which is outside.

If you have a manifold mesh and it has no self-intersections, making normals consistent and pointing out (ctrl+N) works every time without a fault. If it doesn’t work, you can be certain there’s a problem with the mesh.