之前的小节中,我们主要介绍的是从PhysX2.8到3.2一些较大的方面的改动,比如架构,对象管理模型,模拟时间和碰撞过滤,以及场景查询等,除了这些主要的改变之外,还有一些比较杂项的改动。因此,这一篇中,我就集中为大家介绍这些杂项的改动。
首先,看Compartment。
在2.8中,PhysX SDK提供了NxCompartment这个对象,让我们对场景中的物体能有更多的控制。简单点说,一个Compartment就相当于场景NxScene的一个子scene,可以有单独的模拟控制,Compartment之中的物体可以跟主NxScene中的物体交互,也可以不交互,因此在很多时候我们希望单独控制一些物体的时候比较有用,比如在GPU上模拟的布料和粒子都放到单独的Compartment中去控制模拟,可以在尽量节省性能的情况下得到不错的视觉效果。但是由于实现起来的复杂度很高,因为SDK需要尽可能保证主Scene和Compartment这两个世界中物体的同步,即便是有些在CPU模拟,有些在GPU模拟的情形,所以也是一个问题相对较多的模块。并且有些时候,保持同步是基本是不可能的,所以在3.2中,PhysX SDK选择了放弃Compartment,所有的模拟特性都在主Scene中模拟。
因此,如果你的游戏中用到了Compartment,那么就需要考虑把他们去掉,仔细分析需求,看如何在3.2中实现。
然后,我们看连续碰撞检测, CCD。
如果你有使用2.8中CCD的经历,那么你应该跟很多人一样会有两个感受:是的,它真的工作,可以防止物体的穿透