畅游3D特效(三):对积木娃娃说再见——曲面细分(Tessellation)特效

新手学堂

多边形与3D模型

这是什么?玩过红白机的朋友肯定认识,这不就采蘑菇的马里奥嘛,左边这个是橡胶版的玩具模型,而右边这个就是著名的“乐高”积木版马里奥了,拼它可用了整整4万块的乐高积木。看出来两者什么不同没有?橡胶版的马里奥圆润平滑,而乐高积木版的马里奥满身到处都是方块……这是显而易见的,乐高积木本来就是一块块小长方体,不可能指望它拼出真正意义上的曲面模型来。不过,如果用足够多、单块体积足够小的乐高积木,却可以在理论上拼一个无限接近圆滑细腻的马里奥,这里只用了4万块积木,要是用4千万块、4亿块积木的话,人眼也会认为模型是“圆滑”的,什么,你还不明白?好吧,把报纸拿远点看,是不是乐高马里奥没那么多棱角了?

和前面这个积木的例子一样,其实在3D游戏中,所有的立体模型都是由众多的多边形组成的,而模型外观的细腻程度,就取决于使用多边形的数量。通常来说,“多边形数量更多”对于“3D模型更圆滑细腻”是一个充分必要条件,但在N-Patch和TruForm等技术出来之后,它就只是一个充分不必要条件了,而现在DX11中流行的曲面细分(Tessellation)技术,效果更棒。换句话说,通过这些技术,就算多边形比较少,一样可以做出圆滑的模型来。

曲面细分(Tessellation)特效的进化

前面我们提到了N-Patch和TruForm技术,这两项技术都是用来改善3D模型细腻程度的(ATI早在Radeon 8500中就提供了对N-Patch的支持,只不过它的名字改为了TruForm而已)。其中N-Patch由微软在DX8.1中首次加入,其工作原理就是通过插值的算法,在已有的多边形中增加顶点的数量,从而把一个平面变成一个高次曲面,一张由多个平面拼成人脸和一张由多个曲面拼成的人脸,哪个更符合真实情况相信不用多作解释了。

N-Patch技术的好处就在于高次曲面的生成比单纯增加多边形数量更节约系统资源、计算量更低,这就意味着对于性能不是很高的系统,应付这样看上去很细腻的3D模型也不会很吃力(特别是对于需要大量曲面来表现的生物3D模型,效果很好)。

说到这里,大家可能要感到奇怪了,这么好的技术怎么没见很多游戏用呢?这里就不得不提TruForm技术的一个BUG了,那就是它会自作聪明地将所有3D模型都“曲面化”,在游戏中的表现就是你手中的砍刀、步枪全都变成“棒槌”了……所有的人物模型也都变得胖乎乎、圆滚滚的,正是因为这个BUG,在DX9时代,ATI就在驱动程序中去掉了该项功能。但ATI并没有就此放弃该技术(在R600显卡中也集成了可编程拆嵌器——专门用来处理曲面细分),直到DX11时代,TruForm再次以Tessellation的名称被正式纳入DX11规范中,修正了以往的BUG(根据需要,智能判断需要采用曲面细分的模型,而不是对所有模型进行计算),将它的实力展现在了我们面前。

总的来说,Tessellation技术就是一项能在3D模型中自动增加顶点,让模型更加细腻的技术,而且这些顶点都是真实的顶点(而不是简单地用贴图进行模拟),因此所有的3D特效都可以应用在它们上面,这就可以用来表现更真实和细腻的3D模型。

实现Tessellation需要的软硬件

和以前ATI的TruForm“通吃”(在驱动中打开此功能后,任何D3D游戏中均强制使用该技术)的情况不一样的是,Tessellation变成了游戏中选择的功能,而且必须在DX11模式下才能使用。所以,要享受到Tessellation带来的细腻模型,首先要有支持DX11的显卡(Radeon HD5000系列,GeForce GTX400系列),其次是游戏本身要提供该功能,这两者缺一不可。另外,虽然说Tessellation比单纯增加多边形节约资源,但它对显卡的要求依然不算很低(虽然增加顶点本身要求不算高,但增加的顶点还要进行完全的特效渲染,这就带来了额外的资源占用),如果要在主流的DX11游戏中开启Tessellation的话,Radeon HD5850和GeForce GTX470以上的显卡还是必须的。

目前支持Tessellation的代表游戏有《地铁2033》、《异形大战铁血战士》、《潜行者:普里皮亚季的召唤》、《尘埃2》等等,大家肯定注意到,这几款都是DX11的游戏——没错,Tessellation本身就是DX11最具代表性的特效之一。

Tessellation技术的出现,让3D游戏的画面效果又向CG电影级迈进了一大步,从目前主流的DX11游戏中就可以看到,人物、地形和水面的细节明显增加了很多,这在以前依靠增加多边形的方式来制作几乎是“不可能完成的任务”,因为那会对显卡的几何运算能力提出异常变态的要求,而现在,这已经只是简单到仅需在游戏中开启一项特效而已,CG电影游戏,已经离我们不远了。

延伸阅读>>

1.Tessellation最早其实是被应用在XBOX360的显示芯片“Xenos”中,那时已经可以对3D模型进行选择性曲面化处理了(不再统统都变“圆滚滚”)。

2.使用低细节模型再加上Tessellation技术,可以达到需要采用1500倍数量多边形的高细节模型的效果,同时显存的占用只有后者的1/450左右,处理速度是后者的2.3倍以上,优势不言而喻。

14-d16-1.jpg
14-d16-2.jpg
14-d16-4.jpg
开启TruForm特效后,萨姆大叔的枪变得又圆又胖,好在肌肉的确看起来更结实了
14-d16-7.jpg
打开Tessellation后的屋顶(每一块瓦都有自己的外形)
14-d16-8.jpg
关闭Tessellation后的屋顶(整个屋顶是一个平面)
14-d16-9.jpg
主流DX11游戏都以Tessellation特效为重要卖点