Generating Cesium3DTileset collision on a dedicated Unreal server

Hello everyone!

I’m trying to run a chaos physics simulation on the surface of a Cesium3DTileset on a dedicated unreal server.

Currently I’m not sure, if it’s possible to stream Cesium tiles on a dedicated server, so I would appreciate any guidance on this matter.

I only need collision from the tileset on the dedicated server. A server-authoritative physics pawn (Chaos WheeledVehicle) has to drive on the terrain, so the server’s physics scene needs the tile collision meshes present.

On the dedicated server the tileset logs “Loading tileset for asset ID … done”. However a downward line trace from the pawn (ECC_WorldStatic, complex collision) finds no hit.

What I’ve already tried:

1. Custom camera: since a dedicated server has no player viewport to drive LOD, I subclassed ACesiumCameraManager and register a proxy FCesiumCamera that follows my pawn’s world position, poiting downwards, updating its position every tick (AddCamera / UpdateCamera).

2. Verified my manager is actually the one tilesets read: GetDefaultCameraManager(World) returns my instance, it lives in the PersistentLevel, and it carries the DEFAULT_CAMERAMANAGER tag.

3. Confirmed “Create Physics Meshes” is onand collision is set to Query + Physics.

My questions:

1. Does Cesium for Unreal load tile content and cook physics/collision meshes on a
dedicated server (with no RHI) at all? If not by default, is there a setting or code path to enable collision-only streaming on the server?

2. Is registering a custom FCesiumCamera via the CesiumCameraManager sufficient to drive tile refinement on a dedicated server, or is something else required to kick off streaming when there’s no rendering viewport?

Thanks a lot for your help!

Environment:

- Unreal Engine: 5.7.4 (source build)

  • Cesium for Unreal: 2.26.0

Hey @alpac0,

Just to rule some things out, could you try to reproduce the issue starting with a fresh copy of the Cesium for Unreal Samples project in a standard environment (single player local - NOT server), add a Cesium3DTileset, enable physics meshes, create and register your custom camera with the camera manager etc. If you have an issue here than we can say it’s not the dedicated server environment. If that works okay, you can switch it to dedicated server and test that too. This will help us narrow down if it’s a implementation issue or Cesium for Unreal Issue. You could potentially try connecting to your dedicated server as a client (setup your custom camera on the server to follow the client) and see if that works, then potentially it’s only an issue with a dedicated server and no client connected but I don’t think that will make a difference.

My understanding is that this should work, the answer two both your questions should be yes. I do want to ask though, if you’re just running a simulation on a server and not connected clients, why not run it in just a standard Unreal Environment? I’ll dig around and see if I can find any gotchas, but what you’re trying sounds correct.

Let me know how that goes!