修复three.js循环动画的最后一帧

时间:2016-08-19 06:53:39

标签: animation three.js

我使用了three.js blender插件来导出姿势动画。 原始动画没有循环属性,因此动画的最后一帧不等于第一帧。

因此,我想找到一个javascript解决方案,而不是返回并修复所有混合文件。

  1. 复制第一帧并将其附加到所述动画的最后一帧,并修复持续时间。
  2. OR

    1. 如果可能的话,阻止three.js混合帧并修复持续时间(我的动画在每一帧都有键,所以动画看起来可能没有“平滑”,除非它们以慢动作播放)

1 个答案:

答案 0 :(得分:0)

好吧,我刚才发现我可以在它被三个.js解析之前编辑json

function fixjson(json){
    var a = json.animations;
    for (var i=0; i<a.length; i++){
        var h = a[i].hierarchy;
        var f = 1/a[i].fps;
        a[i].length += f;
        for(var j=0; j<h.length; j++){
            var keys = h[j].keys;
            var n = {};
            for(var x in keys[0]){
                n[x] = keys[0][x];
            }
            n.time = a[i].length-0.001; //don't know why, AnimationMixer skip the last frame if the time equals to the animation duration
            keys.push(n);
        }
    }
}