2012-07-05 36 views
1

今天,我嘗試在PhysX和Physx可視化調試器中玩耍,並且一如既往地,新手有問題和疑問。我會盡我所能地用自己的英語能力來描述我的問題。PhysX 3的幾個新手問題

1)我設法創建了一個physx場景。添加了一個動態演員並操縱它。我在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碰撞,但我看不到aTrActor在可視化調試,但是碰撞完全可見。

2)Nvidia的文檔非常差。對於像我這樣的新手來說,這是一種折磨。所以我想知道如何導入3D模型並將其添加到場景中。我知道有一個用於3ds max的PhysX插件,maya等等。假設我有一個與此插件一起導出的模型,我如何將它導入到我的應用中並將其添加到場景中?

3)在創建現場

sceneDesc.gravity = PxVec3(0.0f, -9.81f, 0.0f); 

的,我應該提供什麼樣的價值得到真正的重心,一來我們在地球上

4)我可以大規模分配給演員,但是我不知道質量在哪個測量單位。例如,如果我設置了aSphereActor-> setMass(1); aSphereActor將1kg,克或什麼?

非常感謝大家。我感謝您的幫助。

回答

2

首先,我正在做這個季度的第一個PhysX項目。 (閱讀,我可能會這樣做)
1)
 你不檢查aTrActor的創建,但我不認爲這是你的問題。
 檢查繪圖/更新回調中是否存在aTrActor。
2)
 說不上
3)
  -9.81米/秒^ 2爲地球重力的加速度。
 我猜測PxVec3是相對於每個軸的重力。
 因此,PxVec3(0.0,-9.81,0.0)不是x或z加速度,而是-9.81 m/s^2 y加速度。
4)
 對#3的回答表明單位是度量標準。
 您可以將它們全部放在標準中,但公制>標準imo。


剛剛看了一下日期,這可能不會幫助Davita,但希望它對某人有用。