Replication Live Link Pose

Hi,
I am currently developing a multiplayer system in which each user is represented by an avatar. The avatars are animated by Live-Link and the Meta Quest. Unfortunately, the animation can only be seen locally, the other clients do not see the Live-Link animation. If I change the animation to a simple running movement, it is visible to everyone. Does anyone have an idea how to replicate the LiveLink data correctly so that it is visible to everyone?

livelink_anim
walk_anim

1 Like

Any updates ? We have something working but it’s complicated and involves broadcasting the final transform data of ALL the bones to each of the other players. Not ideal!

1 Like

I got close!

It works but lags very hard. Maybe someone can take it from here, or make some sort of optimization

You need to buffer the data and send at a steady rate. e.g. 60Hz

Take a look at how CMC works. It doesn’t send moves every tick.

I’ve tried every quarter second and it runs decent, but obviously horrible. Getting it to run at even 60hz for me seems impossible, but VRChat does it, so I know its doable.

What is CMC? I am trying to maybe thinking of making a custom C++ Live Link Node?

Is replicating LiveLink’s internal UDP directly a lighter load to replicate than a PoseSnapshot struct or nearly the same?

Really looking into this recently

Character Movement Component (CMC). It’s Epics movement for the First/Third person templates. It has built-in client-side prediction and server authority correction. Fully networked.

1 Like

@RealAero You need to interpolate the movement changes snapshot to snapshot. Right now, based on what I see in the vid you are snapping to the new pose.

Personally I’d store Last Snap and compare to the next. Use margin of error (%) to determine what has changed enough to be relevant. Only send relevant. You’ll need to break a snap down to per bone data, send relevant, then build a new snap, then interpto.

Oh and Yeah, C++ will make this a hella lot more performant.

1 Like

This sounds like the magic needed. I can granularly understand the concepts thanks to my blueprint knowledge, however I am unsure where to begin with C++ to do this on my own.

I’m dabbling in C++ to figure it out, using ChatGPT a ton haha.
Any chance this might be something you can help me program? Maybe as a project? If not, maybe know someone who could?

VRIK, especially Meta’s FBT is an extremely solid social presence feature, and it makes a world of a difference in my VR platform/game. I would love to have it in multiplayer and I am sure the Quest dev community is looking for a solution as well

Thanks!

I can granularly understand the concepts thanks to my blueprint knowledge, however I am unsure where to begin with C++ to do this on my own.

Prototype it in BP. Then translate to C++. Faster process.

Any chance this might be something you can help me program? Maybe as a project?

I’m up to my eyeballs in my own project atm.

1 Like