在创建PhysX 3.2的PhysX SDK对象和PxScene对象的时候,我们会发现,跟PhysX 2.8时候相比,有一个多出来的参数特别醒目:
PX_INLINE physx::PxPhysics* PxCreatePhysics(
physx::PxU32 version,
physx::PxFoundation& foundation,
const physx::PxTolerancesScale& scale,
bool trackOutstandingAllocations = false,
physx::PxProfileZoneManager* profileZoneManager = NULL);
PX_INLINE PxSceneDesc::PxSceneDesc(const PxTolerancesScale& scale):
这个参数就是上面加粗的参数,PxTolerancesScale scale。这个参数干什么用的呢?
我们还是看看它的定义吧:
class PxTolerancesScale
{
public:
/** brief
The approximate size of objects in the simulation.
*/
PxReal length;
/** brief
The approximate mass of a length * length * length block.
*/
PxReal mass;
/** brief
The typical magnitude of velocities of objects in simulation. This is used to estimate
*/
PxReal speed;
/**
\brief constructor sets to default
*/
P

PhysX 3.2中的PxTolerancesScale参数影响模拟稳定性,包括碰撞判断、物体睡眠状态及反弹判断。Scale.length影响碰撞精度,Scale.speed影响睡眠和反弹判断,Scale.mass目前未使用。合理设置这些参数和相关变量如contactOffset、restOffset、gravity是确保模拟正常的关键。例如,若单位系统中10单位=1m,可设scene.gravity.y = -9.8f*10,Scale.speed = scene.gravity.y,Scale.length = 10。遇到模拟问题时,应检查这些设置。
最低0.47元/天 解锁文章
3905

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



