STL 是最流行的 3D 打印 3D 模型文件格式。它记录构成 3D 形状的三角形表面。
我阅读了 STL 文件格式的规范。这是一种相当简单的格式。每个三角形由12个浮点数表示。前 3 个定义法向量,接下来的 9 个定义三个顶点。但这里有一个问题。三个顶点足以定义一个三角形。法向量可以通过两个向量(每个向量从一个顶点指向另一个顶点)的叉积来计算。
我知道法线向量在渲染中很有用,并且通过包含法线向量,程序不必在每次加载相同模型时都计算法线向量。但我想知道如果创建软件故意包含错误的法向量会发生什么?渲染软件会产生错误的结果吗?
另一方面,三个顶点说明了三角形的一切。包含法线向量将导致信息中存在逻辑冲突,并使文件大小增加 33%。如果需要,可以通过渲染软件在合理的时间内计算法向量。那么为什么格式应该包含它呢?该格式于 1987 年创建,用于立体光刻 3D 打印。当时计算法向量对于计算机来说成本很高吗?
我在一个帖子中读到,Autodesk Meshmixer 会根据顶点忽略法线向量和图形三角形。提供错误的法线向量似乎不会改变结果。为什么立体光刻 (.STL) 文件要求每个三角形都有一个法向量? https://stackoverflow.com/questions/47460033/why-do-stereolithography-stl-files-require-each-triangle-to-have-a-normal-vec
至少在使用 Cura 对模型进行切片时,表面法线的方向可以产生影响。我经常遇到 STL 文件,这些文件在任何查看器中渲染为实体对象时看起来都只是找到,但由于某些面的表面法线方向错误,切片器“认为”应该为空的区域(通常是凹面)是内部的一部分,切片器创建一个“顶层”,覆盖凹面区域的细节。 (这是从 Meshmixer 文件导出的 STL,该文件是从某些 SketchUp 源导入的)。
FWIW, 网格混合器 https://help.autodesk.com/view/MSHMXR/2019/ENU/?guid=GUID-90CE1063-9807-4A11-9E15-61E3AFD32A5E有一个 FlipSurfaceNormals 工具可以帮助解决这个问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)