glTF 2.0 动画不工作

glTF 2.0 animation not working

我正在尝试使用带有动画的 glTF 2.0 模型进行一些实验。 不幸的是,当我尝试 update THREE.animationMixer 时,我收到警告:

THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0.

设置如下:

型号:
我不是 3D 艺术家,所以我在搅拌机中制作了一个立方体 + 环面。
动作编辑器中还有两个动作,以两种不同的方式移动圆环。

您可以从 here 下载 .blend 和 .glTF。

我认为导出工作正常,因为模型 + 动画在 Don McCurdy 的 glTF viewer 中工作。

代码:
我试过使用 Don McCurdy animation-mixer,或将 Three.js 混合到一个框架组件中:

AFRAME.registerComponent("foo", {
  init: function() {
    var el = this.el;
    setTimeout(()=>{
      var model = el.getObject3D('mesh')       
      this.mixer = new THREE.AnimationMixer(model);
      var clips = model.animations || (model.geometry || {}).animations || 
      [];
      console.log(this.mixer)
      console.log(el)
      console.log(clips[0])
      const action = this.mixer.clipAction(clips[0], model);
      action.setDuration(100).setLoop(THREE.LoopRepeat).play();
      console.log(action)
    }, 2000)
  },
  tick: function (t, dt) {
    if (this.mixer && !isNaN(dt)) this.mixer.update(dt / 1000);
  }
})

此代码基本上是 Don 的加载程序的翻版。当我添加 mixer.update 部分时,唯一应该移动的物体圆环消失了,并出现了上述错误。没有任何日志记录为未定义,因此对象已正确创建。此外,animation-mixer 行为是相同的(我想这并不奇怪,因为我刚刚参与其中)。

知道是什么导致了这个问题吗?我可能遗漏了一些东西,但我不知道如何解决这个问题。

旧版本的 THREE(r87-r88 之前左右)的三次贝塞尔插值被破坏,A-Frame 0.7.0 仍在使用。在 Blender 中切换到线性插值可以解决这个问题,或者使用 A-Frame master 分支。

您还提到了动作编辑器中的两个动作,它们将在导出期间合并,因为对于 Khronos glTF Blender 导出器,多个动作是 still in progress

如果这不起作用,还可以尝试另一个 glTF Blender 导出器:https://github.com/Kupoman/blendergltf/