Specifically, I am working with manifold meshes and Boolean modifiers.
I have a high-poly-count 3d mesh which is my reference shape. I want to subtract it from another shape but with a small gap -- like for making a form-fit holder for a trinket.
Everything works fine if I don't fatten the object before subtracting it, but if I do (to make the small gap), Blender crashes at the Boolean modifier (presumably because fatten is inflating the object through itself in some places and not properly "union"ing the object with itself).
My source object is a clean manifold with no self-intersections, but it is intricate and will self-intersect with any fattening. The result I want is well-defined (self-union with the sweep through the inflation amount), but I can't find how to do it.
Any suggestions?
Update: Here is a very simple way to replicate the problem. This doesn't cause a crash, but it does fail in the way I'm trying to solve:
Create three cubes arranged like this (the two upper ones are not quite touching, and are partially embedded in the lower one):
- Join (select both -> ctrl-J) the two upper cubes into a single mesh.
- Add a modifier to the bottom cube, Boolean, Difference, and select the upper cubes (now one object). Do not "apply" the modifier -- leave it dynamic so you can see it change later.
If you hide the upper cubes it should look like this:
- Select the upper cubes:
- edit mode -> a (select all) -> alt-S (shrink/fatten)
Now, as you dynamically shrink/fatten the upper cubes, they will self-intersect at some point, and when they do, the cube on the bottom will disappear.
If you go back to the Boolean modifier on the bottom cube and change it to Fast, the cube no longer disappears, but it still "breaks" once the upper cubes intersect. Here's how that looks (with the upper cubes hidden):
Note this is an intentionally simplified example, which could be solved other ways (like Booleaning the top two cubes together first), but I am looking for a solution that is applicable to the case where the mesh (here the two upper cubes joined together) is something large and complicated (like an organic shape) that I can't apply ad hoc solutions to by parts.
Ctrl
+A
. also try selecting all vertices and doingCtrl
+M
to merge by distance to remove any duplcate overlapping vertices. boolean operators are flawed especially for very intricate meshes so be careful. if the difference modifier doesn't work and crash blender, maybe try Union? then delete the parts you don't need. $\endgroup$