ATI Truform技术揭密

QuakeIII中的曲面  曲面表面

  Quake III: Arena是第一个将曲面表面用于其3D引擎中的游戏。Q3A中很多关中都有平滑的拱门,第一个deathmatch地图中有一个带有尖牙了舌头的小凹室,在游戏中这两处最能反映曲面表面的效果,这些地方的形体数据是以曲面的方式保存的,在需要使用的时候转换为多边形数据。实际上,在游戏的控制台中有个命令可以让你通过精确的控制曲面单位小块的数目来控制其平滑程度。而单位小块的数目就是游戏引擎用于模拟曲面所用的多边形数目。如果你把这个数目设置到特别低,比如“r_subdivisions 999” ,那么原本平滑的拱门就会变的有棱有角。

  不过Quake III 还是只在很少的地方使用曲面表面,现在也不知道什么时候游戏才会大量使用这种技术。游戏之所以不使用这种技术也是有原因的,在软件中将曲面划分为小方格是非常繁重的计算,对CPU的压力很大。即使CPU可以胜任这个工作,那么计算产生的大量数据还要通过AGP总线传输给图形卡。不过,图形卡可以自己完成这样的工作,Nvidia的新锐产品 GeForce3 就可以对特定的曲面进行划分处理,这种曲面被成为多项式表面(polynomial surfaces),这种技术在DirectX8中已经得到了实现,ATI的下一代Radeon也将支持,不过这个技术又带来另一个现实问题:那些负责为游戏建模的美工如果将它们的作品保存为曲面表面的方式,那么只有这些新的图形卡才能正常的处理他们,老一些的图形卡根本不会处理这样的数据。如果让美工作两份数据又会为游戏的开发带来更多的压力和困难,最终结果还是新技术无法快速应用。

设定N-Patches   Truform 则使用了DirectX8支持的另一种曲面表面:n-patches。其实无论是多项式表面还是n-patches,都是使用一组贝塞尔曲线(Bezier curves)来描述一个曲面(在这里,patch这个词也是用来表述“表面”这个意思的),但是,只有n-patches 是使用三角形结合贝塞尔曲线组来描述曲面的,这与传统的三角形组成的线框模型更加接近,而且可以将传统的线框模型转换为 n-patch 方式,反之亦然。兼容性是Truform的一个重要卖点。

  如果你曾经在Adobe Photoshop , Illustrator 或者是 Macromedia Flash 中使用过矢量图形,就一定对贝塞尔曲线不陌生。这样的一个曲线由两端的两个点决定,这两个点作为“控制点”决定的曲线的弯曲方式。n-patch方式中使用贝塞尔曲线三角,每个三角形有10个类似的控制点,三个在三角形的顶点,六个在三角形的三个边上,还有一个在三角形的中点。由于传统的三角形线框已经保存了三角形的位置和相对角度信息,因此需要作的仅仅是在原有三角形的基础上计算出这些控制点的位置。当支持Truform的显示卡将一个模型转换为n-patches的时候,可以选择任意的细致程度。但是需要生成的三角形数目是按照指数比例上升的,当级别为5的时候,三角形的数目将为原来的36倍,也就是说一个常见的400个三角形的模型将变为超过10000个三角形的模型。

  如果是全面的支持Truform的话,应该可以允许设计者设定每个物体的细节程度,一个引擎甚至可以作到当观察者距离物体很远的时候,降低物体的细节程度。这样,Truform可以为很多游戏增加细节程度,由于Truform是硬件支持的,因此我们可以为游戏设置足够的细节程度,而不会再看到多面体棱角的问题了。

转载自ZDNet China游戏基地

2/3

[上一页][下一页]