Animation sync with different skeletons

I have two characters: player and horse. Both player and horse have animations that looks good only when they play in parallel. So how I can synchronize them animations? As I understand, sync groups can work only with one skeleton, but in my case I have two

I am now experiementing with Control Rig, but in v4.25 is very very buggy. As I understand, it’s used for another things (like procedural animations with IK), but I have ready-made animations with same lenght for horse and rider, so I just need to play it at the same time.
So I will try solution with notifies that you suggested :slight_smile:
Thank you for answer.

Not sure if you’ve looked into it, but as I understand it, this is what the Control Rig feature is for, so maybe you should have a look at that. It’s currently experimental but I believe it is entering Beta as of 4.26. I have no experience with it myself so I can’t tell you whether it will be exactly right or how hard it is, but I believe it is probably worthwhile checking out.

Alternatively in the past I have triggered animations from different skeletal meshes that are interacting by using animation notifies this gives you control over exactly when you want to trigger an animation based on another animation, it’s not full proof but does work.

If they’re the same length then you just need to tell the game to play both on the same frame time in game no? So long as they get the instruction on the same frame they should start at the same time and in sync.
You can set up a function to do so in C++ like so:

USkeletalMeshComponent* RiderSkeletalmesh, HorseSkeletalmesh;
UAnimationAsset* Rideanimation, Horseanimation;
void PlaySyncedAnimation()
{
   RiderSkeletalmesh -> SetAnimation(Rideanimation);
   RiderSkeletalmesh->Play(bLooping);
   HorseSkeletalmesh -> SetAnimation(Horseanimation);
   HorseSkeletalmesh->Play(bLooping);
}

It gets a little more nuanced if you are using an anim BP to control other animations for your character, but that should be it.

(Apologies for Thread Necro)

Struggling with the same issue. How do you sync anim components in an AnimBP (e.g. horse riding)? For cinematic or non-realtime applications, there are lots of ‘hacks’ you can try and use to get the anims to play at the same time. But in a real-time anim graph anims can desync very easily.

Most commonly, you use a Blendspace for locomotion with a velocity variable. But no matter how ‘equal’ you try to make it (e.g. driven by the same velocity variable, identical pre-requisite notes), they always desync. Would be nice to fix this.

How can you use control rig to sync these anims?