我很抱歉問這樣一個關於子彈的基本問題。但是,我有一個問題。這是設置:在子彈中使用「質量」
我有一個沒有重力的世界。當我按下一個鍵時,在世界中心創建一個1x1x1盒子。當我用鼠標右鍵單擊時,相機位置會創建一個大小爲0.05 * 0.05 * 0.05的框,並在您正在查看的方向上「拍攝」。這是麻煩開始的地方。
當一個小立方體碰到一個大立方體時,交互似乎是錯誤的。你會顯示一個1/8000的大小的盒子,其效果非常小。然而,大立方體飛行,就好像它是一個相同大小的立方體一樣。我認爲這是因爲我創建了相同質量的兩個對象。
爲了證實這一點,我使用1牛頓(或任何單位子彈使用)的向上力量。兩個對象都以相同的速度加速。
我創建對象的代碼如下:
btMotionState *state = new btDefaultMotionState(btTransform(btQuaternion(0, 0, 0, 1), btVector3(0, 0, 0)));
btConvexHullShape* shape = new btConvexHullShape();
for(unsigned int i = 0; i < vertices.size(); ++i) {
shape->addPoint(toBt(vertices[i]));
}
shape->setMargin(0.01f);
btScalar mass = 1.f;
btVector3 inertia;
shape->calculateLocalInertia(mass, inertia);
shape->setMargin(0.01f);
btRigidBody::btRigidBodyConstructionInfo ci(mass, state, shape, inertia);
body = new btRigidBody(ci);
我期望btScalar mass = 1.f;
行是罪魁禍首。
我是否期望計算我的物體的質量?這對於一個立方體來說足夠簡單,但是一些奇怪的凸起形狀呢?有什麼方法可以讓子彈爲我做這個嗎?
那麼這樣你就必須自己計算質量中心,不是嗎?所以(對於非平凡的形狀),你需要知道形狀和密度,而不是你,反覆試驗還不夠? – Rup
謝謝你的回答。我想我必須投入一些時間來計算凸包體積,或者切換到'triangleMesh'類型的對象。我的數據是以這種方式建立的,所以我確實認爲這將是一條路。 – BWG
@BWG知道物體的重量遠比其體積和密度更爲常見。你在建模什麼? – weston