【问题标题】:THREE.JS how to move the bones of a SkinnedMesh?三.JS 如何移动一个 SkinnedMesh 的骨骼?
【发布时间】:2013-02-12 06:07:35
【问题描述】:

我正在使用 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;
}

【问题讨论】:

    标签: animation three.js mesh


    【解决方案1】:

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

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

    【讨论】:

    • 嗯,当我这样做时,模型消失了。在本教程link 中,它提到使用与顶点组相同的骨骼命名。听起来有点奇怪,但我试过了,没有任何区别......
    • 好的,我现在知道了。我需要添加多个顶点。
    • @robhearing 如果您找到了解决方案,您能回答我的问题吗? :) stackoverflow.com/questions/60036248/…
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-04-10
      • 2017-12-21
      • 2012-10-17
      • 2023-03-23
      • 2014-09-23
      • 2017-05-05
      • 2021-01-24
      • 2014-01-15
      • 2014-10-16
      相关资源
      最近更新 更多