CesiumGS / CesiumGS/cesium-native
Retain highest detail setting
- Dominant language
- C++
- Stars
- 623
- Forks
- 277
- PR merge metrics
- No merged PRs in 30d
Description
### Problem or user concern
When using Cesium Native implementations like Unreal or Omniverse, a common use case is to use these apps to capture high resolution, high production quality visualisation content such as flythrough videos of built environment projects. Cesium is great for providing context terrain and photogrammetry data, however the streaming nature of the data presents several potential issues:
- Visual popping artefacts in the final video as meshes transition between different detail levels. This is usually acceptable for real-time usage, however in production quality renders it is not desirable.
-- Often increasing level of detail can somewhat minimise, but does not resolve this, and can result in extreme resource usage, slower captures, or crashes.
- Errors in the capture due to connectivity or other issues - eg. leave a render overnight for several hours, review the render only to find it has not completed due to internet errors preventing download of data mid-capture
- Slow capture times due to needing to download data each frame
- Capture tools built into applications not designed to wait for Cesium data to finish loading completely before capture
I have mitigated these on *some* captures by flying to my area of interest, adjusting detail levels, letting data load and then enabling "Suspend update". This will then leave the tileset in a loaded state that suits my capture. The outcome is a much faster capture, no popping, and no connectivity related issues.
However, this only works for certain types of videos that focus on a single area (eg. Orbit) and not great for captures with large amounts of movement through the scene (flythrough)
This got me thinking about the following feature:
### Requested feature
It would be great to have a "Retain highest detail" setting, which would basically load leaf tiles as normal to the appropriate level of detail, however once a leaf tile had loaded to a higher detail level, it would never "unload" back to lower detail levels while this setting was enabled.
This way, the user could effectively "pre-load" areas of a tileset to certain levels of detail that match their requirements. The workflow could be simply playing back their camera animation path, triggering the tileset to load to detail levels appropriate to all the camera positions on that path.
The user would then capture the video with none of the above issues.
This would also open up opportunities for integration of Cesium Native into 3D rendering applications such as 3DS Max, where real-time is less of a use case, but high quality rendering is.
Contributor guide
Assessment
This issue has not been assessed yet.