How to not reset model position when crossfading animations?

I’m trying to have animations transition from one to another smoothly using crossfade. I got the crossfade, but one problem is if an animation has the model moving away from it’s starting location, and the next animation is one that starts at the starting location, the crossfade will teleport/slide the model back to the starting location. Is there a way to ignore the starting location of animations and just start the crossfade wherever the model is? My model and animations are downloaded from Mixamo.

model = gltf.scene
scene.add(model)
mixer = new THREE.AnimationMixer( model );
const action1 = mixer.clipAction( gltf.animations[ 5 ] );
const action2 = mixer.clipAction( gltf.animations[ 3 ] );

action1
    .play();
setTimeout(function() {
    action2
        .crossFadeFrom(action1, 1, true)
        .play()
}, action1._clip.duration * 1000 - 500)

webgl / skinning / morph might be a good example. The important part is here:

I’m not sure which part of this can help me. The only difference seems to be using fadeIn and fadeOut instead of crossFadeFrom, and when I tried it, I had the same problem.

Ah I see… additive animation is similar to what you’re describing, and can be enabled for a clip so that it “adds” to other active clips rather than blending between them:

However, if you’re fading the first clip out, you’ll gradually lose whatever change it had applied to the position, so you may need something more custom here…

When I added makeClipAdditive to action2, it seems like it is adding the animation to the base, which is just a T-pose instead of adding to the action1 as it fades out. The model still does its teleporting thing too, so it didn’t fix my original issue. Any suggestions?

I am having same issue. Any progress anyone ?

Yes, just make sure your animations don’t displace the model from its original location (you really don’t want to involve math and manual calculations of inverse displacement into fps-dependent keyframe animations.)