为什么切线空间法线贴图不是全蓝色的?


11

为什么法线贴图不只是蓝色的?我认为法线贴图应主要为蓝色,因为法线的Z分量由蓝色表示。法线在Z方向上指向曲面之外,因此我们应该将蓝色视为主要颜色,因为Z分量占主导。

根据定义,切线空间垂直于表面。在任何时候,我们都应该使法线始终指向Z(蓝色方向),而没有X(红色方向)或Y(绿色方向)。因此,法线贴图(因为它是“法线贴图”)应具有仅蓝色的法线颜色(R = x = 0,G = y = 0,B = z = 1),中间没有阴影。

但是法线贴图并非如此,并且它们中具有阴影渐变。为什么会这样呢?

Answers:


19

切线空间垂直于几何法线-多边形的内插顶点法线。法线贴图提供相对于几何法线定义的切线空间的着色法线。当着色法线与几何法线不相同时(即,由于您具有详细的表面纹理,而其特征未在几何图形中建模),法线贴图会偏离“纯蓝色”(RGB 128、128、255)。

这就是法线贴图的重点-即使您没有使用多边形对所有这些细微模型进行建模,也可以通过它们获得通过照明和阴影表示的表面的细小比例形状。


1
详细地说,法线贴图通常是在切线空间中完成的,因为当网格物体被动画化时,法线贴图会保持精确,而例如,模型空间法线贴图将要求法线贴图与您可能拥有的任何动画一前一后地动画化(骨骼和任意布娃娃)。对于静态几何,没有技术原因,您无法拥有模型空间,并非全蓝色的法线贴图,从而稍微简化了像素着色器(以一致性为代价,需要更多的着色器,进而需要更多的着色器选择更改)。
MaulingMonkey

1
(如果在模型空间中,法线贴图数据通常也不能在网格上的多个位置重复使用)
MaulingMonkey,2012年

+1; 最后一个问题是这个问题的关键-如果假设它们所处的表面完全平坦,则它们将是蓝色的。如果假定曲面具有某些粗糙度,则法线贴图可对该粗糙度建模,而无需指定额外的几何形状。
Maximus Minimus

2

简单的答案是,这是由于范围偏差造成的。

对于每个分量(x,y,z),法线的范围为-1,0到1.0。另一方面,存储为24位RGB图像的法线贴图的每个分量的范围为0到255。

这意味着零分量将在法线贴图(四舍五入为128)中变为127.5(正中间)。

法线向量(0,0,1)在法线贴图图像中变为(128,128,255),这是一种紫色,而不是纯蓝色(0,0,255)。

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.