法线贴图是目前游戏开发中最常见的贴图之一。我们知道,一般情况下,模型面数越高,可以表现的细节越多,效果也越好。但是,由于面数多了,顶点数多了,计算量也就上去了,效果永远是和性能成反比的。怎么样用尽可能简单模型来做出更好的效果就成了大家研究的方向之一。纹理映射是最早的一种,通过纹理直接贴在模型表面,提供了一些细节,但是普通的纹理贴图只是影响最终像素阶段输出的颜色值,不能让模型有一些凹凸之类的细节表现。而法线贴图就是为了解决上面的问题,给我们提供了通过低面数模型来模拟高面数模型的效果,增加细节层次感,效果与高模相差不多,但是大大降低了模型的面数。
凹凸贴图和纹理贴图非常相似。然而,纹理贴图是把颜色加到多边形上,而凹凸贴图是把粗糙信息加到多边形上。这在多边形的视觉上会产生很吸引人的效果。
粗糙信息的表示有很多方式,下面重点介绍几种常见的方式:
1、Bump Mapping 凹凸贴图
凹凸贴图在计算机图形领域中的研究,最早开始于70年代末,至今已经有接近50年历史了。
凹凸图里存储的是物体表面的高度值(比如木材,做石头,脱了漆的墙面,),本质上是灰度图,这种贴图都是灰白的,如果节省空间的话,甚至可以把贴图的Alpha通道征用来用作Bump。
渲染时候根据这些高度值来计算法线方向(有多种计算方法),进而再根据法线方向计算物体表面的亮度值(有多种计算方法),从而使物体表面出现亮暗分布,给人一种凹凸不平的视觉感受。这其实是一种对人眼进行欺骗的伪凹凸效果。
至于为什么会感觉出凹凸来这个就是人的眼睛自己骗自己了……其实那里本没有凹凸的,但是我们人眼睛太多管闲事了。就像Windows的按钮哪个纯平面的东西我们还以为是凸出来的呢。
下图坐标是效果图,右边是凹凸贴图。
2、Normal Mapping 法线贴图
相对于Bump Mapping,直接省去了从高度图生成法线图的过程。现在很多软件都支持从高精度模型中生成法线图。
Norm