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