loading multiple entities through CZML causing very poor rendering performance

188 views
Skip to first unread message

Muhammad Usman

unread,
Jul 1, 2016, 1:09:35 AM7/1/16
to cesium-dev
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). 

Muhammad Usman

unread,
Jul 1, 2016, 4:30:27 PM7/1/16
to cesium-dev
Never mind!

Figured it out. It's the "Path" in the data set with resolution=3 which was eating all the performance. Thanks to this: https://groups.google.com/d/msg/cesium-dev/hu_J2jqpLnI/bt7bIrAMBAAJ
Reply all
Reply to author
Forward
0 new messages