Multiple Actors causing jitter

I am creating a simulation of multiple aircraft where they are defined using ECEF coordinates and rotations defined by quaternion from body to ECEF frame. I have successfully used Cesium to display the actors in the simulation and they go the right way and orient correctly, however whatever actor is attached to the camera has no jitter, every other actor has a lot of jitter.

I have used a CesiumGlobeAnchor component on all actors and even an Origin Shift component on the main vehicle, but the jitter still persists. The actors fly at an altitude of around 10000m if that helps. Is there any way to get rid of the jitter, as I am on UE5.4 and thought that double precision floats would solve this issue.

Can you share a video of the jitter you’re seeing? I agree Unreal’s double-precision coordinates should eliminate classic jitter caused by limited vertex precision. So it’s likely you’re seeing something different.

How are you moving the objects? Since you presumably get position updates less often than once per render frame, are you interpolating the position in between frames?

Yes here is a short video, you can see that the other vehicles seem to be jittering around as well as the trail not being smooth. I simulate the vehicles in simulink and then save the data as .csv files, then upload as vector curves and then use a timeline to move the position of the vehicles. I have the data sampled at 0.02 seconds so im not sure if that is the problem.
VideoProject12-ezgif.com-crop

If you know of a better way to move the vehicles then I would be open to that too.

It’s hard to be sure, but in the video it looks like the objects are actually moving relative to each other. Are you sure there’s not error/jitter in the source data? It could be caused either by position error, or by the objects not all updating at the same rate.

Yes I thought this might be the issue, so I only had ECEF data for one of the vehicles and then for the other 2 vehicles I created their datasets by using the first vehciles’ and then off-setting their position by a fixed value (before the separation) and they still bounced around like that.

What would you suggest be the best way to send position data to the objects to have them move as we need? Right now this is how I have it, with the data in the timelines being vector curves. The data is sampled from simulink at 0.02sec.

Your Blueprint looks fine from what I can see. I might try ticking that “Teleport Physics” box, though it may not matter.

So is it that Timeline component that is offsetting the other vehicles from the first one? Can you share that code? It’ll be important to do that offsetting in double precision, but I’m guessing you already know that. I think Unreal’s FVectorCurve class might be only single-precision unfortunately. It returns an FVector, which is double-precision, but it evaluates the vector using three single-precision curves for some reason.

ticking the box did not work. I am offsetting the position in Matlab and then exporting as .csv so I don’t believe I am losing the double precision. This is how I am shifting the position vector at each timestep. Maybe something I am doing here is not correct?


As a test I gave the booster the same position vector as the vehicle in the timeline and it did not jitter.

Each actor has its own timeline in the actor blueprint, maybe I should be doing this in the level blueprint?

I was looking further into it and noticed when I printed the vector coming out of the timeline to the screen and output, it would only have 3 decimal places of precision. This might explain the issue, if so how would I guarantee the data passed in to the caesium block is double precision?

From what I can tell from looking at the UE source code, the Timeline component you’re using is single-precision. I think if you need double precision, you simply can’t use it. I understand replacing it will not be simple.

Thank you very much for your help. This is very helpful, I will find another way.