Cesium v2.23 and above crashing Ndisplay nodes for Virtual Production *FIX*

Hey all,

Wanted to throw this out there in case anyone else comes across this issue. I was using cesium to build a city skyline for a Virtual Production project. This environment will be projected to an LED volume so Ndisplay and nodes are involved in this process.

When I initially tried to launch the project to the LED wall to view it, the project would begin the load up, which would then cause the nodes to fail and close, which would stop the project from launching all together. After digging into this more and doing some tests to find the root of this issue I stumbled upon another cesium user who had a very similar issue and he was able to find the problem and also a temporary solution - The root cause is a null-pointer crash in the Cesium plugin’s Gaussian Splat subsystem. The crash happens in CesiumGaussianSplatSubsystem.cpp at line 236, inside the subsystem’s Tick function. The code grabs the world pointer with GetPrimaryWorld() and then dereferences it without checking whether it’s valid. On an nDisplay render node the primary world isn’t valid at the moment Tick fires, so it reads an invalid address and the node throws an EXCEPTION_ACCESS_VIOLATION and shuts down. The reporter patched it inside his own project build, but as he noted, that isn’t a great long-term solution. To do this you need a source build of the Cesium for Unreal plugin rather than the prebuilt Marketplace/Fab binary, which you can’t edit.

However! I found that v2.22 does not have the Gaussian Splat subsystem so I reverted back to cesium v2.22 from the github and deleted the recent fab version from my project and it was able to launch without issue.

So if anyone out there is having this same issue, its the G Splat subsystem causing this very odd bug, revert back to v2.22 or below and you should be good to go