的剛性主體的中心(原點)是相同的質量中心和爲此的重要性質爲所述物理仿真。如果你願意,你可以使用btCompoundShape
「移動」這個中心,但這也會影響物理模擬,因此可能不會給你滿意的結果。
或者,您可以補償btMotionState
中物理原點和視覺原點的差異。例如,通過將ModelInstance#transform
設置爲提供的worldTransform
乘以包含偏移的a Matrix4
實例(例如,使用Matrix4#translate
)。
但是,這可能只是使它比需要更復雜。你可以說真正的問題是爲什麼你想要抵消模型的中心與身體相比?例如,在第二張圖像中,模型的中心看起來與第一張圖像中的相同。您僅移動了Node
,基本上表明您想爲ModelInstance#transform
成員提供初始值。您可以通過實例化ModelInstance
如下做到這一點:
modelInstance = new ModelInstance(model, "coneNode", true);
更換"coneNode"
用在你的建模應用程序創建它的節點的名稱。最後一個(true
)參數告訴ModelInstance將其transform
成員設置爲您在建模應用程序中給出的轉換。如果需要,您可以撥打modelInstance.transform.translate(x, y, z);
或modelInstance.transform.trn(x, y, z);
將modelInstance 相對移至此轉換。
這方面更深入的解釋可以在這裏找到:http://blog.xoppa.com/loading-a-scene-with-libgdx/
請注意,這僅適用,如果你正在使用從支持節點轉換的文件格式創建.g3db
或.g3dj
文件(例如,使用fbx-conv
) (如.fbx
,但不.obj
)
我一直在讀你2天的教程現在,搜索整個網絡找出了問題,直到我發現這一點。哇,這爲我解決了一切。 Tnx很多! –