RGB 颜色值用于存储矢量的 X、Y、Z 方向,其中的 Z 为“向上”(与 Unity 通常使用 Y 作为“向上”的惯例相反)。此外,纹理中的值视为经过减半处理,即添加了 0.5 的系数。这样就能存储所有方向的矢量。因此,为了将 RGB 颜色转换为矢量方向,必须乘以 2,然后减去 1。例如,RGB 值 (0.5, 0.5, 1) 或十六进制的 #8080FF 将得到矢量 (0,0,1),这便是用于法线贴图的“向上”,并表示模型表面没有变化。这就是您在此页面前面的法线贴图“示例”的平面区域中看到的颜色。
//RGB=>法线方向
R*2-1=X
G*2-1=Y
Z*2-1=Z
//法线方向=>RGB
(X+1)/2=R
(Y+1)/2=G
(Z+1)/2=B