这一篇中,我们主要介绍PhysX 2.8和PhyX 3.2之间的架构以及支持的特性的差别。
如果你正在或者曾经使用过PhysX2.8,那么你对下面这个架构图不会陌生:
从上面的架构图可以看到,整个SDK就是一个NxPhysicsSDK对象,在使用SDK的时候,首先需要创建这个SDK对象,再由这个SDK对象创建出其他的对象来使用,比如物理场景对象NxScene等。
NxScene则是用来创建游戏中需要的物理世界,并且模拟它创建的这个物理世界的对象的。从架构图中我们可以看到,模拟中需要用到的各种物体,都是由NxScene创建出来并且管理的。一个NxPhysicsSDK对象可以创建多个NxScene对象,不同NxScene对象里面的物理物体相当于不同世界中的物体,相互之间完全没有影响。
NxActor、NxFluid、NxCloth、NxSoftBody和NxForceField就是PhysX 2.8支持的主要模拟特性了,分别代表刚体、流体和粒子、布料、软体和力场效果。如上面所说,游戏中用到的这些特性的实际模拟对象,都是由NxScene来创建和管理的。
上面是PhysX 2.8的架构,那么到了PhysX 3.2,情况会是怎样的呢?
在PhysX 3.2中,PhysX SDK将SDK进行了分割,与模拟相关的核心内容,比如刚体、布料、粒子系统等的模拟,放到相对独立的PhysXCore中,同时,将模拟需要的辅助功能,比如更新物体的质量和默认的碰撞过滤实现