Load 3d-tiles without rendering?

I have been watching the cpu-usage branch, it seems a great improvement! However, I am interested if it will be possible to have Cesium load 3d-tiles in background even if we are not rendering on screen?

I think we are encountering bottleneck in tile loading right now because rendering cycle is slower than network loading would be… so it limits the maximum tile loading speed. I hope cpu-usage improvement would address this also?

I tested the cpu-usage branch… overall it is a really good improvement! :slight_smile:

About loading time with models of 500+ tiles: cpu-branch as such does not really reduce tile loading time. But when I applied this kind of test, it reduced loading time by 30%!

var _requestTimer;

function callAfterRenderFunctions(scene) {

// Functions are queued up during primitive update and executed here in case

// the function modifies scene state that should remain constant over the frame.

var functions = scene._frameState.afterRender;

for (var i = 0, length = functions.length; i < length; ++i) {

functionsi;

if (_requestTimer)

clearTimeout(_requestTimer);

_requestTimer = setTimeout(function() {

scene.requestRender();

}, 3000);

}

functions.length = 0;

}

I am wondering why is that afterRender request there in any case? Is it really needed? I also tried removing it and it speeded up loading even more and I did not see anything breaking…

Hi there, thanks for the feedback!

If you skip the call to viewer.scene.primitives.add, you can load but not add the tileset. Since there is so many different type of requests happening in Cesium for terrain, imagery, tilesets, etc, we schedule and prioritize requests behind the scenes.

That reduced loading time is significant. Ideally we wouldn’t use setTimeout, but the idea still stands where we request another render frame a bit after a render cycle. We just merged the cpu-usage branch this morning, but I’ll take a look at this suggestion and see if we can incorporate it.

Thanks!

Gabby

I see the main problem here this way:

Current operation is:

Load tiles -> render&ask more tiles -> Load tiles -> render&ask more tiles …

… it would bne faster like this:

Load tiles -> ask more tiles -> Load tiles -> ask more tiles …

…and then, re-render for example once in 2 seconds, if no other changes has happened except tile loadings have finished.

I have been testing variations of this and it can lead to 70% speed improvement in tile loading!