二、光照模型:5、法线贴图

什么是法线贴图技术呢?这是一种用来实现3D效果的一种技术,简单说就是贴图实现凹凸效果。

我们知道,在游戏中经常会有这样的情况,就是一个平面——这个平面在现实中并不是一 个“平”面,例如砖墙的表面带有石质浮雕等等。这样的情况如果要求游戏开发人员将复杂的3D细节都做出来是不现实的,因为即使不计较在建模时候的复杂度, 过多的3D细节也同样会大量消耗显示芯片的性能,让游戏根本没有可玩性。

假3D的方法就是将这个平面用一个贴图覆盖,用贴图的纹理实现一定的凹凸效果。但是这种方法实现的效果并不是很好,因为如果视角一变化,看起来就会像一张简单的画有图案的平面了。
如果场景中视角不会变化,是可以采用这种方法的。

假3D方法2,可以通过贴图局部的亮暗变化来实现假的3D效果


image.png

那如何判断哪些地方应该暗,哪些地方亮呢?
一个平面或者说是一个贴图的凹凸情况呢?我们知 道,物体表面产生明暗变化的直接原因,就是光线照射角度的不同,光线垂直于平面的地方就亮,光线斜射到平面的地方就暗,光线照不到的地方就更暗。

法线贴图:记录了一个需要进行光影变换的贴图上的各个点的凹凸情况的贴图,显示芯片根据这个贴图的内容,来实时的生成新的有过光影变化的贴图,从而实现立体效果。简单说也可以说是记录光照的方向。

所以法线贴图其实并不是真正的贴图,所以也不会直接贴到物体的表面,它所起的作用就是记录每个点上的法线的方向。所以这个贴图如果看起来也会比较诡异,经常呈现一种偏蓝紫色的样子。

然后再GPU运算时,可以实时地进行法线运算,从而得到想要的凹凸效果。

推荐阅读更多精彩内容