Answers:
游戏开发中通常使用两种类型的法线贴图。您认为它们应该起作用的方式是一种类型的工作方式(模型空间法线贴图),但是大多数游戏都使用另一种类型(切线空间法线贴图),这就是为什么将大多数蓝色纹理与法线贴图相关联的原因。
使用模型空间法线贴图,每个通道使用与其所使用的模型的顶点相同的坐标系来编码法线的精确值。这意味着法线贴图的不同部分将具有不同的色调,但是彼此靠近的像素通常将具有相似的颜色。(源)上方显示了一个模型空间法线贴图的示例。
切线空间法线贴图通常是浅蓝色。这种类型的地图在网格空间中每个像素位置唯一的坐标空间中定义法线。它使用(内插的)顶点法线作为Z轴,并将其他两个正交矢量(称为切线和双切线)用作X和Y轴。本质上,您可以将贴图中的法线视为通过插值顶点法线而计算出的该像素法线的“偏移”。切线和切线向量也从顶点数据进行插值,并确定网格上哪个方向对应于法线贴图中的“上”和“左”。问题中提供的图像很好地说明了典型的切线法线贴图的外观,因此在此不再提供其他示例。
正常(无双关)的成分范围为[-1, 1]
。但是图像中颜色的成分范围为[0, 1]
(或[0, 255]
通常将其标准化为[0, 1]
)。因此对法线进行缩放和偏移,使法线(0, 0, 1)
变为颜色(0.5, 0.5, 1)
。这是您在法线贴图中看到的浅蓝色,并且在使用切线空间法线时表示与插值顶点法线没有偏差。
相切空间法线比模型空间法线更可取的原因是由于它们更易于创建,并且可用于多个网格。另外,如果与动画网格物体一起使用,则切线空间法线将始终使用,因为法线会不断变化。
bitangent
与binormal
正确之间的区别。
法线贴图主要从曲面指向外部。假设您通常将XYZ法线向量的Z分量的常规映射称为“深度”方向,并将该法线映射到RGB颜色空间的B分量,则最终大多数法线向量将主要是蓝色。
如果纹理是红色,则表示法线贴图是一个大部分指向右侧的表面。您可以在示例图像上看到该功能,因为凹凸的最右边具有淡红色调。
整个表面呈红色不会有任何意义。这表示表面完全朝右偏。那只是用几何形状建模,而不是法线贴图的一部分。