为什么Stereolithography(.STL)文件要求每个三角形都有一个法向量?

时间:2017-11-23 16:38:26

标签: graphics

我正在尝试编写一些代码来操作.STL ASCII文件,而我正在尝试完全理解文件格式。从我所看到的,每个三角形的“facet normal”行的内容对绘制的三角形没有影响。它也不会影响三角形的哪一边被认为是“外部”,这是通过反转顶点的顺序来完成的。

这个三角形

Apache Axis 2

与此三角形相同

facet normal 1 1 1
   outer loop
      vertex -1 1 1
      vertex 1 -1 1
      vertex 1 1 -1
   endloop
endfacet

也与这个三角形相同。

facet normal -1 -1 -1
   outer loop
      vertex -1 1 1
      vertex 1 -1 1
      vertex 1 1 -1
   endloop
endfacet

鉴于具有明确的法向量是数学上的冗余信息,并且它甚至不用于实体的绘图中,为什么它是文件格式?如果它被用于某种东西,它的用途是什么?

编辑:我应该补充一点,我在Autodesk Meshmixer中打开这些文件。

1 个答案:

答案 0 :(得分:1)

你确实测试了这个怎么样?如果您以前用于测试的程序没有使用normal,那么这并不意味着在任何其他程序中根本不使用法线。包含正常的原因有几个:

  1. 平滑图形着色(渲染)

    没有法线你不能有光滑的阴影和光滑的表面看起来不稳定,除非使用非常高的三角形数... ...

    choppy Earth

    然而,要实现非常平滑的着色,我们需要每个顶点法线,而IIRC STL只有每个面法线,因此平滑只能用于伪像表面三角形。

  2. 声明工具访问方和角度(打印)

    STL 适用于 3D 打印,根据所使用的技术,法线可能具有特殊含义,例如确定工具对表面的访问角度,甚至可以是用于调整层结构或任何东西。所有这一切都取决于打印机的控制软件如何解释或使用它。