這裏是一個demo如何在使用cannon.js物理時控制three.js播放器網格(md2)?
使用three.js所我最近開始(我所熟悉的OpenGL和C++這樣算下來,在JavaScript是不是一個巨大的學習曲線),我已經經歷了很多的例子three.js所看了解如何設置的東西,我看到這個視頻[xttp://www.youtube.com/watch?v = 1ENVYLp_NgY]解釋如何包括cannon.js,我想試試這也:) :)
我的目標是建立一個帶有陰影和物理效果的3D世界,並帶有一個可以與其他對象互動的動畫播放器。我選擇了這個例子[xttp://threejs.org/examples/webgl_morphtargets_md2_control.html]作爲起點,因爲它已經有了動畫播放器網格,播放器控件也是正確的,我將OrbitControls添加到了相機中,以便它可以環視四周。
除了每當我嘗試將玩家網格物體鏈接到存在於物理世界中的任何物體(以便他可以擊退/推動石塊)時,一切似乎都運行良好,我想要簡單地開始避免任何因爲玩家網格是一個複合對象(導入的md2),所以我只是使用一個基本的球體形狀,但如果我嘗試更新物理世界中的對象的座標,以便隨時隨着玩家網格移動,玩家網格動畫但不移動(所以我取消了update()函數中的那些行)。
/**
* Problem: This prevents player from moving :(
**/
player.position.copy(playerMesh.root.position);
player.quaternion.copy(playerMesh.root.quaternion);
player.velocity.copy(new THREE.Vector3());
還有一種叫做「陀螺」參與,這似乎使得它與玩家移動座標,但我不知道怎麼發生這種情況(陀螺儀部分移動光位置的MD2選手網格對象是不是我明白,但我不知道這是否是問題的一部分)。
的code repo託管在GitHub上
UPDATE:固定的,請在Github上查看 :)
如果你有一些小的東西,你不在乎精度是否會丟失,那麼這樣做會起作用,但是如果你的'Mesh'是一個需要嚴格精度的巨大的,精確的自定義地圖,你會怎麼做?這就是爲什麼我問這個問題[這裏](http://stackoverflow.com/questions/24543722/create-cannon-rigidbody-from-three-mesh-or-three-geometry)。如果有一個簡單的函數來從自定義的「Mesh」中創建一個複雜的'RigidBody'將會很好。 – usandfriends 2014-07-08 17:22:44