今日、私は Physx と Physx ビジュアル デバッガーをいじってみましたが、いつものように、初心者には問題と質問があります。苦手な英語力でできる限り自分の問題を説明しようと思います。
1) なんとか physx シーンを作成できました。動的アクターを追加して操作しました。Visual Debugger で動きが見えます。これは標準の PxSphereGeometry ボールです。しかし、シーンに 2 番目のボールを追加すると、2 番目のボールは表示されませんが、衝突が発生することがわかります。これがコードです。誰かが私に何が問題なのかを指摘できれば、私は非常に感謝しています:
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 は 1kg、グラム、または何になりますか?
皆様、本当にありがとうございました。私はあなたの助けに感謝します。