8

我正在使用 THREE.JS 开发一个 3D 项目,我想为一个简单的 minecraft 角色制作动画。

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

2 回答 2

5

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

mesh = new THREE.SkinnedMesh (geometry, 
          new THREE.MeshBasicMaterial ({color: 0xaaaa00, skinning: true})
     );
于 2013-06-08T22:11:41.950 回答
0

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

于 2013-06-14T16:48:53.247 回答