Havok物理引擎与Unity3D的结合

背景

  在重度手游的研发过程当中,游戏中的车辆模拟,场景互动,特效展示等功能很多时候需要物理引擎的介入,以提供丰富的交互体验。目前3D手游的开发主要工具是使用Unity3D引擎,于是,如何在Unity3D的开发过程中结合入物理功能变一个需要仔细考虑的问题。

  我们考察的2种物理效果实现方案:Unity3D物理引擎和Havok物理引擎。

  Unity3d物理引擎介绍

  Unity3d在内部集成了PhysX物理引擎,为其提供了物理模拟能力。

  Physx是目前使用最为广泛的物理引擎,PhysX目前由Nvidia公司开发并维护,特点是免费且带N卡的GPU物理计算加速功能(1)。

  PhysX被很多游戏大作所采用,使用PhysX制作的游戏:


                                  

4.X版本的Unity3D集成的是2.8.3的PhysX,该版本较为老旧。在Unity5中将集成PhysX3.3,较2.8.3版本在功能和性能上有较大幅的提升,但是目前unity5并不是非常稳定。

  Havok物理引擎介绍

  Havok物理引擎是由Havok公司开发的老牌物理引擎,与PhysX不同,Havok专注于CPU端+多线程模拟方案,并且与PhysX的强大市场推广以及免费策略不同,Havok授权很严格,而且基本不提供试用版本下载(2)。

  使用Havok引擎的游戏大作在数量上与使用PhysX的不相上下,而且很多令人印象深刻:

  Unity3D物理与Havok物理的功能对比

  Unity3D集成的PhysX物理功能:

  Unity3D通过其提供的各种Component访问PhysX的物理功能,打开菜单栏中的Component->Physics便可以看到各种组件:


  其中,

  Rigidbody提供了刚体的访问接口。

  各种XXXCollider提供了3种碰撞包围体方案(Primitive,Mesh,Terrain)。

  WheelCollider组件提供了车轮模拟方案。

  XXXCloth组件提供了布料模拟方案。

  XXXJoint组件提供了关节与连接点模拟方案。

  PhysicsMaterial资源类型提供了表面物理材质描述功能。

  在Unity3D中每一种物理组件都有对应的编辑界面,且即拖即用,非常方便。