我正在尝试使用带有动画的 glTF 2.0 模型进行一些实验。不幸的是,当我尝试 时update
,THREE.animationMixer
我收到警告:
THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0
.
这是设置:
模型:
我不是 3D 艺术家,所以我在搅拌机中制作了一个立方体 + 圆环。
动作编辑器中还有两个动作,以两种不同的方式移动圆环。
您可以从此处下载 .blend 和 .glTF 。
我认为导出效果很好,因为模型+动画在 Don McCurdy 的glTF viewer中工作。
代码:
我尝试过使用 Don McCurdy animation-mixer或将 Three.js 混合到 a-frame 组件中:
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's Loader 的抄袭。mixer.update
当我添加零件时,唯一应该移动的对象,即环面,会因上述错误而消失。没有任何日志记录为未定义,因此对象已正确创建。此外,animation-mixer
行为是相同的(我想这并不奇怪,因为我只是参与其中)。
任何想法可能导致问题?我可能遗漏了一些东西,但我不知道如何解决这个问题。