Yeah I do, and I also underestimate the issue.
In this case there would be less problems because the new hidden triangles fall on a wide area, resulting in not-extreme angles, but make the object less thick and there you go again with thin triangles.
Hi, can we have the list of improvements that have been made to the boolean system so far?
while I like this idea for the sole reason that it would make loop selecting the resulting intersection edge significantly easier (for things like bevels, etc)- but I feel like this particular use case is extremely rare. how often do you boolean one object out of a single face? most of the time I find myself doing compound booleans, or repeat operations in a single area (IE: box cutter or hardops), and if the surface had geometry like this it would quickly become a huge mess i think.
The improvements so far are all around making the operation give the correct answer in more cases than the old one. These are cases where the old boolean either doesn’t work at all or works only sometimes (a bit of a luck-of-the-draw thing):
-
A face on one side of the boolean is exactly coplanar with a face on the other side (that is, they are in the same plane and overlap).
-
An edge on one side of the boolean exactly overlaps or intersects an edge or vertex on the other side.
-
Cases of very small features or very oblique intersections causing the old (floating-point based) code to get confused about the final topology, and thus produce a non-watertight closed volume.
Additionally, the new boolean can operate on many meshes at once, not just one or two. This is not yet exposed in the UI or API, but will be soon.
The boolean is currently worse than the old one in these two areas:
-
It is slower.
-
It does not yet try at all to handle the case of non-closed-solid input meshes. The old boolean didn’t promise anything in that area, but sometimes works (if one is lucky with the direction of the ray used to decide inside/outside).
P.S., I am continuing to update the builds at https://builder.blender.org/download/newboolean/
There have been a number of bug fixes since I first posted about the builds.
Concretely, these are bugs reported against the old boolean that are fixed by the new one:
T47011, T46988, T47087, T47108, T54024, T55466, T58814, T61845, T68144
(see https://developer.blender.org/T47030 for a roundup list of these. The remaining unfixed ones are all about cases where the inputs are not closed volumes.)
Hi Howard,
- A face on one side of the boolean is exactly coplanar with a face on the other side (that is, they are in the same plane and overlap).
I tested this yesterday and it works pretty well but at the same time the performance decreases.
- An edge on one side of the boolean exactly overlaps or intersects an edge or vertex on the other side.
- Cases of very small features or very oblique intersections causing the old (floating-point based) code to get confused about the final topology, and thus produce a non-watertight closed volume.
- It does not yet try at all to handle the case of non-closed-solid input meshes. The old boolean didn’t promise anything in that area, but sometimes works (if one is lucky with the direction of the ray used to decide inside/outside).
I’ve never had these problems with the old boolean system.
Thanks for the hard work. It would be nice to have better performances, especially when working with subD meshes.
Also it would be very useful to add a “BooleanModifier.show_in_editmode” which was mentioned in my previous post and perhaps adding a “bevel after boolean” operation as an extra option to the modifier.
Let me know your thoughts.
I apologize if this has been answered. Will the new Boolean improvements include the ability to create 2D Booleans? That is, the ability to Boolean coplanar 2D objects like a square and a circle?
IMO, this would be a great addition for those who are used to more traditional 2D path and outline workflows, like those who use CAD packages or programs like SketchUp.
I also think it helps new users with their modeling strategies.
Thanks for all the great work, Howard!
@giuseppebufalo I will get back to working on performance when I am closer to certain that the functionality is working perfectly. Right now it is not. I will try to look at the show_in_editmode thing soon, since it is likely to be easy to fix.
@chippwalters You are not the first to ask for this, so it is something I will consider. The code for 2D intersection is there. I would just have to do a 2D inside/outside test and then hook this up to the code. I was thinking: if I detect that all the meshes are in the same plane, then just do a 2D boolean instead. But I need to make sure the 3D boolean is as good as I can make it before adding new functionality like this.
Just because this was mentioned here: I did a Win build with the ‘Booleanmodifier.show_in_editmode’ feature made accessible.
Discuss over here, win build included: Boolean 'show_in_editor' property
Sry for the brief highjack!
Thanks for figuring that out @rbx775!
The patch is quite trivial.
Its basically just a flag in line 397 of MOD_boolean.c :
/* flags */ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_SupportsEditmode,
But I sure stepped through the code like a monkey, because I overlooked it at first.
There are new builds up at https://builder.blender.org/download/newboolean/ .
- Fixed a crashing bug
- Incorporated rbx755’s patch to allow the modifier to be seen in edit mode
- Put in initial support of having a non-closed-volume operand, so that, for example, using a difference of a plane to cut a plane slice should be possible.
Unfortunately the current Mac build is likely crippled - there is a bug currently in master where you can’t select things in edit mode (or can’t see the selections), and since I had merged in master, I have that bug too. Sorry. When the bug in master is fixed, I’ll put up a new build.
Hi Howard_Trickey,
I have tested this latest build and it works very well for 3D models.
Booleans with flat objects do not work, but it is appreciated that it may end up doing so since the cuts are produced correctly, although the correct face is not always eliminated.
Anyway, I have found an exception, I upload a video for you to see the problem.
Thanks.
Thanks @wevon. I wasn’t intending it to work for the Boolean of two flat objects yet. Maybe in the future.
It would help me find the problem you showed in the video if you could upload the .blend file with those objects in it.
https://drive.google.com/file/d/1c37AIAZ9Rtd3HE2F9rc4130XIU3dvOqZ/view?usp=sharing
Here it is, if there is any permission problem let me know.
I need permission. Request sent.
I know performance is still a WIP and may never get back to the level of the old one but would you be interested in a small artificial file I have that shows a difference of 60fps (old) vs. 5fps (new)? Of course the new one is completely correct while the old is broken at certain points in the animation so there’s that
I just discovered a big performance problem, on a kind of mesh that I didn’t try when doing my first pass performance tuning. I know how to fix it and am doing it now. I would be happy to see your file, though, in case it tickles a different performance problem.
Here is newboolean-animtest.blend - just hit play on the timeline and observe the fps.