Boolean Improvements

I’ll try changing the folder name :slight_smile:

I Managed to build it, and added it to my nightly builds

Daily updated GA build available at : https://blender.community/c/graphicall/tjbbbc/

4 Likes

I managed to build it and was trying it out with some duplicated boxes in Difference mode

I managed to subtract a circle ngon form a plane. But it only works in some limited positions, it doesn’t work when I move it around.

I’m getting a lot of crashes when duplicating a box, adding Boolean modifier to one in Difference mode and subtracting the other box from it. It mostly crashes when I move the box around. I have been getting these errors:

shouldn’t happen: couldn’t find e=(7,15)
shouldn’t happen: couldn’t find e=(1,9)
Error : EXCEPTION_ACCESS_VIOLATION
Address : 0x00007FF74B942954

e refers to different numbers different times.

One can do things in this branch that isn’t possible in the main build. I’ll keep playing around with it.

Also I’m wondering if the crashes have anything to do with this being 2.82 as I have found that version more unstable.

@Howard_Trickey would you like me to upload this Win64 build to Graphicall?

Thanks for building it and adding it to the nightly builds, LazyDodo.
Thanks for trying it out, z01ks. I don’t think you need to upload your build, given that LazyDod is building nightly.

There’s a bunch of work I still need to do on stability, especially with small threshold epsilons. I don’t think this is anything like ready for heavy bashing on it until I feel more comfortable that I am handling those. I’ll update this topic when I think it is closer to being releasable, at which time I will definitely want to here about cases where there are crashes or “shouldn’t happen” error messages.

6 Likes

What about asking for a convertToMesh modifer?

4 Likes

I could see something like this being really useful- probably needs its own thread though.

1 Like

Yes, I’ve been missing that ever since I left 3ds Max for Blender. It would be very useful for manipulating beveled curves without losing curve editing functionality.

A Cap Holes / Ends modifier should be added as well though, to turn the curve into a manifold mesh.

4 Likes

That would fit well in the curve data panels. I checked and it seems it0s not there. The only way to have a closed mesh (mesh inappropriate term here) is to have a curve doing the bevel job

3 Likes

With the cude and sphere in the first post, quick fix for that would be to use the Triangulate Modifier and changing the minimum Vertices to above 4 to get this end result,

But once adding some loop cuts on the side, it’s get all wonky.

Not sure if this will help.

2 Likes

Would something like this be possible within the boolean modifier?: https://blenderartists.org/t/wip-bevel-after-boolean/693072/979
A feature that allows you to add a bevel at the intersections of the boolean without the overlapping issues, kind of like a sub-modifier similar to the boolean operations with the Voxel remesh modifier.

4 Likes

For anybody working on booleans, my feedback would be: think about non-rendering meshes.

There are a lot of uses for non-rendering meshes, typically as the targets of mesh deforms, often because those non-rendering meshes have topology appropriate for physics (but not necessarily for rendering); that’s my most frequent use.

These kinds of meshes are not likely to be manifold. They may not have consistent normals, and they’re likely to have faceless edges. That means that strictly, traditionally, they’re inappropriate for boolean operations, because they lack clear insides/outsides.

However, any boolean operation involves a lot of tools that, strictly speaking, don’t require distinct volumes for both meshes involved, but only one mesh. And some tools (union) can have variants that don’t require distinct volumes for any mesh. Including functionality like that would improve boolean utility.

It’s not necessary that an intersect operation look at the intersection of two volumes; it could, instead, cut a mesh along the target’s faces and delete any vertices that lay outside the target’s volume. When used like that, it’s unnecessary for the boolean-modified mesh to have any particular volume.

Likewise, a union operation could be as simple as “join these two mesh objects.” Such an union would be useful as the target of any number of modifiers. Yes, mesh deform, but also shrinkwraps come to mind.

I know, strictly speaking, these aren’t boolean operations, but they’re related enough-- particularly in people’s intuitions!-- that I think it’s worthwhile to consider these uses.

1 Like

Thanks for your ideas, vaslin.
My new boolean is trying to do something reasonable with meshes that aren’t strictly enclosed volumes, but I was still depending on good normals to help indicate a sense of where the volume lies. I hadn’t thought of the cases you mention where one is a good closed volume and the other is “anything goes”, as you suggest. Food for thought.

6 Likes

This is strictly speaking pretty separate from Booleans. But since I work on Bevel too, it is my eventual aim to make (a) a bevel that properly handles overlap problems; and (b) a smooth connection between the boolean and bevel modifiers, so that the bevels will happen on the seams cut by boolean. But these both will come after I get my new Boolean working as a replacement for the current Boolean.

10 Likes

For me the Fast carve free addon is already a great improvement for boolean workflow. Can you get in touch with Jayanam for that ?

1 Like

and boxcutter, and hardops, and kitops, and and and… all of these are just interface wrappers for the existing boolean functionality. the more stable and predictable the underlying boolean functionality is, the better those addons become (which is exactly what @Howard_Trickey is working on).

4 Likes

I wish somebody would work on the default Boolean UI as well. Why not creating a workspace like the sculpting one for Boolean workflow ? Jayanam packed quite a lot of functions in the side panel that can make up for an entire workspace.

1 Like

Now this is overkill. :smile:

5 Likes

Just an update. The newboolean branch does a lot of things right (including coplanar intersections), but still needs work before it can be regarded as stable. I took some time out to document the algorithm used here:

https://wiki.blender.org/wiki/User:Howardt/Boolean

Unfortunately, I now know that I need to figure out a scheme to avoid doing the same intersection twice, rather than rely on epsilon-nearness tests to have separately-done intersections come up with the same vertex. This is going to take some time to fix. Also, I need some work on my “better” inside-outside test. It is better from a functional point of view but needs work on robustness.

28 Likes

I agree. The issue with coplanar faces is really important. Thanks for working on this!
This is the only problem preventing Blender from being used for design of mechanical parts.

5 Likes

We all appreciate the effort!!

3 Likes