为什么法线贴图主要是蓝色的?


44

为什么法线贴图主要是蓝色而不是随机的颜色?

我猜一个3D对象的法向矢量可以指向每个方向,例如:

(1.0, 0.1, 0.5), (0.1, -0.5, 0.3), (-0.51, 0.46, -1.0) ... 

在此处输入图片说明

Answers:


71

游戏开发中通常使用两种类型的法线贴图。您认为它们应该起作用的方式是一种类型的工作方式(模型空间法线贴图),但是大多数游戏都使用另一种类型(切线空间法线贴图),这就是为什么将大多数蓝色纹理与法线贴图相关联的原因。

模型空间法线贴图示例

使用模型空间法线贴图,每个通道使用与其所使用的模型的顶点相同的坐标系来编码法线的精确值。这意味着法线贴图的不同部分将具有不同的色调,但是彼此靠近的像素通常将具有相似的颜色。()上方显示了一个模型空间法线贴图的示例。

切线空间法线贴图通常是浅蓝色。这种类型的地图在网格空间中每个像素位置唯一的坐标空间中定义法线。它使用(内插的)顶点法线作为Z轴,并将其他两个正交矢量(称为切线和双切线)用作X和Y轴。本质上,您可以将贴图中的法线视为通过插值顶点法线而计算出的该像素法线的“偏移”。切线和切线向量也从顶点数据进行插值,并确定网格上哪个方向对应于法线贴图中的“上”和“左”。问题中提供的图像很好地说明了典型的切线法线贴图的外观,因此在此不再提供其他示例。

正常(无双关)的成分范围为[-1, 1]。但是图像中颜色的成分范围为[0, 1](或[0, 255]通常将其标准化为[0, 1])。因此对法线进行缩放和偏移,使法线(0, 0, 1)变为颜色(0.5, 0.5, 1)。这是您在法线贴图中看到的浅蓝色,并且在使用切线空间法线时表示与插值顶点法线没有偏差。

相切空间法线比模型空间法线更可取的原因是由于它们更易于创建,并且可用于多个网格。另外,如果与动画网格物体一起使用,则切线空间法线将始终使用,因为法线会不断变化。


6
喜欢这个解释-简洁明了,包括数学,详细说明了用于法线贴图的不同类型以及为什么使用它们。
Tom'Blue'Piddock 2014年

感谢您获得bitangentbinormal正确之间的区别。
imallett 2014年

2
@imallett是,曲面具有法线,切线和双切线,而曲线具有切线,法线和双法线。至少那是我的理解。
bcrist 2014年

8

法线贴图主要从曲面指向外部。假设您通常将XYZ法线向量的Z分量的常规映射称为“深度”方向,并将该法线映射到RGB颜色空间的B分量,则最终大多数法线向量将主要是蓝色。

如果纹理是红色,则表示法线贴图是一个大部分指向右侧的表面。您可以在示例图像上看到该功能,因为凹凸的最右边具有淡红色调。

整个表面呈红色不会有任何意义。这表示表面完全朝右偏。那只是用几何形状建模,而不是法线贴图的一部分。


3
为了进一步说明这一点,法线贴图从您的角度来看不包含法线向量,但从脸部的角度来看却包含法线向量,因此从脸部获得法线后,可以将其与normalmaps-normalvector。并且由于其大部分为蓝色,即(0,0,1),这意味着您已经获得的法向矢量不会改变。(考虑一下,就像您在绘制平面之前将每个平面平放在地板上,然后使用法线贴图的法线矢量一样,这大部分都是向上的,如果它的向右或向左,则表示您的网格有问题)。
tkausl 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.