在 glTF 中,法线是按顶点存储的。在大多数图形管道中,通常在光栅化(硬件)期间计算面的法线,作为该面的顶点法线之间的线性插值。
对于它的价值, glTF确实在 original.indices 中指定了逆时针旋转。但是,glTF 中的材质可以是双面的,并且Double Sided的规范表明,在查看表面的背面时,必须在评估光照之前翻转法线。
在实践中,有时创作工具会生成由内而外的多边形网格,甚至具有薄壁(非流形或非水密)几何体。在这种情况下,很难说什么是“内部”与“外部”,因为它们看起来相同,并且缠绕顺序可能是任意的。(在 Blender 编辑模式下,单击菜单 Mesh -> Normals -> Recalculate Outside 来解决这个问题)。
对于单面材料,缠绕顺序不应该是任意的,因为背面是隐藏的。使用这些材料时,人们会期望逆时针缠绕顺序三角形。在 Blender 中,这可以通过选择“Eevee”引擎、调出材质属性面板并勾选“Backface culling”来完成。确保这发生在材质设置中,而不是在视口设置中,否则 glTF 导出器将找不到它。使用“材料预览”查看模式查看结果。
如果我所有的脸都是平的/不弯曲的,我是否应该能够使用其中任何一个而无需计算任何东西?
是的,如果您有完全平坦的面,我希望每个面内的顶点法线相等,这样线性插值不会对法线向量产生任何变化。