我试着用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帧组件中:
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的行为也是一样的(我想这并不奇怪,因为我只是参与其中)。
有什么可以引起这个问题的吗?我可能遗漏了什么,但我不知道如何解决这个问题。
发布于 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/
https://stackoverflow.com/questions/48735552
复制相似问题