OSM Buildings and Tile Loading occurs constantly while using N-Display

Hey All,

I am currently using Cesium for Unreal for a Unreal 5.5 application where the character flies around the world wide globe (utilizing Cesium Self-Hosted via the Docker solution). My OSM building Mean Squared Error is set to 1, the terrain is set to 8. My n-display configuration is just defining 3 projectors all attached to the same machine which also is running the Unreal application and cesium self-hosted application.

When I run the application with the N-Display configuration disabled, the application behaves normally: The buildings and terrain tiles all load in correctly, I may see some Z-fighting but no major errors/changes while the character moves relatively slowly.

When I run the application with the N-Display configuration enabled, the application behaves abnormally: The buildings and tiles will load at different error levels and often change back and forth. Even when I appear to be closer to a section of the Earth in question, the quality of a tile may reduce or increase. This behavior occurs on all 3 views.

I believe this could be similar to the issue here Distant Tiles Clipped When nDisplay Is Enabled where N-display and Cesium may not be interacting well together. Any general thoughts on this or tips to fix it? I have messed with the MSE, cached memory, and more to try to fix this. Thanks!

EDIT:

I am running my executable via the following command in the commandline as my PC needs to be offline and does not have UnrealEngine installed. A CLI option here could be a part of the problem but I am unsure.

“executable” None -messaging -dc_cluster -nosplash -fixedseed -NoVerifyGC -noxrstereo -xrtrackingonly -RemoteControlIsHeadless -StageFriendlyName=“Node_0” -MaxGPUCount=2 -dc_cfg=“NdisplayConfig” -d3d11 -dc_dev_mono -nosound -NoLoadingScreen -DisablePython -dc_node=Node_0 Log=Node_0.log -ini:Engine:[/Script/Engine.Engine]:GameEngine=/Script/DisplayCluster.DisplayClusterGameEngine,[/Script/Engine.Engine]:GameViewportClientClassName=/Script/DisplayCluster.DisplayClusterViewportClient,[/Script/Engine.UserInterfaceSettings]:bAllowHighDPIInGameMode=True -ini:Game:[/Script/EngineSettings.GeneralProjectSettings]:bUseBorderlessWindow=True -ini:Input:[/Script/Engine.InputSettings]:DefaultPlayerInputClass=/Script/DisplayCluster.DisplayClusterPlayerInput -unattended -NoScreenMessages -handleensurepercent=0 -UDPMESSAGING_TRANSPORT_MULTICAST=“230.0.0.1:6666” -UDPMESSAGING_TRANSPORT_UNICAST=“127.0.0.1:0” -UDPMESSAGING_TRANSPORT_STATIC=“132.224.164.243:9030” -ExecCmds=“DisableAllScreenMessages” -fullscreen -CONCERTRETRYAUTOCONNECTONERROR -CONCERTAUTOCONNECT -CONCERTSERVER=“unreal_ig_MU_Server_i9An6urnvLkI” -CONCERTSESSION=“MU_Session” -CONCERTDISPLAYNAME=“Node_0” -CONCERTISHEADLESS -DPCVars=“Slate.bAllowNotifications=0,p.Chaos.Solver.Deterministic=1,LevelInstance.ForceEditorWorldMode=1”

Hi @aedanwells, welcome back to the community!

I’m not personally familiar with the nDisplay plugin, though it’s seemed to cause issues for other Cesium for Unreal users in the past. My suspicion is that the way it handles camera views is different from what Cesium for Unreal expects under the hood.

It’s possible that defining explicit camera views on Cesium Camera Manager can make a difference. You can create and update Cesium Camera instances in Blueprints (or in C++) depending on what views you have in nDisplay. Even though it can feel redundant to re-register these camera details, it might help standardize the displayed behavior. :thinking:

I guess I am struggling on how to connect a Cesium Camera Manager to the default camera I have defined for my main actor. How do I connect my current camera to the cesium camera? I only have one camera defined in both the ndisplay configuration and the main actor