'Playing same animation action on loop without reseting position

I am trying to run a walking animation on a gltf model from animationClip. The goal is to play the walking animation whenever the up arrow key is pressed and keep it running if the key is held down. For that i am playing the animation whenever first animation is completed but the animtion only plays once. It triggers the finished event but there is no animation.

walkAction = mixer.clipAction(walkClip);
walkAction.loop = THREE.LoopOnce;
walkAction.enabled = true;
walkAction.paused = true;
walkAction.clampWhenFinished = true;
walkAction.play();

mixer.addEventListener('finished', restoreAnim);

function restoreAnim(event){
  mixer.removeEventListener('finished', restoreAnim);
  walkAction.play();
}

The above code was to keep the character keep moving but it clamps up after the first time but the finished eventListener is still triggered repeatedly.

Also is there any other way to do this. I am using walking animation from mixamo and the problem persists even when using multiple animations and changing different properties.



Solution 1:[1]

Where you are downloading that animation. if it's a site like "mixamo.com" there will be an option called "In place". you have to check that check box before you download your selected animation. Then your animation will play without repositioning its place. check this "In place" checkbox

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Harshadeva Priyankara Bandara