Question: Different rebase behavior between manually change geo-reference actor and auto-rebase


I’ve observed two different behavior when Cesium rebases geo-origin:

Case 1: auto-rebase due to camera movement. In this case, it seems that the Unreal world frame was moved to near the camera, however it is NOT rotated according to the current earth surface normal. The actor containing Cesium Globe Anchor component will have a rotation offset, even though it is aligned with the local ENU frame:

Case 2: manually change the georeference actor’s latitude/longitude values. This will move and rotate the Unreal world frame. In this case the actor containing Cesium Globe Anchor component will have a near zero rotation offset.

Is there a reason behind this difference? Is there a way to make Unreal world frame automatically rotate during auto-rebasing in Case 1?


In short, the reason for the difference is that Unreal’s origin rebasing system only supports translation. Effectively, when the origin rebases, all objects stay in the “same place” according to Unreal Engine, though their coordinate values may change. But there’s no similar system for rotation. So we would have to manually rotate all objects in the level, and Unreal would consider that an actual rotation, not just a change of rotation values according to a rebase. It might work, but it also might have lots of unintended side effects.

Changing the georeference coordinates, on the other hand, does not change any Unreal object coordinate values, other than those that opt-in by attaching a GlobeAnchroComponent. You can think of it as changing the position of the globe within the level, rather than changing the position or orientation of the level.

The georeferenced sub-level system can be used to keep the level upright when traveling between multiple places on the globe:

It may also be helpful to read this tutorial for background, if you haven’t already:

It’s also worth mentioning that the “Keep World Origin Near Camera” feature has been removed in UE5 versions of the plugin, as UE5’s large world coordinate support makes it unnecessary.