Three.js mixer.time = n不会在第n个搅拌器框架上播放,mixer.time = n / 1000也不会

时间:2019-10-21 11:42:43

标签: three.js blender gltf

在Blender中,我的动画总长度为250ms。

enter image description here

但是当我将正在播放的动画播放到

mixer.time = 100/1000;

它只播放动画的一部分。

    mixer = new THREE.AnimationMixer(cube);
      gltf.animations.forEach((clip) => {
      mixer.clipAction(clip).play();
             });
       });

...
     function seekAnimationTime(animMixer, timeInSeconds){
    animMixer.time=0;
    for(var i=0;i<animMixer._actions.length;i++){
      animMixer._actions[i].time=0;
    }
    animMixer.update(timeInSeconds)
  }

如何使动画以搅拌器单位运行到某个“帧”或时间?

任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

使用

var duration = 0;
...
  mixer = new THREE.AnimationMixer(cube);
      gltf.animations.forEach((clip) => {
        duration = clip.duration;
      mixer.clipAction(clip).play();
             });
...
if(mixer!=null){
    var tar = 50; // percentage you want to play to
    var mul = duration*(tar/100)
        seekAnimationTime(mixer,elapsed*mul);//elapsed is a time scale running from 0 to 1
    }