Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

play animation once instead of looping three.js

I have exported blender JSON animation into THREE.js, everything works fine, but I want to play the animation only once and stop instead of looping the animation.

like image 606
Arun Kumar Avatar asked Nov 27 '15 14:11

Arun Kumar


2 Answers

Old question, but in case anyone needs it the solution is to set animation.setLoop(THREE.LoopOnce)

let objLoader = new THREE.ObjectLoader();

objLoader.load('./your.json', function(obj)
{
  scene.add(obj);

  let animationMixer = new THREE.AnimationMixer(obj);
  let animation = animationMixer.clipAction(obj.animations[0]);
  animation.setLoop(THREE.LoopOnce);
  animation.clampWhenFinished = true;
  animation.enable = true;

  animation.play();
})

I'm referring to ThreeJS r84.

like image 172
a.barbieri Avatar answered Nov 07 '22 15:11

a.barbieri


Set the loop property on the Animation object to false.

documentation here: http://threejs.org/docs/#Reference/Extras.Animation/Animation

like image 39
Tennyson H Avatar answered Nov 07 '22 15:11

Tennyson H