[OpenSCAD] Discuss manifoldness, co-incident faces edges etc
doug at moens.org
Thu Nov 14 11:21:35 EST 2019
Following up on Carsten's comment, the self-intersection repair algorithm that I conceived of, which works by splitting faces, isn't suitable for STL/polygon soup meshes, because the resulting mesh may not be manifold. The results aren't manifold for the figure-8 extrusion, they are manifold for the swept epicycle.
My algorithm does work for CGAL and 3MF, in the technical sense of creating a valid 2-manifold mesh. However, the resulting mesh might not be printable because my algorithm can potentially produce separate regions of the model that join at knife edges, which might be very weak or even fall apart during printing.
I found an alternative self-intersection repair algorithm online. This one focuses a particular class of local self-intersections, where the model contains a thin surface, and some triangles on one side of the surface project through to the other side, creating self intersection. This is quite different from the swept epicycle model we discussed earlier. This algorithm uses "edge hammering" and "face lifting" to fix the problem and give the surface more thickness, which changes the shape of the model, and potentially makes it more 3D printable. https://imr.sandia.gov/papers/imr18/Yamakawa.pdf
On Thu, Nov 14, 2019, at 3:46 PM, Doug Moen wrote:
> On Thu, Nov 14, 2019, at 10:32 AM, arnholm at arnholm.org wrote:
> > Attempting to automatically repair the kind of self intersection you
> > describe, i.e. two faces intersecting will give "interesting" results.
> > If you split the two faces into say 4 triangles it implies creating a
> > 4-manifold edge... so an automatic repair attempt of such issues is
> > mostly self defeating.
> Thanks for correcting me on that.
> Actually, the repair would result in a 2-manifold mesh *if* topology
> information is part of the mesh, because the repair would create
> duplicated vertexes in the vertex list. This would fix a
> self-intersection problem for the purposes of running a CGAL operation;
> it would allow a boolean operation to succeed. Keep in mind that CGAL
> uses the Nef Polyhedron representation for boolean operations, and two
> polyhedra that meet at an edge is representable as a Nef Polyhedron. As
> long as the automatic repair process produces something that we can
> convert into a Nef Polyhedron without losing topology information, then
> it works.
> However, if you discard the topology information (eg, when exporting to
> STL), then you end up with a 4-manifold edge, and the figure-8 mesh
> isn't 2-manifold, and isn't printable. That's the part I wasn't clear
> on when I wrote the earlier post.
> OpenSCAD mailing list
> Discuss at lists.openscad.org
More information about the Discuss