2013-02-26 47 views
8

我正在使用THREE.JS開展3D項目工作,我想爲簡單的「我的世界」設計動畫角色。THREE.JS如何移動SkinnedMesh的骨骼?

爲此,我從Blender(骨頭)中導出了一個,然後使用SkinnedMesh類將其與THREE.JS一起渲染。

我想盡一切辦法使網格的臂移動,但我無法弄清楚如何去做。我試着改變旋轉角度,位置,矩陣,並將所有標誌設置爲true(如matrixWorldNeedsUpdate,但手臂沒有移動)。

這裏是一個示例代碼:

var meshBody = new THREE.SkinnedMesh(geometry, materialTexture); 

... 

animate = function(){ 
    meshBody.bones[3].rotation.z += 0.1  
    meshBody.bones[3].matrixAutoUpdate = true; 
    meshBody.bones[3].matrixWorldNeedsUpdate = true; 
} 

回答

5

在構建你的網格,請確保您的材料剝皮屬性設置爲true,如:

mesh = new THREE.SkinnedMesh (geometry, 
      new THREE.MeshBasicMaterial ({color: 0xaaaa00, skinning: true}) 
    ); 
+0

嗯,當我這樣做模型消失。 在本教程中[鏈接](https://devmatrix.wordpress.com/2013/02/27/creating-skeletal-animation-in-blender-and-exporting-it-to-three-js/)它提到了命名與頂點組相同的骨骼。聽起來有點奇怪,但我試過了,它沒有區別... – robshearing 2015-09-01 07:55:25

+0

好吧,我現在明白了。我需要添加多個頂點。 – robshearing 2015-09-02 02:16:31

0

其採用默認的四元數旋轉。嘗試設置meshBody.bones[i].useQuaternion = false;,然後更改輪轉的參數或使用quaternions