在Three.js中,调用action.play()
使对象消失,控制台上没有任何错误或警告。
我使用THREE.ObjectLoader
加载在blender中创建的JSON文件。 srt(位置/比例/四元数)动画位于生成的文件中。和morphtargets一样。为了优化文件大小,我将srt设置为一系列空对象。 morphtargets轨道位于主对象中,我克隆了5次以构建字符(确切地说是气球)。
我之前做了大量测试来介绍形状/变形动画。在成功之后,我完成了所有的动画。只有被消失的模特打败。 srt(位置/比例/四元数)动画之前工作正常。但是在重构代码之后,在调用action.play()
之后,可以减少spagettied。然后,物体就会消失。回声混音器和包含剪辑的数组,一切看起来都是正确的(即我看到了曲目,名称是正确的等等)。同时检查新生成的JSON,它看起来是一样的和正确的(我还没有改变SRT动画,只引入了shapeanimation)
所以我迷失了,并认为这看起来越来越像一个bug。根据以前的经验,我知道它有效(或已经有效)。
我创建了一个jsfiddle:https://jsfiddle.net/oompol/3ya6sqed/
[edit]我打开了action.play并从div [/ edit]中的链接调用了该函数,请注意我注释掉了action.play()
。所以你看到了load和init工作。请参阅下面列出的功能
function playScene(scene) {
for (parentName in srtMixers) {
var clpName = "balloon1_fly";
var clp = THREE.AnimationClip.findByName(animLib, clpName);
var action = srtMixers[parentName].clipAction(clp);
action.clampWhenFinished = true;
console.log("playScene:", clpName, clp, parentName, srtMixers);
//this is when the problem happens
action.play();
}
}
答案 0 :(得分:0)
确定,
确实存在缩放问题。 Blender的io_three JSON导出器(r87 dev)在几何对象中写入了不正确的矩阵变换数据(非常小的缩放值)。带有缩放键的动画轨迹被正确写为1,1,1。因此,所有对象都立即缩小了视图范围。
很难看到因为几何体没有单独的缩放值而是矩阵。当你设置"场景"出口时为真。
通过在关键帧轨道中输入缩放值来解决此问题。但这只有在你没有缩放动画时才会起作用(所以键都是一个)。
与此同时,我手工编辑了JSON。因为这不是唯一不正确的数据。动画对象的格式也是错误的。 morphTargetInfluence Keys的持续时间也不正确。这些键的格式也不总是正确的。
希望这有助于其他一些人