物理引擎

    物理在游戏中扮演着一个相当重要的角色,可以说凡是涉及动作的游戏都离不开物理,只是依赖的或轻或重罢了。在物理引擎出现之前,游戏中的运动和碰撞都是通过脚本化的物理运算完成的。尽管通过脚本定义,可以模拟出一些简单的物理行为,足以满足一些对物理行为要求不高的游戏,但是对于动作类的游戏,脚本式驱动就显得有点寒碜了,每个玩家获得的物理效果只能是预设的很死板的,而且一套脚本一般都是专门用于某个游戏,代码重用率几乎为零。随着游戏产业的飞速发展,玩家需求的日益提升,脚本化的物理运算就渐渐OUT了,取而代之的就是强大的物理引擎。
    其实物理引擎这个概念很早就提出了,早在1983年的SIG大会上加利福利亚一家研究机构的论文上就有了物理引擎的概念模型,他们提到的概念与今天的物理引擎基本吻合,让人不得不佩服他们思想的前瞻性。这篇论文发表近20年后,我们所熟知的物理引擎比如havok,physx的雏形才走向市场,中间经历了什么我目前还不得而知。但有一点我明白了,理论走向实际还是要有很漫长的路要走的。
    物理引擎之所以能登场,是因为它完全突破了以往按预定脚本执行的方式,而是要求在3D游戏中的那些物体都要遵行物理参数来运行。这样的好处就是如果你的显卡和处理器足够强大,它就能模拟真实世界中各种物体运动的规律来运动,当然也可以模拟出相当神奇的逆现实运动。加入物理引擎的游戏--《叛逆连队》中子弹射击到木箱上后每次的弹痕都是不一样的,而且飞出的木屑的大小和飞行轨迹都是不一样的,这种逼真的物理效果完全颠覆了以往的玩家体验。
    前比较流行的几个物理引擎主要有PhysX 、Havok、Bullet、ODE和Newton。他们可以说是各有千秋,但是有一点是相同的,他们的设计思想是一致的。物理引擎主要就是对刚体赋予其应有的物理属性,通过约束条件和求解器不进行多次迭代计算后给刚体的物理属性重新赋值来实现对刚体理学的模拟。当然物理引擎不仅仅局限于刚体模拟,柔体和流体的模拟也是很重要的部分,只是后两者相比较而言没有前者成熟,还有很多需要改进。
   以上就是我对物理引擎的一个粗略的浅显的认识,在接下来的教程中我会以Physx为例来从编程角度讲述物理引擎的故
事。

你可能感兴趣的:(物理引擎)