您的位置:首页 > 其它

物理引擎应用与未来:物理运算不必是硝烟

2010-03-05 13:23 471 查看
转帖:在T型台上,时装模特在强劲的音乐声中挨个出场,个个穿得光鲜靓丽,裙摆随着模特走路时腿的动作而摆动、旋转,布料与腿相触碰然后抖动,让我们可以明显感觉到这件衣服是丝做的,那件是皮做的。通过模特的各种姿态,作为观众的我们,都能明显地感觉到衣服的质地。这种极度真实、让人心潮澎湃的效果就是我们所说的“物理效果”。


  《MStar》是一款采用了虚幻引擎3、以舞蹈为主题的游戏,它很好地表现了布料与人各个关节活动时,物理运动的感觉
  物理引擎的由来
  可能有些朋友会觉得无法理解——以前在游戏中并没有现在所说的这种“物理效果”,还不是一样可以让人能看到该运动的东西还是在动啊,并非就是很死板地一堆放在那里。要说清楚这个问题,其实也很简单,在以往的游戏中,比如我们打坏一个油桶,它就会按照游戏设计者预先设计好的脚本来爆炸,这就是为什么在以往的3D游戏中,那些物体只会按照原定计划做规定动作的原因。
  自从游戏中加入了物理引擎后就不一样了,它完全突破了以往按预定脚本执行的方式,而是要求在3D游戏中的那些物体都要遵行物理参数来运行。这样的好处就是如果你的显卡和处理器足够强大,它就能模拟真实世界中各种物体运动的规律来运动。不过所谓的“物理引擎”并不是指那些实实在在的物理效果,它和我们此前理解的3D游戏引擎类似,是给游戏开发者的一个平台,允许游戏开发人员只用几行代码就能在游戏中加入烟雾等效果,非常方便。
  举个简单的例子,在几年前还没有物理引擎的时候,在那种FPS游戏中,一位士兵往一个油桶旁边扔一个手雷,手雷爆炸,引起了油桶的爆炸。不过这个过程显得相当死板,不管是把手雷丢在油桶的左边还是右边,油桶都只会按照预先设计的样子爆炸,不会有区别。如果有了物理引擎,手雷扔在油桶的左边或右边都会产生不同的爆炸效果,石块会朝不同的角度飞溅起来,烟雾也会慢慢冒起来……通过物理引擎,实现这些物体之间相互影响的效果是相当简单的。这是物理计算最初给我们的印象,虽然这样的设计有点意思,但老是看这些爆炸场景看多以后,但总让人感觉物理引擎的效果也就仅局限于那些爆炸后石头飞起来的场景,感觉有点单一。
  物理引擎还能做什么?
  前段时间,当NVIDIA宣布正式收购Ageia及该公司的PhysX物理软硬件组件后,所有人都在期待,期待着NVIDIA会推出新的有关物理运算的东西出来。果不其然,最近当NVIDIA发布Forceware 177.79驱动后,意味着GeForce 8/9和GT200系列的GPU都支持PhysX引擎。这是因为NVIDIA将PhysX引擎集成到CUDA架构的物理运算中。这样,显卡就能自动进行物理加速运算。当然,PhysX在游戏上的运用仅仅是它众多运用的一方面,在整个CUDA通用运算领域上,都会有它的身影,比如计算天体间在相互引力的作用下,各自的运动轨迹等。



NVIDIA的PhysX引擎



物理计算在游戏中的五大物理效果  PhysX在目前在游戏中有粒子、流体、软体、关节和布料五大应用。所谓的粒子运动,主要是指大规模的物理运动,比如我们此前提到过的用手雷将油桶引爆后所形成的碎石头、冲击波造成的尘土飞扬等效果,这些效果如果都让传统的CPU来进行运算的话,无疑是相当困难的。



粒子效果展示  流体运动更多的则是展现水从水管内喷出,水冲击到物体后,物体的表现,比如木箱被冲翻。而那些被冲翻的木箱翻倒的方向每次都各不相同,又比如在一个NVIDIA Logo形状的玻璃容器中,我们用鼠标来控制玻璃容器的位置,让容器里的液体流动,这种流动的效果和现实中的效果已经相当接近了。


流体效果展示  在NVIDIA展示的演示画面中,还有一个则是“食人花”的场景。讲述的是一朵巨大的食人花(也可以说是花形状的怪兽)被人抓住以后,玩家用激光去攻击它,然后这朵“花”就会作出反应。这种软软的身躯扭动起来非常像我们现实生活中看到的鼻涕虫之类的虫在蠕动一样,感觉相当恶心。



软体效果展示  至于在关节和布料方面的应用,我们在文章的开始处已经提到了,美女们在T型台上用夸张地肢势行走,虽然动作夸张,却丝毫没有虚假的成分在里面,这在传统的3D游戏里是很难做到的。而身上的裙子也跟着关节的移动而跟着摆动。

  可以看出,所谓物理效果,都是在游戏中模仿现实中真实物理世界的运动方式,在游戏中,我们甚至能感受到箱子、石头、布料以及那些恶心的无脊椎动物的触感是怎样的。现在的游戏之所以能实现如此多的动态效果,都要归功于物理运算。


加入了物理效果的游戏和传统游戏的区别物理运算用GPU还是CPU?

  通过前面实例的讲解,相信大家已经清楚,物理引擎以及物理运算能为我们的游戏添加不少乐趣。而这些让游戏变得现实的东西都是由GPU来运算的。从理论上说,做物理运算需要大量的并行计算,熟悉GPU的人都知道,并行运算是GPU的强项,因此让GPU来做这种运算也显得合理。当然,理论归理论,它也并不是绝对的,在高分辨率游戏的情况下,GPU大部分时候都是在全速工作,这时候再让GPU来做物理运算的话,游戏在流畅性上肯定会受影响。不过我们也别忘了,现在关于物理引擎也并非NVIDIA一家在做,Intel和AMD也在向这方面努力。

   在NVIDIA收购Ageia前,Intel收购了Havok,让Havok FX引擎的主导权掌握在自己手里,照现在的情况来看,AMD也支持Havok FX。也就是说,在日后,Intel和AMD很可能在自己的CPU中加入对Havok FX引擎的支持。这样当GPU感到工作吃力的时候,CPU也很可能出来协助GPU工作,使游戏流畅度在不受影响的情况下,表现出更好的物理效果。

写在最后

  从游戏发展的轨迹来看,大家都在力求一种“现实”的效果,从最1994年Doom Ⅱ那种粗糙的3D效果到2008年的Crysis,游戏的3D效果和光影效果都有了长足的进步。如何让游戏表现出更真实的一面,放在大家面前的有两条路。第一条就是增加特效,如DX8、DX9、DX10,这样的特效更多表现的是一种“静态”的效果。而另一条路则是增加如爆炸、布料摆动、关节运动等“动态”方面的真实效果。



游戏发展的轨迹——日渐趋于真实  从现在来看,不管是NVIDIA的PhysX还是Intel的Havok FX,它们的目标都是相同的,都是为了让游戏看起来更加真实。而“物理运算”也完成了从两年前的“出现”到现在“实际应用”的进化。相信在以后的游戏中,物理运算在游戏中的应用将无所不在。至于物理运算该GPU还是CPU来完成,其实这个问题并无太多争论的必要。因为此前大家认为Intel非常强调让CPU来进行物理运算,所以就认为Intel和NVIDIA存在一种是让CPU还是GPU来完成物理运算的一种“标准制定”的争夺关系。其实这种想法也不完全正确,毕竟Intel以后也要推出代号为Larrabee的独立显卡,让这块多核的独立显卡也参与到物理运算中也是完全有可能的。也就是说,在未来,不管是显卡还是处理器,都会共同担当起物理计算的重任,唯一存在的可能就是一个让谁多做一点,如何分工的问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: