3d Tiles not rendering when "Maximum Screen Space Error" is lower than 8

Hello,
I’m having an issue with Cesium in Unreal. I’m trying to render out an animation with Movie Render Queue, but I’d like to lower the option “Maximum Screen Space Error” to get a better mesh quality. The problem is that if I go too low the tiles won’t render anymore.
With the default 16 is fine, and with 8 as well. I tried with 4 and 2 because the quality you get from these values is really nice, but then the tiles won’t load in the render, only in the viewport.

It seems like a timing issue, so the rendering process doesn’t wait for the tiles to load before starting. Is there a way to increase this “waiting time”. In my case I don’t care even if it take 20 minutes to load the tiles before rendering.

Thank you,

Enrico

As I just mentioned in another thread:

This has been asked many many times recently. Lots of details in this thread:

The first step is make sure that your level sequence is in your level, not just an asset. If that doesn’t solve the problem, we need your help to figure out what is different about your workflow, as Cesium for Unreal is supposed to (and does in our tests) wait for all tiles to load before snapping each frame.

Hi Kevin,

thanks for replying. Yeah I saw that post, and the Level Sequence was added in the same way, from the toolbar, and it’s in the level.

If I use the Play in New Editor Window it works, meaning that all the tiles are loaded correctly, after awhile.
I thought it could be an API requests limit but it’s not.
I also tried rendering with either Render (local) or Render (Remote), and with or without the PolygonRasterOverlay, even with a really small area, but I get the same problem, below 6 it doesn’t load the tiles.

The setup is pretty simple:

  1. Add Blank 3D Tiles Tileset
  2. Set coordinates
  3. Add SunSky
  4. Add Level Sequence from toolbar
  5. Add Cine Camera Actor to Level, then to Level Sequence
    In the render settings I added the Anti-Aliasing and Game Overrides.

I tried with the Sample project, Map 12 with the Googleplex, but I get the same problem.

Thanks @enrico.lapponi, this helped track down the problem, and I’ve opened a PR to fix it:

I believe it’s fairly specific to the Google Maps Photorealistic 3D Tiles, with a quirk of that tileset exposing a bug in the selection algorithm.

Our CI system is building a version of Cesium for Unreal with this change now. You should be able to find a build on this page shortly, if you want to try it out ahead of release:

2 Likes

Hi @Kevin_Ring this sounds like the same issue I just posted about. Glad to hear it’s being resolved. Just curious, how long before the update will be available? will that be version 1.28.1 when it releases?

It will be included in the release at the beginning of August, which will likely be numbered v1.29.0. But you can try it today by grabbing a build from here and manually installing it under your UE Engine/Plugins/Marketplace directory:

edit: I originally wrote above that it will be available at the beginning of September. I meant to say August, and have corrected it.

Hi @Kevin_Ring, I’ve tried the new build and it works with " Maximum Screen Space Error" set to a value lower than 6, I tried 4 and 2. All the tiles all loaded before the rendering starts.

With a value of 2 it takes a bit of time to load, and in a few cases the first frames don’t load all the tiles, but in that case the simple workaround is to start the sequence earlier.

I’ve only tested the build for UE 5.2 for Windows (CesiumForUnreal-52-windows-v1.28.0-82-gd82b3676), but I imagine it will work for other engine versions and platforms.

Thanks again for the quick support.

in a few cases the first frames don’t load all the tiles, but in that case the simple workaround is to start the sequence earlier.

So it’s loading some of the tiles, but not all of them? That’s pretty strange, and might indicate there’s still (another) problem. If you can help me reproduce that I can investigate.

Hi Kevin, I’m sending you a zip file with the first 3 frames of the clip, located in Milan (Italy) where not all the tiles are loaded, and the screenshots of the Movie Render Queue while it’s rendering, plus a screenshot of a warning coming up in the log just before all the tiles are loaded.

As mentioned before, this issue doesn’t happen all the time. For example in a different shot, located in Rome, all the tiles were loaded correctly before the first frame.
In both cases I didn’t use the PolygonRasterOverlay.

The scene setup is the same as before, the only difference is the value in the “Maximum Screen Space Error”; I’ve only tried with a value of 2.

CesiumUnreal_TilesLoad_Error.zip (2.1 MB)

Thanks @enrico.lapponi. I can see the problem in your captures, but I’m not able to reproduce it. Just to be clear, this is with the fixed build that I mentioned above, right?

Hi Kevin, yes I’m using the fixed build you posted (CesiumForUnreal-52-windows-v1.28.0-82-gd82b3676 ). The issue is not constant. I have a project with shots in different locations, each with different cameras. Right now this issue happened only in one of the locations with one of the cameras.

So, could it be something related to the data streamed from Google, rather than an issue with Cesium?

I think it’s more likely there’s still a lingering bug in the selection algorithm or in the code that’s meant to wait for all tiles to load before snapping a frame. Any further advice you can offer for reproducing it would be appreciated! Am I right in thinking that the problem can be worked around just by having a longer warm-up period, at least?

The workflow I used to create the scene is the same one as before, I’ve only changed the Cesium plugin with the updated version.

I tried to enable the option “Render Warm Up Frames” from the render settings and it seems to have solved the issue with the first frame not loading all the tiles. But apparently it’s not always needed because in other locations all the tiles were loaded correctly even without the option in the render settings.

Just in case, adding one more frame in the sequence ensures the tiles are loaded.