[OpenSCAD] Discuss manifoldness, co-incident faces edges etc

Doug Moen doug at moens.org
Sat Nov 16 10:37:49 EST 2019

On Sat, Nov 16, 2019, at 9:07 AM, nop head wrote:
> Yes because STL is only for making real things, so it never needs to be able to represent that physically impossible shape. I still can't see why anybody would want to or why it is a problem.

I will explain why I want this and why it is a problem.

First, most of the models I create contain curved surfaces. I can represent these models exactly in Curv (that's a big reason why I made the software), but when I export to a mesh format, it turns into a polyhedron. STL can't represent curved surfaces, it can only represent a polyhedral approximation. That doesn't mean that curved surfaces aren't "real".

Second, STL can represent most polyhedra (although not the 2 cubes polyhedron from my previous post). But polyhedra cannot exist in the real world, and they can't be 3D printed. All that you can ever print is an approximation of a polyhedron. My printer cannot print flat surfaces. What I get instead is a washboard ripple. My printer cannot print sharp edges: they are rounded off. In this sense, polyhedra can't be 3D printed, and the problems are readily visible to the naked eye.

It is possible to create physical representations of polyhedra that look visually perfect. For example, by using a mill, and machining a shape out of metal to micrometer precision. You can even make a visually perfect representation of the two cubes model. But if you examine the object at a high enough level of magnification, the surfaces aren't really flat, the edges aren't perfectly sharp, etc, because the object is made out of atoms. In this sense, polyhedra can't exist in the real world.

What I care about is solid modelling. I create mathematical abstractions of solid objects using software, then I 3D print physical approximations of them, to within the resolution limits of my printer. A true solid modelling program can represent any mathematically valid 3D solid. CAD programs that use boundary representation, instead of directly modelling solid objects, have limitations in what solid objects they can represent. The 2 cubes model is a mathematically valid polyhedron, but the boundary is not 2-manifold. That makes it hard to represent in STL, but that's only because STL uses a boundary representation. This issue has no relevance to 3D printing hardware, because 3D printers print solid objects, not boundaries or surfaces.

3D printing hardware is somewhat crippled by the software used to drive it. Most slicers only accept mesh representations of 3D solids, and that's a problem. We've already discussed one issue, which is STL's problem with representing the 2 cubes model. Other mesh formats like OBJ and 3MF solve that problem. The bigger problem is that the difficulty of processing a mesh grows non-linearly with the number of triangles in the mesh. Roughly speaking, that's because when you slice an object, you have to look at all of the triangles in the mesh at every slice. One consequence of this is that there exist complex models, with a lot of internal structure, that the 3D printer is physically capable of printing, but that you can't represent using a mesh, because the mesh would require too many triangles. And it's all because we are using a boundary representation, rather than a direct representation of a mathematical solid.

I've seen many reports of this problem in the industry. There is a 3D printer vendor in my city who sells metal powder printers. When I visited, the engineer showed me a very fine lattice printed out of titanium. What was interesting is that you cannot print this lattice from a mesh, because too many triangles would be required. The slicer runs out of memory or runs out of CPU. Instead, they use an alternative file format that is very close to a voxel format. Each slice is represented explicitly.

Shapeways has blogged about the limitations of mesh file formats.

I hope this provides people with more insight into the ways that the STL file format is holding back the 3D printer industry.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscad.org/pipermail/discuss_lists.openscad.org/attachments/20191116/b4d79e58/attachment.html>

More information about the Discuss mailing list