Possible to pre-load large parts of a dataset to avoid obvious popping/LOD visual glitches?

Hello, I’m currently evaluating Cesium for use in producing linear, video content out of Unreal Engine. While the base functionality is amazing, a stumbling block I’m hitting is that the tile streaming is always very visually obvious, especially closer to the ground in urban areas. I’ve played around with disabling frustum culling and reducing the “Maximum Screen Space Error”, but I haven’t found settings that allow me to record a fluid video without tiles loading in very obviously. While I personally embrace the glitchiness, it’s tough for others too look past and can be distracting in a video.

Ideally, Cesium would have an option to preload chunks of a level or sublevel such that they are fully loaded at play-start at the highest resolution available. I understand this may be antithetical to what Cesium is made for (dynamically loading tiles), but this sort of feature really becomes necessary for those of us wanting to produce high-quality visual content.

The most relevant info I’ve found on the forum so far has been a post concerning potentially allowing users to download content for offline use: How to load maps offline - #3 by Shehzan_Mohammed

Any thoughts on how to alleviate this set of issues? Any updates on the ability to download chunks of the base Cesium dataset? Maybe I’ve missed some critical settings that could bring me closer to a smoother video outcome?

Any advice appreciated. I’m very grateful for this wonderful plugin!

Hello,

Are you capturing your videos live during play mode, or are you capturing them using Sequencer? Using Sequencer should result in tiles loading in fully before capturing each frame, and is recommended for recording smooth video. For high resolution renders, you’ll still want to turn the Max Screen Space Error as low as your machine will allow, and it may take some time to capture each frame.

If you need to capture videos live in play, it may be difficult to avoid tile pop-in. Some settings you can try to load tiles faster: (Please note that these settings could have a significant performance cost.)

  • In your tileset details>Tile Loading dropdown, try increasing Maximum Simultaneous Tile Loads. This will allow more tiles to load at once. Increasing this could dramatically decrease performance, depending on your machine.
  • The setting directly below this, Loading Descendant Limit, may also be of use, but results will likely vary based on your computer and your project. Increasing it or decreasing it may help with your problem - increasing it can make pop-in worse, but they may initially load more quickly, which could help if you are not recording right when you begin to play. On the other hand, decreasing it should make tiles load more gradually, which can reduce pop-in.
  • Another option can be found in the Tile Culling section - there’s a setting called Enforce Culled Screen Space Error. If you have Frustrum Culling disabled, you can set the Culled Screen Space Error to a suitable value and set Enforce Culled Screen Space Error to true. This should help with pop-in when turning around and viewing tiles that were recently out of view. Of course, this also results in a higher processing load, and you may encounter memory issues if the culled screen space error is low.

Let me know if any of these options help. Thanks for using Cesium for Unreal, and I’m glad to hear that it’s working well outside of this issue!

1 Like

I created an issue for your suggestion of preloading chunks of a level. It’s definitely worth further discussion, though it may not fit into our product roadmap in the end. If you have further information or suggestions about this idea, please add them there!

1 Like

Hi, thank you for your tips! Adjusting the Maximum Simultaneous Tile Loads helped a bit. The culling settings didn’t have much of an effect because for my particular scene I was looking at the same location throughout the extent of the recording, so I was never really taking advantage of culling. The other settings mentioned led to different results, but not really noticeably better results.

However, recording out of the Sequencer worked much better than attempting to record in play mode. Popping was still present, but much better.

Ideally there would be still be a way of preloading the highest-resolution chunks necessary such that no popping needs to happen, but short of that, recording out of the Sequencer seems to be best. The only other suggestion I can think of is that it would be less distracting if tiles would gradually fade in, instead of popping in, but I have no idea how this would be managed while taking into account varying camera speeds and focus distances.

Thanks for the help and for creating that issue for my suggestion!

I’m glad that I was able to help! Future improvements to the plugin should also ease this problem.

It would definitely be less distracting if tiles faded in rather than popping in. We’ve been discussing using dithering between different LOD levels - Improve transitions between tile LODs · Issue #508 · CesiumGS/cesium-unreal · GitHub. Of course, I’m sure there are other ways to achieve a similar effect, so if you stumble across any ideas please contribute to the issue!

Please let me know if you have any further questions.