Boolean Improvements

I can’t tell for sure, but it is looking like a really long and skinny triangle was created by the intersection on that first side [Edit: actually, I suspect that it was the subsequent triangulation you did that created the long skinny triangle]. The new code will do that unless three vertices are exactly in line. I have toyed with the idea of a postpass that removes long, skinny triangles, and merge close vertices, but maybe it is better to enhance the new weld modifier to do things like that.

P.S., it is kind of funny to me that the first thing you do is triangulate. The result of my code is triangulated, and then I go to a lot of effort to undo that as much as possible.

in any case, you have done a great job, thank you very much for that. I hope over time you will improve the new boolean and the blender will become like a CAD programms, in which do not need to think about intersecting geometry))

about triangulation - it’s easier to see where the wrong geometry is. Of course, on solid surfaces, problems can be eliminated with - selecting all- X- Limited Dissolve. But on curves, spherical surfaces - this will not work (

cubes are created in orthographic mode, so many faces and edges are in the same plane and therefore triangles cannot be formed, only if the blender has an fault and in orthographic mode there is a displacement of objects or snapping by points (if enabled).
But you can make such cubes yourself and see what the problem is. The example is very simple but illustrative.

Sorry, I don’t understand the point you are making with this post.

You said “The new code will do that unless three vertices are exactly in line”.
All cubes are the same and are created in orthographic projection, therefore, on some sides of the mesh, all edges, points will be located on the same axis, in one perfectly aligned plane. If the boolean itself is working correctly, then the blender distorts the location of points in the axis, it is to this distortion that the boolean is sensitive. Or the problem is something else, but problem is there.
gif show that the problem is along the X axis. Along Y, Z - all ok.

Yep, after aligning objects - all ok

users want the blender to be the standard of the 3D industry … how is it possible if basic things work with a flaw, if objects are crooked in orthographic mode. And the user will puzzle over what the problem is - in his mistakes or incorrect operation of the program itself

Maybe need create analog of weld modifier, like the TinyCAD addon, but which calculate the distance of intersection (edges with edges, vertexes with edges) along the axes and creates an intersection point, or even cuts like a Knife Project if the edge is over a face , and with the usual weld modifier everything will be combined into a solid mesh.
Its very actual for Bevel modifier, because standard blender tools, at this time, cant solve this problem
for example

Sometimes, things in Blender involve a matrix multiplication when one might expect that one simply adds numbers to some coordinates. I suspect that’s what is going on here. That can introduce the tiniest difference (say, 1 part in a million) between what one would expect (exact movement along an orthographic plane) and what actually happens. My new boolean code is unfortunately not tolerant to even the tiniest difference if you want something to be detected as coplanar. I tried for a long while to make new boolean use doubles and be tolerant of such things, but after several tries, gave up – I just couldn’t make the code robust enough.

I do get your point about user expectations. Maybe we can look more into having certain transform operations not use matrix multiplication. But that would make the code messier and not solve all problems anyway, so I don’t know what the reaction to that would be.

5 Likes

in fact, the weld modifier allowed us to solve a lot of problems without changing other modifiers, for example - bunch the array modifier with Simple Deform (Bend). Maybe need to create a tool or modifier that will solve the problems of another modifier.
The most annoying thing in classical modeling is intersecting geometry, basically to fix these problems need to work with a knife (which also has a number of disadvantages: sometimes snapping does not work, there is no through snapping through polygons) or a Knife Project, TinyCAD addon - all for create cuts along which the mesh is sew into a solid mesh, and double elements (vertices, edges, faces) merge. Now let’s imagine a modifier, or a tool that can create intersection with vertices and edges, faces and create a cuts within the required distance. It turns out an advanced Self Intersect Knife Project tool). Then all points are combined by distance or using a weld modifier.
I have no idea how to do this, but it is definitely possible. Such a tool will allow to solve a number of problems - the work of the Bevel with Clamp overlap disabled, the intersections after the inset faces tool, the problems with the mesh after the operation of the Boolean, Shrinkwrap, Displace, Array, etc.
I have been using a blender since 2012. Over the past 8 years, very little has been added in modeling. Only now there are fundamentally new things (more precisely, the work of old instruments has been much improved) that make life much easier - a new bevel modifier and new boolean, this is a very significant contribution to the development of modeling. Thank you very much for this.

My next big project after Boolean is going to be to solve the problems you are talking about for Bevel and probably inset. I want to get rid of the need for Clamp Overlap. This is not going to be an easy project, but I am determined to make it work.

23 Likes

Hi,
I really appreciate the amazing work on the new boolean. It works very well when paired with the new add object tool, and although it fails around 25% of the time it works a million times better than the old boolean. Ideally I would want each box to be a separate object – I think someone else is working on making a collection the boolean object which may address this

Now the blender team has good financial support from sponsors, maybe ask someone for help, after all, it is very difficult and time-consuming to develop something alone. Maybe you can create your own special team to solve such fundamentally problems, after all, this is almost the level of SIGGRAPH development. In addition, we users are also not eternal and may simply not be able to hold out :frowning:

3 Likes

i don’t think blender dev understand how good the stuff that Howard is working on is.

1 Like

It’s absolutely wonderful! I am super thrilled with the new solver and compared it to all the other softwares I own. No complaints here.

2 Likes

Found a case where it breaks.

1 Like

Please use the bug tracker to report breakages, with example .blend attached. Thanks.

3 Likes

Will I be able to run clean bevel around the sharp edges after boolean like in this case difference operation text with sphere?

The problem here is not with Boolean, but rather with Bevel (which I’m also responsible for, with help from Hans now). Bevel needs a major upgrade which is to be able to move gracefully over vertices and edges that it runs into. I’ve said many times now that I intend to work on that as my next big project after boolean, so I better follow through with that. :grinning:

17 Likes

Speaking of new boolean modes, I know you just did a TON of work on boolean for, like, a couple years for the new solver, but I was wondering if we might get a new boolean mode called “Slice” or “Seam”, something along those lines.

It would work like this:


If you have a plane, and use it to boolean an object, it creates an edge loop of the silhouette.

I think this is already similar to what you were discussing, just with both clear outer and clear inner on.

2 Likes