这一篇中,我们主要介绍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中,同时,将模拟需要的辅助功能,比如更新物体的质量和默认的碰撞过滤实现等,以及依赖于核心模拟功能来实现的附加功能,比如Joint约束的实现等,放到了一个称为Extensions的模块中。因此,这里我们只关注PhysXCore的部分,先看一个简要的架构图:

本文详细介绍了PhysX从2.8到3.2版本的架构变迁和主要特性差异。在PhysX 2.8中,核心的物理模拟对象如NxScene、NxActor等直接管理模拟特性。而在3.2版本中,PhysXCore负责核心模拟,Extensions模块提供辅助功能。PxActor成为所有模拟对象的基类,PxRigidActor代表刚体,PxCloth代表布料,PxParticleBase表示粒子系统。同时,3.2版本不再支持Softbody和力场,但对布料和粒子系统的模拟进行了优化和专业化。
最低0.47元/天 解锁文章
1644

被折叠的 条评论
为什么被折叠?



