THREE.JS如何移动SkinnedMesh的骨骼?

时间:2013-02-26 17:07:51

标签: animation three.js mesh

我正在使用THREE.JS制作一个3D项目,我想制作一个像角色一样简单的魔兽世界。

为此,我从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;
}

2 个答案:

答案 0 :(得分:5)

构建网格时,请确保材质的蒙皮属性设置为true,例如:

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

答案 1 :(得分:0)

默认使用四元数旋转。尝试设置meshBody.bones[i].useQuaternion = false;,然后更改轮换的参数或改为使用quaternions