Hi Cesium,
I have noticed a difference in performance for different pitches when the maximumScreenSpaceError is low (e.g. 1 or 4/3).
The top-down view has a lower frame rate than the 45 degrees view (10 to 15% difference). It also seems as if the tile loading is slower.
With the maximumScreenSpaceError set to 2 this does not happen (or it is not visible).
I am not sure if this behaviour is expected. Compared to 45 degrees, the camera footprint for top-down is smaller but you need higher level tiles.
The sandcastle below demonstrates the issue, use the dropdown to change the pitch. You need to use full screen 1920x1080) to see the effect.
Thanks, Willem
var viewer = new Cesium.Viewer(‘cesiumContainer’, {
timeline : false,
animation : false,
targetFrameRate: 21,
geocoder: false,
homeButton: true,
infoBox: false,
baseLayerPicker: false,
navigationHelpButton: false,
sceneModePicker: false,
scene3DOnly: true
});
var scene = viewer.scene;
var tileEventCount = 0;
scene.debugShowFramesPerSecond = true;
scene.globe.tileCacheSize = 8000;
scene.globe.maximumScreenSpaceError = 1.0; // 4/3 or 2.
scene.globe.tileLoadProgressEvent.addEventListener(function (event) {
if (event === 0) {
console.log(“all tiles loaded”);
tileEventCount = 0;
}
else {
tileEventCount++;
console.log(“tile-queue: " + event + " tileEventCount=” + tileEventCount);
}
});
var pinBuilder = new Cesium.PinBuilder();
var bluePin = viewer.entities.add({
name : ‘Blank blue pin’,
position : Cesium.Cartesian3.fromDegrees(7.28705666666667, 43.6935516666667),
billboard : {
image : pinBuilder.fromColor(Cesium.Color.ROYALBLUE, 48).toDataURL(),
verticalOrigin : Cesium.VerticalOrigin.BOTTOM
}
});
var options = [{
text : ‘Change Camera pitch’
},
{
text : ‘45 degrees’,
onselect : function() {
var heading = Cesium.Math.toRadians(0.0);
var pitch = Cesium.Math.toRadians(-45);
var promise = viewer.flyTo(bluePin, {
duration: 10,
offset: new Cesium.HeadingPitchRange(heading, pitch, 1000000)
});
}
},
{
text : ‘Top Down’,
onselect : function() {
var heading = Cesium.Math.toRadians(0.0);
var pitch = Cesium.Math.toRadians(-90);
var promise = viewer.flyTo(bluePin, {
duration: 10,
offset: new Cesium.HeadingPitchRange(heading, pitch, 1000000)
});
}
}];
Sandcastle.addToolbarMenu(options);
``