Hi everyone,
I am working on an application to render multiple entities (i.e. average of 500). I am loading the entities from a CZML file. Each entity has an array of positions with thousands of position entries in it and I am interpolating the entity over these positions. This works fine for fewer entities i.e. 10 - 15 entities. My ultimate aim is to render ~500 entities but system is showing super poor performance with even 50 entities. Loading part is working good but the movement/interpolation of entities over their corresponding positions is deadly slow and lagging a lot. Any thoughts on how can I achieve high rendering performance?
Here is my CZML file:
[
{
“id”:“document”,
“name”:“test_document”,
“version”:“1.0”
},
{
“id”:“1”,
“name”:“Entity-1”,
“description”:“some info”,
“point”:{
"color":{
"rgbaf":[
1,0,1,1
]
},
"outlineColor":{
"rgbaf":[
0,0,0,1
]
},
"outlineWidth":2,
"pixelSize":4,
"show":true
},
“path”:{
"width":1,
"trailTime":7969,
"leadTime":0,
"show":false
},
“position”:{
"referenceFrame":"INERTIAL",
"epoch":"2016-06-30T00:00:00Z",
"cartesian":[
thousands of positions....
]
}
},
{
// for entity 2
},
{
// for entity 50
}
]
``
This is how I am loading the CZML:
var promise = new Cesium.CzmlDataSource.load(‘data.czml’);
var _dataSource;
promise.then(function(dataSource) {
_dataSource = dataSource;
``
viewer.dataSources.add(dataSource);
``
//Get the array of entities
var entities = _dataSource.entities.values;
for (let i = 0; i < entities.length; i++) {
let entity = entities[i];
entity.point.pixelSize = new Cesium.CallbackProperty(function(time,result){
updatePointSize(entity.name, function(size){
sizes[entity.name] = size;
});
return sizes[entity.name];
}, false);
}
});
``
``
Any thoughts on how to improve the rendering performance? I am wishing to see a smooth simulation (interpolation) of points. This behavior is working well with fewer entities (i.e. with 10 - 15 points) but not for ~50 entities (points). And my ultimate hope is to achieve this smooth fast rendering (interpolation/simulation) for around ~500 entities (points).