Straightforward boolean operations produce non-manifold meshes (missing faces) #69150

Closed
opened 2019-08-25 18:09:11 +02:00 by Alexander Thomas · 13 comments

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
ClapperSlate-dualMaterial.blend

  • 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)

**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** [ClapperSlate-dualMaterial.blend](https://archive.blender.org/developer/F7703206/ClapperSlate-dualMaterial.blend) * 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)

Added subscriber: @DrLex

Added subscriber: @DrLex

#72074 was marked as duplicate of this issue

#72074 was marked as duplicate of this issue

Added subscriber: @AbidMaqbool

Added subscriber: @AbidMaqbool

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/

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: step02.png
  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.step03.png
  4. Select the Clapper Slate-black object by clicking its name at the top right of the window.step04.png
  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.step06.png
  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.step08.png

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.
final_result.png

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.

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: ![step02.png](https://archive.blender.org/developer/F7704558/step02.png) 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.![step03.png](https://archive.blender.org/developer/F7704560/step03.png) 4. Select the `Clapper Slate-black` object by clicking its name at the top right of the window.![step04.png](https://archive.blender.org/developer/F7704563/step04.png) 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.![step06.png](https://archive.blender.org/developer/F7704569/step06.png) 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`.![step08.png](https://archive.blender.org/developer/F7704606/step08.png) **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. ![final_result.png](https://archive.blender.org/developer/F7704590/final_result.png) 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-white`object 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.
Member

Added subscriber: @lichtwerk

Added subscriber: @lichtwerk
Member

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 #54406 (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 #54406...

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 #54406 (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 #54406...
Member

Closed as duplicate of #54406

Closed as duplicate of #54406
Member

Added subscriber: @ajlanaltug

Added subscriber: @ajlanaltug

Added subscriber: @jimqode

Added subscriber: @jimqode

I can confirm this problem still exists with 2.83.1
Sculpting seperate parts then trying to merge them into one object for 3d printing is very painful because of this bug.

I can confirm this problem still exists with 2.83.1 Sculpting seperate parts then trying to merge them into one object for 3d printing is very painful because of this bug.

Added subscriber: @CMC

Added subscriber: @CMC

In #69150#985036, @jimqode wrote:
I can confirm this problem still exists with 2.83.1
Sculpting seperate parts then trying to merge them into one object for 3d printing is very painful because of this bug.

Does it still exist in 2.83.3? That is the latest version atm.

> In #69150#985036, @jimqode wrote: > I can confirm this problem still exists with 2.83.1 > Sculpting seperate parts then trying to merge them into one object for 3d printing is very painful because of this bug. Does it still exist in 2.83.3? That is the latest version atm.
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
6 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#69150
No description provided.