Three.js mixer.time = n не воспроизводится в n-м кадре блендера, как и mixer.time = n / 1000 - PullRequest
1 голос
/ 21 октября 2019

В Blender моя анимация имеет общую длину 250 мс.

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 Ответ

1 голос
/ 21 октября 2019

с использованием

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
    }

...