Is there a method to make self-intersecting meshes into manifold objects?


I need an automated solution for situations like this. This is an EXAMPLE, a simple model to illustrate my problem. Don’t tell me to remodel this by hand. The real environment where I need this solution to be applied are extremely complex, procedurally generated objects with MILLIONS of vertices, no way to do any manual work on them.

So basically I need a tool that would:

  1. Detect intersecting faces and make cuts at all intersections.
  2. Then remove vertices ‘inside’ the object.
  3. And remove doubles to weld the mesh.

Obviously point 2. is the biggest problem, as I don’t know a tool in Blender that could do this and I’m not even sure if it’s possible to make one. If the whole mesh is cut everywhere, how a program could decide what is “inside”? There is no “inside” at that point.

first millions of verts !
you would need a big machine or Blender might get very sluggish with any operation - modifier !

can you do some manual operations ?

ex: for this Klein bottle

   cam you make a basic cut  with bisect tool
   then use the Bool tool to clean up things
   and remove doubles after.

Happy bl

No I can’t. I’m looking for a script/addon.

did you look at the Meshlab soft
it has some powerful clean up options

happy bl

Unfortunately the only solutions that will accomplish what you want require $$$. Check out Netfabb or Materialise. No remodeling by hand required.

All of my +1’s go towards this.

http://www.meshlab.net/
https://www.youtube.com/results?search_query=meshlab

I’m fine with that (I would really prefer something inside Blender though) if this software is absolutely sure to solve my problem.

Meshlab can’t do this, which is why I bought Netfabb a few years back. Autodesk bought Netfabb and I think its only available by subscription now. It’s not cheap but its far more reasonable than Materialise, which is just astronomical, but its a standard in high end 3d print services.

Can Netfabb do this? Would you run a test with a model above for me?

Yes, can you post the file?

Keep in mind that the repair software such as Netfabb is design to work with triangle meshes for 3D printing. Therefore, a quad mesh will result in a fully triangulated mesh. If you want quads back, you will need to retopologize the result in another application.

Here you go. Thank you.

Attachments

klein.blend (148 KB)

The new object is loaded in the same place as the original. klein original and modified.blend (192 KB)
I tried to upload STL and OBJ but it seems other formats are not permitted. I zipped them together, that seems to have worked klein cut STL OBJ.zip (61.7 KB)

Ok, great. So it works. “Tris to quads” in Blender did the job to bring back quad-based topology.
Seems like I’ll need to squeeze some more money out of my pocket this year…

An object starting as quads is close to an ideal situation. The geometry that is affected is pretty close to the intersection area because quad objects typically have a similar size and overall similar density of quads.

In cases where the size and distribution of quads varies significantly, I imagine the results may not be as good.

The current Bmesh Boolean in Blender kind of does what you want in code, but not with settings exposed to users. If you use Intersect (Knife) then it does self intersection, but no option to do “Union” boolean, even though it is using an internal routine that has that ability. If you use Intersect (Boolean) then you can get “Union” but need separate pieces. If you take your example model, do an edge split around a circular loop, move them apart a bit so you can close the pieces off by doing ‘f’ on the ends, then Intersect (Boolean) does a passable job here. But of course, you talk about the case of millions of vertices, where the current floating point code in Bmesh Boolean is likely to fail due to precision problems (and, likely to be too slow, though I’m not sure about that).

I am working on an update to Blender’s boolean that I hope will do a decent job in the situation you describe. But it will be a while, and who knows if I’m right that I can accomplish this. So if you have an immediate need, use the solutions in this thread.