Boolean difference between two text meshes

Hi everyone, I’m new to Blender but I’ve been searching online for solutions to this issue and reading tutorials, so hopefully my post won’t come off as ignorant.

Anyway, to avoid confusion, I’ll just jump to explaining my end goal. I’m trying to model a simple puzzle for my friend’s kid that I can print out with my 3D printer. The puzzle consists of her first, middle, and last name, one on top of the other, with sections cut out of each layer to allow for the one above it to fit inside. The fully assembled puzzle would look something like this:


That’s “FIRST”, “MIDDLE”, and “LAST” in case it’s hard to read. To clarify, first would be subtracted from middle, and middle from last. First and last shouldn’t have any interaction.

So the first thing I tried was to simply create the text objects, convert them to meshes, then add a boolean difference modifier to the larger piece. Unfortunately, this apparently doesn’t work due to the way text gets converted to a mesh in Blender. I searched online and found someone who fixed a similar problem by first remeshing the text, then running the boolean modifier after that. This actually worked! Well, sort of. Remeshing kind of leaves me with a dirty text model (some lumpy, rounded edges that should be sharp, loss of fidelity, etc.) but no huge deal breakers there. However, now I’m left with another problem.

Remember how I said that I was creating this with the intention of it printing it out into a real life object? Well, the problem with that idea and dealing with something like the boolean difference modifier is that things don’t work 100% perfectly in real life like they do in the computer world, especially not when it comes to 3D printing. If the edges of the outer and inner objects match up mathematically perfectly, you’re probably going to need a sledgehammer to get them to fit together in real life.

So what I really need to do is make the inset pieces slightly smaller. Well, not smaller, but skinnier. If I were to just scale them down, any piece with inner space or multiple convex shapes would no longer fit (take the letter “O” as the most basic example). Of course, there’s a tool for this–shrink/fatten–however it doesn’t really work very well after the remesh modifier has been applied:

It might be hard to tell, but the corners of the text shapes are much less enthusiastic about shrinking down than the edges/faces, resulting in a pointy, slanted shape. Also, this is after only applying a very mild level of shrink (about -0.015, which is probably not enough). Anything more than that results in a shape that no longer resembles text.

Is there a simpler way to accomplish what I’m aiming for? The idea of “text shape subtracted from text shape” seems like such a conceptually simple idea, but the more I pursue it the more complicated it gets.

How about you just make the pieces of the object that you’ll use with boolean modifier fatter. I think that will work just fine. So to explain in more detail, just copy the original text, make it fatter and punch holes/space with boolean modifier into object that will have the normal sized text in it.

I think boolean doesnt work on it, because it needs to work with 1 closed object and another one.
If you go in edit mode you can press P to split the texts in loose parts, and you get individual letters then, on witch boolean will work.

There is another modifier called solidify
That could enlarge objects a tiny little bit (or a lot), like if got a thicker skin. I think thats what you need.
But you probaply would need to test it with your 3d printer, how much you like to enlarge it.

Also i am not sure but you talk about corners, my experience is that it doesnt work that well if you want to do more with the mesh version of the text. Perhaps a bevel modifier would work, not sure.

i believe what you looking for is called the intersect tool, when in edit mode it is in mesh -> faces -> intersect. it allows you to subtract one mesh from another. it is a little hard to explain and i don’t have much experience using, but a quick look on youtube should explain it.

good luck, hope you get this to work.

Thanks for the suggestions, guys!

@Ognjen:
This is pretty good idea. The only issue is that fattening the remeshed text results in basically the opposite problem of what I showed in the 2nd picture above; instead of the corners poking out with sunken edges, the edges/faces bulge out faster than the corners, giving it a balloon-like appearance. That said, if this shape is just being used for the difference shape being cut out of the larger text, it will probably serve as a workable solution. I’ll give it a try and report back on how well it works.

Oh, and for the record, if I try to apply shrink/fatten before remeshing, this is what I get:


If I could somehow get Blender to attach all those vertices, I think not only will shrink/fatten work the way I want it to, but the boolean modifier might also stop giving me an error before remeshing. I have a feeling it’s not so much because of the complexity of the mesh as it is the fact that text->mesh doesn’t result in an actual solid shape.

@Razorblade:
Yep, I should have mentioned that I was already splitting the individual letters up with Edit->L->P. That was the only way I could get boolean to work at all even after applying remesh. However, nothing seemed to make it possible to apply boolean without remeshing, which is why I have a feeling it’s just because the converted text mesh isn’t considered solid. Boolean probably can’t do anything if all it sees is a bunch of 0 volume shapes.

@crazyCad2502:
Do you mean “inset” instead of “intersect”? I gave it a quick try and it looks like it might be useful for me. Using it normally sends me straight to crazy town:


However if I hold ctrl:



…it actually looks kind of like what I’m going for! I’ll look into this further when I have the time.