CesiumGS / cesium-unreal

Bringing the 3D geospatial ecosystem to Unreal Engine
https://cesium.com/platform/cesium-for-unreal/
Apache License 2.0
953 stars 297 forks source link

Compare CesiumJS vs Cesium for Unreal Streaming Data Usage #113

Open shehzan10 opened 4 years ago

shehzan10 commented 4 years ago

We would like to get as close as possible to an apples-to-apples comparison on the amount of streaming data used for a similar application/camera flight in CesiumJS and Cesium for Unreal.

This is to validate whether one engine is streaming more data over the other. For example, does CesiumJS more mature algorithm (skip LOD etc) provide a benefit in the amount of data streamed? Does the camera/viewport in Cesium for Unreal request more data?

We want to assess all data streaming - 3D Tiles, Cesium World Terrain, and Bing Maps Imagery to start.

This will allow us to add information in white papers/communication materials that mentions how/why data streaming may or may not be different and how the roadmap may influence that.

@kring Let me know if you have any questions about the comparison.

mramato commented 4 years ago

Something to consider: Does the Unreal implementation follow standard browser caching rules across runs? If not, Unreal is going to use significantly more data over time than CesiumJS.

Of course if the idea is to only get information comparing a single fresh flight of CesiumJS vs a flight in Unreal, then this doesn't matter (but is less relevant)

kring commented 4 years ago

No caching on disk yet, so at the moment Cesium for Unreal will definitely stream more data. The goal, of course, is for it to be the same or better than CesiumJS on this front. But there are a few (good) reasons Cesium for Unreal will stream more even once it's well-optimized:

pjcozzi commented 4 years ago

@kring interesting points.

@shehzan10 @kring let's brainstorm this one at the roadmap meeting tonight / this morning.

kring commented 4 years ago

Should we default to 90 FoV?

We can recommend a narrower FoV, and use it in our examples, but fundamentally that's an Unreal Engine setting that we don't control.

How much of a difference does browser resolution scaling make?

It depends on the computer. On my laptop, for instance, the scale is 2.0 which means twice the pixels in each direction or roughly 4x the tiles. Using native resolution will drastically increase the quality, too, though. CesiumJS's scaled default looks pretty terrible on a high res display.

lilleyse commented 4 years ago

Cesium for Unreal runs at native resolution by default, there's no browser resolution scaling.

In CesiumJS screen space error is defined in CSS pixels rather than actual pixels so it will load the same number of tiles regardless of pixel density. Should we do the same in Unreal? Assuming we can get access to the OS device pixel ratio.

shehzan10 commented 4 years ago

Offline discussion from the sync up: