1
$\begingroup$

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):

cubes1

  1. Join (select both -> ctrl-J) the two upper cubes into a single mesh.
  2. 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:

cubes2

  1. Select the upper cubes:

cubes3

  1. 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):

cubes4

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.

$\endgroup$
14
  • $\begingroup$ can you include some screenshots? $\endgroup$
    – Harry McKenzie
    Commented Aug 4, 2022 at 2:43
  • $\begingroup$ Added a screenshot of the mesh. There's not much else to show -- if I fatten that mesh just a tiny bit, it looks about as you would expect, but then crashes with any Boolean modifiers. Almost certainly the fattened mesh is full of self-intersections (because afaik fatten doesn't handle that, correct?). $\endgroup$
    – Brandyn
    Commented Aug 4, 2022 at 6:35
  • $\begingroup$ is the scale already applied for both objects? using Ctrl+A. also try selecting all vertices and doing Ctrl+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$
    – Harry McKenzie
    Commented Aug 5, 2022 at 8:35
  • 1
    $\begingroup$ Ok, I have a much simpler way to replicate. I will edit the original post. $\endgroup$
    – Brandyn
    Commented Aug 6, 2022 at 8:01
  • 1
    $\begingroup$ @Brandyn Then I'd probably make a cage mesh and shrinkwrap the cage, with offset, to the original mesh, then boolean with that cage rather than the original mesh. $\endgroup$
    – Nathan
    Commented Aug 8, 2022 at 21:07

1 Answer 1

1
$\begingroup$

This seems to work, if a complete re-meshing is acceptable (generally is for 3d printing):

  1. Original object -> Edit Mode
  2. alt-S to shrink/fatten your mesh as desired
  3. Switch to Sculpt Mode
  4. ctrl-R to voxel-based re-mesh, in order to fix the mess that shrink/fatten created.

The resulting mesh should be a manifold and safe/correct for Boolean operations or direct 3d printing. Beware it will be very high poly count even if it started out simple. You may have to tweak the remesh resolution and such (defaults worked well in my case).

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .