物理引擎是什么?
物理引擎使用对象属性(动量、扭矩或者弹性)来模拟刚体行为,这不仅可以得到更加真实的结果,对于开发人员来说也比编写行为脚本要更加容易掌握。好的物理引擎允许有复杂的机械装置,像球形关节、轮子、气缸或者铰链。有些也支持非刚性体的物理属性,比如流体。物理引擎可以从另外的厂商购买,而一些游戏开发系统具备完整的物理引擎。但是要注意,虽然有的系统在其特性列表中说他们有物理引擎,但其实是一些简单的加速和碰撞检测属性而已。
由来
游戏中并没有所说的这种“物理效果”,还不是一样可以让人能看到该运动的东西还是在动啊,并非就是很死板地一堆放在那里。要说清楚这个问题,其实也很简单,在以往的游戏中,比如打坏一个油桶,物理引擎就会按照游戏设计者预先设计好的脚本来爆炸,这就是为什么在以往的3D游戏中,那些物体只会按照原定计划做规定动作的原因。
自从游戏中加入了物理引擎后就不一样了,物理引擎完全突破了以往按预定脚本执行的方式,而是要求在3D游戏中的那些物体都要遵行物理参数来运行。这样的好处就是如果你的显卡和处理器足够强大,物理引擎就能模拟真实世界中各种物体运动的规律来运动。不过所谓的“物理引擎”并不是指那些实实在在的物理效果,物理引擎和此前理解的3D游戏引擎类似,是给游戏开发者的一个平台,允许游戏开发人员只用几行代码就能在游戏中加入烟雾等效果,非常方便。
举个简单的例子,在几年前还没有物理引擎的时候,在那种FPS游戏中,一位士兵往一个油桶旁边扔一个手雷,手雷爆炸,引起了油桶的爆炸。不过这个过程显得相当死板,不管是把手雷丢在油桶的左边还是右边,油桶都只会按照预先设计的样子爆炸,不会有区别。如果有了物理引擎,手雷扔在油桶的左边或右边都会产生不同的爆炸效果,石块会朝不同的角度飞溅起来,烟雾也会慢慢冒起来……通过物理引擎,实现这些物体之间相互影响的效果是相当简单的。这是物理计算最初给的印象,虽然这样的设计有点意思,但老是看这些爆炸场景看多以后,但总让人感觉物理引擎的效果也就仅局限于那些爆炸后石头飞起来的场景,感觉有点单一。
应用
当NVIDIA宣布正式收购Ageia及该公司的PhysX物理软硬件组件后,所有人都在期待,期待着NVIDIA会推出新的有关物理运算的东西出来。果不其然,如今当NVIDIA发布Forceware 177.79驱动后,意味着GeForce 8/9和GT200系列的GPU都支持PhysX引擎。这是因为NVIDIA将PhysX引擎集成到CUDA架构的物理运算中。这样,显卡就能自动进行物理加速运算。当然,PhysX在游戏上的运用仅仅是物理引擎众多运用的一方面,在整个CUDA通用运算领域上,都会有物理引擎的身影,比如计算天体间在相互引力的作用下,各自的运动轨迹等。
此次在GDC09上展示的Havok物理引擎包括了三个场景,分别为爆破、布料和AI计算。演示平台使用了i7 965至尊版处理器搭配HD4870X2显卡,运行效果比较流畅。不过唯一让人感到稍稍惊讶的是,Havok物理引擎并非是专门针对ATI显卡而设计,它能够支持OpenCL架构(布料演示DEMO就是基于OpenCL架构开发的),也就是说NVIDIA的GeForce 8以上级别显卡也很有可能能够支持Havok物理引擎。