首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >glTF 2.0动画无法工作

glTF 2.0动画无法工作
EN

Stack Overflow用户
提问于 2018-02-11 19:30:33
回答 1查看 2.1K关注 0票数 0

我试着用glTF 2.0动画模型做一些实验。不幸的是,当我尝试update THREE.animationMixer时,我收到了一个警告:

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

下面是设置:

模型:

我不是3D艺术家,所以我在搅拌机里做了一个立方体+环面。

此外,在动作编辑器中有两个动作,以两种不同的方式移动环面。

您可以从.blend下载.glTF和从这里下载。

我认为导出很好,因为模型+动画是在Don的glTF查看器中工作的。

代码:

我尝试过使用Don McCurdy 动画混频器,或者将Three.js混合到一个a帧组件中:

代码语言:javascript
复制
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);
  }
})

这段代码基本上是唐的装载机的翻版。当我添加mixer.update部分时,唯一应该移动的对象是圆环、解智器和上述错误。没有任何未定义的日志,因此正确地创建了对象。此外,animation-mixer的行为也是一样的(我想这并不奇怪,因为我只是参与其中)。

有什么可以引起这个问题的吗?我可能遗漏了什么,但我不知道如何解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-15 00:56:54

三次bezier插值在较旧版本的三个版本(前r87-r88左右)中被打破,而A帧0.7.0仍然使用。在搅拌机中切换到线性插值可以解决这一问题,或者使用A帧主分支.

您还会在actions中提到两个操作,它们将在导出过程中合并,因为多个操作是用于Khronos glTF Blender导出程序的glTF。

如果这不起作用,还有另一个glTF搅拌机出口商:https://github.com/Kupoman/blendergltf/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48735552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档