Page MenuHome

Straightforward boolean operations produce non-manifold meshes (missing faces)
Closed, DuplicatePublic

Description

System Information
Operating system: Mac OS X 10.14.6
Graphics card: irrelevant

Blender Version
2.80 and 2.81 development build 2019-08-26. Also reproducible in 2.79.

Short description of error
Boolean operations will sometimes produce non-manifold errors like missing faces, even if all meshes involved are manifold and share no common vertices, faces, nor edges.

Exact steps for others to reproduce the error

  • Open the attached .blend file and execute all boolean operators on both the Clapper Slate-black and Clapper Slate-white meshes.
  • For both these ‘finalized’ meshes, go into edit mode, switch to Vertex Select, deselect any selected points, and test for non-manifoldness (Select, Select All By Trait, Non Manifold).
  • Expected result: there are no non-manifold errors.
  • Actual result: in Clapper Slate-black, the ‘D’ in ‘DIRECTOR’ is missing its bottom faces. In Clapper Slate-white, the ‘P’ in ‘PRODUCTION’ is missing its top faces.

All meshes used in these boolean modifiers are manifold and have neither duplicate points or edges, nor degenerate geometry. There are no shared points, edges, or faces. These operations should just work.

(For completeness, the attached file is based on https://www.thingiverse.com/thing:1463739 and will be published as https://www.thingiverse.com/thing:3828610)

Details

Type
Bug

Event Timeline

Abid Maqbool (cto.abid) lowered the priority of this task from Needs Triage by Developer to Needs Information from User.EditedAug 26 2019, 9:59 AM

Can't understand the problem.
Can you more clarify prob by capturing onscreen video, or point out by pictorial way.
Please try, Blender 2.81 too https://builder.blender.org/download/

The latest 2.81 development build exhibits the same problem. I have also tried this in 2.79, and it has the problem too.

These are the minimal detailed instructions to demonstrate the problem, because making these instructions costs a lot of time.

  1. Open the attached file ‘ClapperSlate-dualMaterial.blend’ in Blender.
  2. Switch to wireframe view mode by clicking the icon as shown in this image:
  3. At the right, click the two ‘Apply’ buttons, starting with the topmost one. This will apply the Boolean operators on the object Clapper Slate-white which is already selected.
  4. Select the Clapper Slate-black object by clicking its name at the top right of the window.
  5. Repeat step 3: click the two ‘Apply’ buttons again. This will apply the Boolean operators on the object Clapper Slate-black.
  6. Go into Edit mode using the menu at the top left.
  7. In the Select menu, choose None to ensure no points are selected. You can also do this with the alt-A keyboard shortcut.
  8. Now, in the Select menu, choose Select All By Trait, then Non Manifold.

Result: if the Boolean operators would work correctly, no points must be selected in step 8. However, points are being selected. This means the model has non-manifold errors. These errors can only be caused by a flaw in the implementation of the Boolean operators because of the reasons explained in the original post. If you don't know what “non-manifold” means or why it is an error, please escalate this to someone who does.

In Solid View mode, it can be seen that the error is due to two faces missing in the letter “D,” in other words there is a hole in the object. This can also be seen in the Clapper Slate-whiteobject by repeating steps 6 to 8 after going back to Object Mode and selecting that object.

Problems like these will cause ugly defects during rendering, and it also make it a pain to export models for use in other programs, so please don't try to dismiss this by saying it can be fixed by means of some workaround to fill the holes. The holes must not be there in the first place. Other programs have no problem with boolean operations like these. I see no reason why Blender would be allowed to have problems.

Bastien Montagne (mont29) raised the priority of this task from Needs Information from User to Needs Triage by Developer.Sep 2 2019, 6:57 PM
Philipp Oeser (lichtwerk) lowered the priority of this task from Needs Triage by Developer to Confirmed, Medium.Tue, Nov 26, 2:40 PM

Can confirm.
This is a hard one to track down [havent found the root cause yet, assume this is a combination of different things].
Most likely, this is a duplicate of T54406: Boolean Union Bug, as also in this case, translating either participating objects just slightly will resolve...

Anyhow, booleans are a subject of a complete rewrite, there is close to no chance this will get fixed on the current code, so will merge this into T54406...