前面我们论述了很多物理引擎的基础理论,其中也谈到了现有游戏引擎对基本物理运算的支持,那么PhysX有什么特别和先进之处呢?
在早期的游戏中,物理运算一般会简化到不可想象的地步,在2D游戏里,大部分的物理被定义为“离开地面的时候,就往下掉”这样简单易行(比如爱吃金币的马里奥)。现在的3D游戏已经大抵脱离简单的物理运算而更讲求真实,但缺憾之处也是无所不在,也就是我们称之为“脚本化”的物理运算。
可以举很多真实的游戏经历来说明:在《使命召唤:联合进攻》中,当你正驾驶坦克在不断获得一次次胜利,争取更大战果的时候,你却被前面的一片灌木丛挡住了去路,这在真实世界,会有问题吗?我们完全可以驾驶这辆重型坦克碾压过去。同样的情况在很多游戏中都会出现,玩家会发现,如果我们想炸塌一堵墙壁,必须在游戏中“指定”的位置进行爆破,而同样材质的墙壁,你却无法在另一个位置对其造成任何的伤害。
『摆脱“脚本”设计,游戏中人物与环境的互动将更加真实和灵活』
这就是所谓的“脚本化”物理运算,游戏引擎已经定义了某种物理效果的完整流程,玩家只能被动的接受这种物理效果,而不能有任何其它的改变,一旦这种改变出现,就表明游戏遇到了Bug。
PhysX物理引擎首先会改变这一状况,让“脚本化”的物理运算完全变为真实化的物理运算。玩家可以与更多的物体发生互动,互动的方式不同也会产生不同的结果,你用不同的武器、不同的角度射击某幢房子,房子坍塌的速度和角度也会发生变化,这一切都会让游戏产生更多的随机状况,也让游戏更加真实。
◆ PhysX为最难处理的物理效果优化
除了让游戏的灵活性和互动性更为真实,PhysX还专门为游戏中可能遇到的很多复杂物理效果模拟进行了最佳的支持和优化,这些效果都是现有游戏最难处理的部分。主要包括以下几种:
1、流体的处理:虽然水面渲染的效果已经非常出色,但是在游戏中我们极少看到流动的水与物体发生互动,流体运动的运算难度很高,而PhysX物理引擎则能很好的支持流体运动与物体发生互动的计算。
2、粒子的运算:爆炸的碎片、烟雾等在游戏中都是以最基本的粒子形式进行运算,碎片的掉落、烟雾的飘向和逐渐散去运算对CPU的负载极大,是现有游戏极难做好的一种效果,借助PhysX物理引擎和NVIDIA GPU则可以轻松运算。
3、大量刚体的运动:与粒子的运算相似,现有游戏处理少量刚体的互动(比如赛车的碰撞)尚能接受,但是大量刚体的真实运动(比如泥石流中大量石块的滑落和相互碰撞)则会造成很重的负载。
4、骨骼肌肉表情等的模拟:人物的行动模拟也是物理效果中非常复杂的一种运算,比如面部表情的变化会连带骨骼和肌肉的形变,这在当前的游戏中很难实现。
5、衣物布料的运动:我们在游戏中看到的大都是身着紧身衣的战士,这就是因为衣物布料随人物和外界环境的影响导致的运动是一个极其复杂的运算,PhysX物理引擎同样为此做出了相应的基本运算模块。
如果玩家细心,都会注意到上述效果在游戏中都是“低调处理”的,因为这些效果的运算过于复杂,实现起来会导致机器的不堪重负,而PhysX物理引擎专门为这些常用而且难于处理的运算进行了支持和优化,让这些处理不再成为今后游戏的瓶颈,从而让游戏更为真实。