我正在使用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;
}
答案 0 :(得分:5)
构建网格时,请确保材质的蒙皮属性设置为true
,例如:
mesh = new THREE.SkinnedMesh (geometry,
new THREE.MeshBasicMaterial ({color: 0xaaaa00, skinning: true})
);
答案 1 :(得分:0)
默认使用四元数旋转。尝试设置meshBody.bones[i].useQuaternion = false;
,然后更改轮换的参数或改为使用quaternions。