Search code examples
printing3dmeshtriangulationmeshlab

3d-printing an inherently nonorientable surface


I'm trying to print 3D models of nonorientable surfaces: Klein bottle, Kuen surface, Boy surface, etc.

From the surface's parametric representation (x,y,z as functions of u and v) I compute a triangular mesh, which is mostly repairable into printable form by tools such as MeshLab, netfabb, and 3DEdit Pro.

However, these tools can't restore orientability, which is required for 3d printing. (The printer must know where the inside is, to know where to deposit material!) At any line of self-intersection, the two sheets of the nonorientable surface disagree as to which side is "outside." In MeshLab, one sheet is black. In netfabb, red. Those triangles are called flipped; their normals are reversed.

What approaches are reasonable?

  • Resolve orientability by calculating the lines of self-intersection, to separate the sheets, so each sheet is its own "shell" in 3d-printing-ese.

  • Print not the surface enclosing a solid volume, but rather the surface as a lattice. (Does that just beg the question, because extrusion "into the interior" becomes vanishingly thin at the lines of self-intersection?)

  • Print the model as is and then its "inverse" (reversed normals), giving two incomplete parts to assemble. For example, see how this villain has lightsabered off the part of the Kuen surface that should be atop its central two peaks. Kuen surface, incomplete


Solution

  • One simple way to transform any non manifold, non orientable surface into something that is printable is to "inflate" it so that it is no more an infinitesimally thin sheet. You can do that in MeshLab by using the uniform resampling filter and setting on the 'absolute distance' option (to get rid of non orientability) and specifying a reasonable offset (1% ~ 2%) and a reasonable precision (0.2% ~ 0.5%)