2016-03-06 133 views

回答

2

望着Three.js Blender exporter,它看起來像只有出口網格數據,沒有關於數學形狀(盒,面,球等)的Cannon.js需要工作的信息。你可以嘗試使用它的Trimesh類將你的網格直接導入到Cannon.js中,但是這會傷心地only work for collisions against spheres and planes

你需要什麼養活Cannon.js是數學幾何數據,告訴它這在你的網你的三角形代表一箱(或飛機),並在其質量中心的。

用於創建3D WebGL物理的常見(手動)工作流程是將3D模型導入支持WebGL的遊戲引擎(如Unity,Goo CreatePlayCanvas)。在遊戲引擎中,你可以添加碰撞形狀到你的模型(盒子,飛機,球體等),所以物理引擎可以有效地工作。您可以從那裏預覽您的物理模擬並導出完整的WebGL體驗。

+0

謝謝你的答案,這個偉大的引擎,它幫了我很多關於我的項目!在解決問題的過程中,我遇到了另一個問題:大炮飛機似乎沒有限制。我怎樣才能限制飛機,以便我可以實現某種三角棱鏡? –

+0

很高興聽到它對你有用! 如果你想要一個方形平面,使用一個盒子而不是一個平面。如果你想要一個三角棱鏡,然後構造一個凸面。也許你甚至可以使用一個只有很少部分的Cylinder。 – schteppe

1

去,因爲這裏要考慮一些新的選項後另一個答案...

  1. 我寫了一個簡單mesh2shape(...)幫手,可以轉換(每次一個對象)從THREE.Mesh到CANNON .Shape對象。它不支持某些功能,例如heightmaps/terrain。

實施例:

var shape = mesh2shape(object3D, {type: mesh2shape.Type.BOX})

  • 存在用於glTF格式,以包括與一個模型物理數據的BLENDER_physics extension(實驗!)。你可以在攪拌機,出口glTF添加物理數據,然後修改THREE.GLTFLoader沿物理數據到應用程序傳遞,幫助您構建CANNON.js對象。
  • 相關問題