今天,我尝试玩转 Physx 和 Physx 可视化调试器,和往常一样,新手有问题和疑问。我会尽量用我糟糕的英语技能来描述我的问题。
1)我设法创建了一个 physx 场景。添加了一个动态actor并对其进行了操作。我在 Visual Debugger 中看到它的动作。这是一个标准的 PxSphereGeometry 球。但是,当我在场景中添加第二个球时,第二个球是不可见的,但我可以看到发生了碰撞。这是代码,如果有人能指出我有什么问题,我将不胜感激:
PxMaterial* mMaterial;
mMaterial = mPhysics->createMaterial(0.5f, 0.5f, 0.5f); //static friction, dynamic friction, restitution
if(!mMaterial)
error("createMaterial failed!");
PxVec3 position(0, 50, 0);
PxRigidDynamic* aSphereActor = PxCreateDynamic(*mPhysics, PxTransform(position), PxSphereGeometry(3), *mMaterial, 1.f);
PxRigidDynamic* aTrActor = PxCreateDynamic(*mPhysics, PxTransform(PxVec3(3, 1, 1)), PxSphereGeometry(3), *mMaterial, 1.1f);
if(!aSphereActor)
error("Unable to create sphere actor");
aSphereActor->setMass(1);
aTrActor->setMass(10);
PxRigidStatic* plane = PxCreatePlane(*mPhysics, PxPlane(PxVec3(0,1,0), 0), *mMaterial);
if (!plane)
error("create shape failed!");
mScene->addActor(*plane);
mScene->addActor(*aSphereActor);
mScene->addActor(*aTrActor);
while(true)
{
mScene->simulate(1.0f / 30.0f);
if(!mScene->fetchResults(true))
error("cant fetch result");
Sleep(10);
}
在这个场景中,aSphereActor 与 aTrActor 发生碰撞,但我在 Visual Debugger 中看不到 aTrActor,但碰撞完全可见。
2) Nvidia 的文档非常非常差。对于像我这样的新手来说,找到它的方式是一种折磨。所以我想知道如何导入 3d 模型并将其添加到场景中。我知道有一个适用于 3ds max、maya 等的 Physx 插件。假设我有一个用这个插件导出的模型,我如何将它导入我的应用程序并将其添加到场景中?
3) 在创建场景期间
sceneDesc.gravity = PxVec3(0.0f, -9.81f, 0.0f);
,我应该提供什么值来获得真正的重力,我们在地球上拥有的重力
4)我可以为演员分配质量,但我不知道质量是哪个测量单位。例如,如果我设置 aSphereActor->setMass(1); aSphereActor 会是 1 公斤、克还是什么?
非常感谢大家。我感谢您的帮助。