Boolean unreliablility #45851

Closed
opened 2015-08-19 23:57:27 +02:00 by Kent Trammell · 19 comments

Blender booleans have always been extremely finicky especially when input meshes have wonky normals or they aren't water tight. I feel competent with preparing mesh inputs properly yet booleans remain unpredictable. Usually I can get something working by decimating/remeshing, exporting, re-import, etc.

But with this particular file (attached), none of my typical bribes successfully get the boolean to function correctly. If you open the file you'll see the "Cube" object in local mode with a boolean modifier urging the "Sphere" object to subtract its volume from Cube.

Is it safe to say booleans aren't "quirky" as much as they are "buggy"?

jack_01_boolBug.blend

Blender booleans have always been extremely finicky especially when input meshes have wonky normals or they aren't water tight. I feel competent with preparing mesh inputs properly yet booleans remain unpredictable. Usually I can get something working by decimating/remeshing, exporting, re-import, etc. But with this particular file (attached), none of my typical bribes successfully get the boolean to function correctly. If you open the file you'll see the "Cube" object in local mode with a boolean modifier urging the "Sphere" object to subtract its volume from Cube. Is it safe to say booleans aren't "quirky" as much as they are "buggy"? [jack_01_boolBug.blend](https://archive.blender.org/developer/F225547/jack_01_boolBug.blend)
Author

Changed status to: 'Open'

Changed status to: 'Open'
Author

Added subscriber: @theluthier

Added subscriber: @theluthier

Added subscriber: @sindra1961

Added subscriber: @sindra1961

Is the file which you attached not broken?
I cannot find Sphere object when I delete Boolean modifier.

Is the file which you attached not broken? I cannot find Sphere object when I delete Boolean modifier.

I'm sorry, I did not notice though it was set in a local view.

I'm sorry, I did not notice though it was set in a local view.

I think that it is caused by the place where two objects contact with.
There is a fold inside of Cube object.

I think that it is caused by the place where two objects contact with. There is a fold inside of Cube object.

Added subscriber: @ignatz

Added subscriber: @ignatz

Examination of the 'cube' object using Mesh Analysis set to 'intersect' shows lots of intersecting triangles running down the sharp interior creases of the 'cube' (squash?). Closer inspection of (some) of these areas does indeed show self-intersecting geometry. I don't think that the boolean function likes this situation and it just might be the cause of your trouble.

Examination of the 'cube' object using Mesh Analysis set to 'intersect' shows lots of intersecting triangles running down the sharp interior creases of the 'cube' (squash?). Closer inspection of (some) of these areas does indeed show self-intersecting geometry. I don't think that the boolean function likes this situation and it just might be the cause of your trouble.

Added subscriber: @mont29

Added subscriber: @mont29

Changed status from 'Open' to: 'Archived'

Changed status from 'Open' to: 'Archived'
Bastien Montagne self-assigned this 2015-08-20 14:11:46 +02:00

Definitively not a bug, just move your sphere slightly such that it does not cut some self-intersecting geometry and it works OK, like in file below.

jack_01_boolBug_b.blend

Definitively not a bug, just move your sphere slightly such that it does not cut some self-intersecting geometry and it works OK, like in file below. [jack_01_boolBug_b.blend](https://archive.blender.org/developer/F225770/jack_01_boolBug_b.blend)
Author

Ah ok, thanks for the diagnosis @sindra1961 @ignatz @mont29. It's such a bummer that booleans fail so easily.

Sorry for the false bug.

Ah ok, thanks for the diagnosis @sindra1961 @ignatz @mont29. It's such a bummer that booleans fail so easily. Sorry for the false bug.
Member

Added subscriber: @Ton

Added subscriber: @Ton
Member

The boolean library can do great work because it assumes strict sane input, just use manifold volumes without self intersections.
I don't think you'll find better boolean tools out there easily... but you never know!

Showing to people how awesome program X or Y does it instead could inspire someone!

The boolean library can do great work because it assumes strict sane input, just use manifold volumes without self intersections. I don't think you'll find better boolean tools out there easily... but you never know! Showing to people how awesome program X or Y does it instead could inspire someone!
Author

I have nothing but the highest respect for Blender devs, so please don't read this as a list of demands. Rather I'm just an artist outlining a [fantasy] workflow, entirely ignorant to how/if it can be done on the backend.

For sculpting, the current state of booleaning is a bummer because dyntopo unlocks a profoundly flexible creative environment that comes to a screeching halt when trying to boolean.

Booleans offer the hope of a similarly profound creative environment: "Bam subtract, bam union, bam intersect, subtract again, and wow! That would have been difficult to do otherwise." Like the feeling we get from this modo + mesh fusion demo .

So if dyntopo and booleans could work together reliably...eureka!

Currently we have one popular tool (dyntopo) which frequently generates non-manifold volumes with self-intersections that renders its geometry incompatible with another popular tool (booleans). While we can retopologize to ensure manifold geo, the boolean will just create more bad topology that needs more retopology. All of this significantly extends the duration of a sculptor's workflow, compared to the blissful alternative of booleans just working with dyntopo (or all) input geo.

My apologies if the bug tracker isn't the right place for this discussion. [Exits with soapbox under-arm...]

I have nothing but the highest respect for Blender devs, so please don't read this as a list of demands. Rather I'm just an artist outlining a [fantasy] workflow, entirely ignorant to how/if it can be done on the backend. For sculpting, the current state of booleaning is a bummer because dyntopo unlocks a profoundly flexible creative environment that comes to a screeching halt when trying to boolean. Booleans offer the hope of a similarly profound creative environment: *"Bam subtract, bam union, bam intersect, subtract again, and wow! That would have been difficult to do otherwise."* Like the feeling we get from this [modo + mesh fusion demo ](https://youtu.be/kjzfhbW2hNY). So if dyntopo and booleans could work together reliably...eureka! Currently we have one popular tool (dyntopo) which frequently generates non-manifold volumes with self-intersections that renders its geometry incompatible with another popular tool (booleans). While we can retopologize to ensure manifold geo, the boolean will just create more bad topology that needs more retopology. All of this significantly extends the duration of a sculptor's workflow, compared to the blissful alternative of booleans *just working* with dyntopo (or all) input geo. My apologies if the bug tracker isn't the right place for this discussion. *[Exits with soapbox under-arm...]*
Member

"Mesh Fusion" features wouls be totally possible with our boolean library. It's having the same limits - needs manifold (water tight) models.

To my knowledge there's no boolean tool out there handling what you describe. So it would be a real eureka!
Maybe Sergey or Campbell or Howard can have a say too though...

"Mesh Fusion" features wouls be totally possible with our boolean library. It's having the same limits - needs manifold (water tight) models. To my knowledge there's no boolean tool out there handling what you describe. So it would be a real eureka! Maybe Sergey or Campbell or Howard can have a say too though...
Author

Thanks for the replies @Ton!

Thanks for the replies @Ton!

Added subscriber: @AndersonOmori

Added subscriber: @AndersonOmori

Removed subscriber: @AndersonOmori

Removed subscriber: @AndersonOmori
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#45851
No description provided.