STL是3D打印最流行的3D模型文件格式。它记录构成3d形状的三角形表面。
我阅读了规范 STL 文件格式。这是一种相当简单的格式。每个三角形由 12 个浮点数表示。前 3 个定义法向量,后 9 个定义三个顶点。但这里有一个问题。三个顶点足以定义一个三角形。法向量可以通过取两个向量的叉积来计算(每个向量从一个顶点指向另一个顶点)。
我知道法线向量在渲染中很有用,并且通过包含法线向量,程序不必在每次加载相同模型时都计算法线向量。但我想知道如果创建软件故意包含错误的法线向量会发生什么?它会在渲染软件中产生错误的结果吗?
另一方面,3 个顶点说明了三角形的一切。包含普通向量将允许信息中的逻辑冲突,并将文件大小增加 33%。如有必要,渲染软件可以在合理的时间内计算法线向量。那么为什么格式要包括它呢?该格式创建于1987年,用于立体光刻3D打印。当时计算普通向量对计算机来说成本高吗?
我在一个帖子中读到,Autodesk Meshmixer会根据顶点忽略法线向量和图形三角形。提供错误的法线向量似乎不会改变结果。 为什么要进行立体光刻(.STL) 文件要求每个三角形都有一个法向量?
至少在使用 Cura 对模型进行切片时,表面法线的方向可能会有所不同。 我经常遇到 STL 文件,这些文件在任何查看器中渲染为实体对象时看起来都只是找到的,但由于某些面具有错误的表面法线方向,切片器"认为"应该为空的区域(通常是凹形)是内部的一部分,切片器创建一个"顶层"掩盖凹区域的细节。(这是从从某个SketchUp源导入的Meshmixer文件导出的STL)。
FWIW,Meshmixer有一个FlipSurfaceNormals工具来帮助解决这个问题。