Fabrik replication


I have a VR multiplayer game. I am using Fabrik for reverse IK of the hands. This works well for single player.

I was hoping that it would replicate since Fabrik is used inside of the animbp. It does not.

I tried setting mesh to replicate and also set the variables I am using for the IK to replicate.

So far no good.

Any suggestions would be great.

It works now.

​​​​​​Not sure exactly what I did, but the character mesh has “component replication” ticked

Also I have all the variables I used in Fabrik set to replicated

This is still broken. Apparently if VR is used on client only the client will see the IK. If used on server, then server and client see IK. I thought it was working because I logged in as server and everything was fine, when logged in as client everything is not fine.

I tried to fix this more than 80 times yesterday (I had to build and run on another computer every time).

Passing a scene component or motion controller to the anim BP and setting Fabrik and bone modify/transform based on that. It works well in single player.

Trying to add replication is the problem.
​​​​In event tick I get the scene or the motion controller, send it to to run on server node which calls a multicast setting the scene or motion controller to the transform from the server. Looking at VR character is good, being VR character is bad since it keeps updating away from where you actually are now.

Tried comparing against owning actor or owner of animbp and not running updated position if owner equals. That didn’t help.

Tried two meshes and one is owner only see and one owner no see. In this case the only mesh that updates is the one connected to actual motion controllers.

I tried so many variations of those ideas.

A common problem is that between ticks the hands go straight back to being attached to camera and VrOrigin. In my case that’s on forehead. So they move to correct transform, snap to forehead then snap back to the correct transform

I’m curious if it’s an issue from setting world transform instead of local transform

Any help would be great

You should only need to replicate the transforms of the MotionController components. If that is replicated, the animBPs IKs should update on their own. If that doesn’t work, can you post a screenshot of your animBP graphs?

NotSoAccuarateNo1 Thanks for the help! If I simply tick replicated it only replicates to the server. I searched your response wondering if I was replicating wrong and I found the solution on a different thread. It seems like a “relative loc and rot” from motion controllers are replicated in the engine automatically. TBH I dont really understand how this works, but it does. Here is link and I really appreciate the help!

I thought that maybe there was a better way to do this, but… in my project, I am firing a replicated event 10 times per second that carries the getTransform of the motion controller component through server and multicast. Then after the multicast, playing a timeline that interpolates previous transform to new transform.

The animbp works as-is on top of this.