王者归来性能翻番 GeForce6技术解析
置换贴图(Displacement Mapping)这个名词我们也已经比较熟悉,它早已不是第一次出现在我们的文章中。这种技术在业界通常有两种叫法:CG美工通常称之为置换贴图,而游戏程序员通常称之为位移贴图。
我们知道,在游戏或者其他应用到3D图形技术的地方,建模的时候通常为了节省资源,并不能够将3D模型建得非常细致。一是建模的时候投入的精力会太多,二来更重要的是过多的多边形虽然使效果更细腻,但也会严重影响速度。
但是,享受3D图形的用户却是非常贪婪,因为他们不想面对一些直棱直角的方块来“享受”他们的3D游戏,而希望在电脑屏幕上见到真实生活中的拱顶,见到恐龙的皮肤是粗糙而多毛,他们更希望水面波光粼粼……那么如何形成更为细致的3D效果呢?这就需要使用贴图来实现。
我们这里要额外讨论置换贴图就是基于上述这些应用。那么置换贴图究竟是如何实现凹凸的感觉的呢?
置换贴图的过程就是按照一张灰度图(表示表面凹凸的高度)来给顶点沿着垂直表面的方向一个位移,产生真正的凹凸。这要求模型比较细致。某些情况下,这还需要结合N-Pach曲面等技术,实时把模型细化,然后再用贴图的方法将物体的贴图补上。
我们以一个恐龙的头部来作为例子给大家介绍。
仅仅有模型和贴图的恐龙
首先,我们看恐龙的头部。恐龙头部的3D模型并不是很复杂,整个头部圆滚滚的,简直就不像是恐龙,倒是有些像海豹的头部——特别是皮肤非常光滑。这样的效果自然是不能让消费者满意的,我们就需要找出一种巧妙的方法“骗过”您的眼睛,让您感觉到这就是一头实实在在的恐龙。
现在根据恐龙头部的细节生成一个凹凸细节的数据表,这个表仅仅是一个矩阵类型的数据,所以就要比真正的复杂的3D模型的数据量小的多得多。
接下来,我们把这个数据传给图形芯片。图形芯片内部的引擎将这个数据附加在恐龙头部的表面。根据矩阵中的每个元素置决定每个点的高度,实现3D效果。注意,这是3D模型中的点,而不是最后显示成为2D的像素
使用置换贴图的恐龙
最后,我们再把最初的恐龙头部贴图贴上,就成为一个栩栩如生的恐龙头了。
以往实现这样的效果并不是采用针对顶点实现的,而是通过每个像素来完成——这就是我们熟悉的凹凸贴图技术。
大家可能还记得在Matrox当初推出G400的时候,其中有一项技术就是凹凸贴图。这种技术和刚刚介绍的置换贴图不同,它不改变模型,而是靠按照凹凸参数和光源方向来计算表面的亮度,从而最终模拟出凹凸的效果。<