由于有了更快速的方法来模拟光线的行进,三维电脑图像的品质即将出现质的飞跃。
我们这一代人有几个不曾在青少年时期沉迷于电脑游戏,动不动就打开电脑,与那些强壮的外太空入侵者大干一场呢?与那时的游戏相比,现在的电脑游戏更是令人眼花缭乱,啧啧称奇。当年那个粗糙的巨型大猩猩——大金刚(Donkey Kong),像素化痕迹何等明显,如今它已演变成了三维金刚(King Kong),细节清晰得令人瞠目。新版Xbox 360游戏中的主要角色均用含有2万多个多边形的精细网格来渲染,每个微小的图像区域1秒钟要绘制数十次,把它们各自的质地、色调和光泽表现得淋漓尽致。
除了在火爆异常的游戏产业大展拳脚以外,绘图技术的革命也波及设计、工程、建筑、医学成像和科研直观化等多个领域,使这些领域中采用的互动型软件性能攀升到新的高度。这在很大程度上应当归功于电脑图形处理单元(GPU)的进展(GPU是电脑显卡的核心芯片,能以闪电般的速度把三维场景转变为二维画面)。随着GPU绘图能力的突飞猛进,目前最受青睐的几款GPU的生产商——ATI、NVIDIA和英特尔等业界巨头的钱包也迅速鼓了起来。
然而,就逼真程度而言,与影片及摄影的效果相比,交互式绘图软件仍有差距。有些专家认为,个人电脑要想缩短这段差距——也就是说,电脑动画技术要想达到理想境界,让合成图像能够完全展示现实世界那种流畅的运动和微妙的色调变化——惟有对电脑渲染三维模型的方式进行根本改造。
实际上,这一改造就是把GPU目前使用的光栅化技术,转变为更加科学的“光线跟踪”(ray tracing)技术。长期以来研究人员一直认为,光线跟踪法不适用于迅速变化的互动式场景。然而,近年来电脑软硬件技术的进步,已经促使光线跟踪技术能够为家用电脑所用。
文艺复兴时期的画家阿尔布雷赫特·丢勒(Albrecht Dürer,1471- 1528)是光线跟踪法的开山鼻祖,到了20世纪70年代,研究人员首次编写出实现光线跟踪的计算机代码。德国萨尔州大学光线跟踪攻关组的负责人、计算机科学教授菲利普·斯卢萨莱克(Phillip Slusallek)指出,目前这种技术也跨入了自己的复兴时期,只是尚处于萌芽阶段。光线跟踪技术恰好在此时卷土重来是非常幸运的,因为据斯卢萨莱克说,“GPU很快就要遇到重大障碍了”。
光线跟踪再显活力
GPU在使用光栅化技术渲染三维场景时受到3大问题的困扰,而这3个问题均来源于光栅化的最初一步。所谓光栅化,就是把虚拟场景分割成无数平面多边形(如三角形),由它们拼接出整个画面,每个多边形均作为独立的单元加以处理。第一个问题就是,现实世界中的大多数物体都由曲面构成,用平面多边形来近似这些曲面,会显得极不自然。
研究人员总是在力所能及的范围内,把模拟的对象划分为尽可能多的多边形,以消除图像中的凹凸不平。不过这样一来,第二个问题就会雪上加霜:光栅化系统要处理模型中的每一个多边形,即使是那些看不见的多边形也不例外。美国英特尔公司的图形技术研究人员戈登·斯托尔(Gordon Stoll)解释说:“直到渲染完最后一个多边形,光栅化系统才会知道最终的图形是否会遮挡其他物体。”光栅渲染所需的计算量与模拟场景的几何复杂性成正比,因此模型的详尽程度翻上一番,GPU处理各帧图像的速度就要下降一半。
斯卢萨莱克指出,第三个问题(也是最重要的一个问题)在于,“GPU不能正确地表现阴影、反光以及诸如此类的其他效果”。据斯托尔解释,这一问题的根源在于,“从物理学的角度来看,各个多边形相互独立的假设是站不住脚的。由于光线到处反射的缘故,场景中每个东西所呈现的模样都与其他每一件物品有关”。计算机专家称这种现象为“全局照明问题”。较新版本的GPU可以对场景进行反复多次的处理,以模拟间接光照,但是这种方法往往会占用过多的内存空间,使内部数据通道拥堵不堪。即便如此,它所绘制的图像仍然远远达不到照片那样逼真的程度。
光线跟踪法能够模拟光线在整个场景内多次反射的过程,从而避免了上述问题。光栅引擎依靠种种技巧、近似方法和手工调节等技艺来绘制图像,但光线跟踪程序依靠的却是光学定律——物理定律的介入必然带来逼真的效果。斯托尔指出,“光线实际上是独立的”,因此在用光线跟踪法绘制的图像中,反光、阴影以及烟雾等都显得非常真实,足以乱真。
他又说:“当我启动光线跟踪程序中的这些效果时,它们便会自动产生出正确的合成图像。比如说我可以画出一团烟雾的影子的倒影——这是光栅绘图技术无力表现的。”迄今为止,只有光线跟踪程序能为全局照明问题提供近乎完美的解决方案。
当皮克斯(Pixar)动画电影制作室着手绘制“汽车总动员”(Cars)这部在2006年6月开始上映的动画片时,该制作室的画家们发现,除非在他们常用的光栅化渲染系统中加进光线跟踪程序,否则动画片中那些汽车角色的金属身躯便不可能栩栩如生、闪闪发亮。皮克斯制作室在此之前制作的所有电影中,全都没有采用光线跟踪法,其理由与游戏软件和其他交互式软件开发商舍弃光线跟踪法的理由如出一辙:按照物理定律绘图所需的计算量非常之大,远远超出了电脑处理器的计算能力。即使皮克斯制作室把3,000台顶级电脑连在一起组成一个高速网络,成品影片中每一秒钟的动画也需要用好几天的时间来加以渲染。如果说电影制作者还能忍受这等龟速的话,电脑游戏迷、工程师和医生肯定是无法容忍的。
不过,现在光线跟踪法似乎要跨越这道速度障碍了。算法的改进和专用硬件的问世,已经使光线跟踪法渲染程序的速度提高了两个数量级以上。当光线跟踪能够跟上现实世界的步伐,变成一种“实时”程序以后,快速变化的电脑图像不但逼真程度将大大提高,它们的制作难度也会大大降低。
2003年,斯卢萨莱克相信实时的光线跟踪技术已经相当成熟,可以推向市场了。于是他和萨尔州大学的几位同事联手创建了一家公司,专门致力于推动光线跟踪技术的产业化。这家名叫inTrace的公司利用第一代光线追踪软件,以每秒10帧或10帧以上的速率,渲染出逼真程度可与照片媲美的全分辨率图像,不过当时的软件仍然需要一组高性能服务器才能运行。尽管inTrace软件系统的价格不菲,但宝马、大众、空中客车等汽车与飞机制造业巨头仍然竞相购买,并用它来评估仍处于绘图板上的设计方案的某些特性,例如视线、内部反光以及所谓的“第一印象”等。
虚拟光线提速在即
与此同时,光线跟踪算法有了突飞猛进的改良,现在只用一台高性能个人电脑,便能达到交互式应用场合所需要的高速度了。2004年,斯卢萨莱克及其同事卡斯滕·本廷(Carsten Benthin)和英戈·瓦尔德(Ingo Wald)演示了一种方法,可以利用光线跟踪法,迅速渲染密布着各种弯弯曲曲、奇形怪状物体的场景,而无须像GPU和“传统的”光线跟踪程序那样,事先把这些物体分割成无数的多边形。在过去两年内,斯卢萨莱克、斯托尔和现在供职于美国犹他大学的瓦尔德各自演示了一些速度快得多的光线跟踪技巧,它们可以确定某一虚拟光子在从屏幕向光源行进的过程中,将会撞上哪些物体。(为了节省计算量,软件是沿着与光线实际行进路线相反的方向,对光线进行跟踪的,不过相关的物理定律仍然适用。)
斯卢萨莱克说,检查一束光线是否撞上某个物体,与在图书馆中寻找某本书有异曲同工之妙。“你不必每次都从第一个书架的最上面开始查找,使用索引要便捷得多。”编制三维物体数据库的索引并不难,难的是要找到一种迅捷的方法来重编索引,以便在模型发生变化时,能够在几毫秒的时间内打造出新的索引。斯卢萨莱克指出:“这就好像图书馆内的书架老是在不停移动一样。”
斯托尔和他在英特尔公司的同事吉姆·赫尔利(Jim Hurley)目前正在研究,如何用一种名为KD树(KD-tree)的索引系统来改进传统的索引方法。KD树把三维空间分割成大小不等的许多部分,然后把它们组成一个树状的三维分级结构。为了节省时间,英特尔的“剃刀”系统(Razor system)选择每帧画面需要的KD树分枝,然后只对这些分枝进行重建。剃刀系统的KD树在表现场景的细致程度时,也存在着多个层次。这样它就可以迅速地绘出远景,比如说远处的城堡,而无须读出城堡上每一块砖的数据。
赫尔利说:“剃刀系统是英特尔最具挑战性的远期工程,它可以处理爆炸、喷溅等场景和所有类型的光照效果。现在它的速度还不算很快,但是我们预计,通过优化代码,它的性能可以提升50到100倍。”优化技巧将充分发挥最新版“多核”中央处理器的能力,以同时处理多达十几个的程序线程。
2005年,萨尔州大学的研究小组设计了一种新的芯片,可以同时进行多项光线跟踪计算。测试表明,这种名叫RPU(ray processing unit,光线处理单元)的芯片每秒可处理数十帧光线跟踪画面。为了演示它的性能,斯卢萨莱克让两位学生绘制了一座由4,000万个多边形组成的虚拟岛屿,岛屿四周的海浪映现出天上的星星和沙滩篝火的倒影。“我们花了几个月的时间来完成这项工作,”他说,“有了光线跟踪法,你就用不着绞尽脑汁想出种种技巧,使光栅化环境更为逼真了。你只须建好模型,一按按钮,转眼间便大功告成。”斯卢萨莱克目前正在联系有意于此项技术的投资者,以促进其商业开发,而他的研究小组则致力于设计RPU的软件驱动程序和汇编程序。
“可以实时绘制极其详尽而又栩栩如生的环境画面的技术,现在终于闪亮登场了,”斯卢萨莱克兴奋地说,“目前尚不清楚哪种平台可以使光线跟踪法真正成为电脑绘图技术的主流——可能是大尺寸的多核心CPU,也可能是RPU之类的专用处理器,还有可能是GPU厂商逐步添加到图形芯片中的光线跟踪功能。”但有一点看来已经比较清楚了——一种打破传统格局的新动向已经出现,这预示着电脑绘图技术即将掀起一股新的变革热潮。
请 登录 发表评论