前面的三节中,我们介绍了PhysX 3.2的布料特性的基础知识、如何创建和更新,这一节中,再给大家介绍一些实际中非常有用的布料的属性和功能,让大家对PhysX 3.2的布料有更加深入的了解,使用起来更加得心应手。
首先,看一个简单的,External Acceleration。如果你有过PhysX 2.8.4的使用经历,那么你对这个属性一定不会陌生。这个属性会给布料的每一个顶点加上一个来自我们设定的外部加速度,使用后的效果就是给布料的运动加上了一些扰动。如果我们在实际游戏中每一帧都给布料设置一个合适范围内随机的External Acceleration,那么布料的抖动看起来会更加随机,对布料模拟的效果提升也相当明显。
这个属性最典型的应用就是做旗帜。如果没有这个属性,旗帜经过一段时间的模拟,总会静止下来,缺乏动感。而每一帧都给旗帜加上一些随机的扰动因素,旗帜的飘动看起来会更自然、与场景搭配更和谐。
得到和设置External Acceleration,可以通过下面的API进行:
PxVec3 getExternalAcceleration() const;
void setExternalAcceleration(PxVec3 acceleration);
然后,看运动范围控制的一个功能,PhysX 3.2中称为 Motion Contraint。要了解Motion Constraint如何工作,我们先看看PhyX SDK为我们提供了怎样的控制属性:
struct PxClothParticleMotionConstraint
{
PxVec3 pos; //!< Center of the motion constraint sphere (in cloth local space)
PxReal radius; //!< Maximum distance the particle can move aw