【问题标题】:Fix last frame of three.js looping animation修复three.js循环动画的最后一帧
【发布时间】:2016-12-26 05:54:53
【问题描述】:

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

所以,我不想回去修复所有的混合文件,而是想找到一个 javascript 解决方案。

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

  1. 如果可能,防止 three.js 混合帧并修复持续时间(我的动画在每一帧中都有关键点,因此动画在没有“平滑”的情况下看起来不错,除非它们以慢动作播放)

【问题讨论】:

    标签: animation three.js


    【解决方案1】:

    好吧,我刚刚发现我可以在 json 被 three.js 解析之前对其进行编辑

    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);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-11-02
      • 2019-10-16
      • 1970-01-01
      • 2017-05-30
      • 2016-03-01
      • 1970-01-01
      • 2018-11-26
      • 2021-08-10
      • 1970-01-01
      相关资源
      最近更新 更多