Unable to draw 1000 entities? Is Cesium not capable of supporting this?


I want to draw 1000 entities (ellipsoid’s) based on 1000 random points each having a “name property” that I want to show up when I click on it, specifically in Cesium.

I am having a lot of issues. I notice when I attempt to load geojson with 1000 “point” features, and try to put ellipsoids, it appears I can’t add any ellipse or ellipsoid…

When I wrap a for loop with the contents having:

scope.entity.add({…position and ellipsoid content here…})

When I set:

for(var i = 0; i < 5; i++)

I see the ellipsoid’s show up.

When I do:

for(var i = 0; i < 200; i++)

I see the ellipsoids show up, but the material does not seem to be there (i just set a random color for the material)

When I do:

for(var i = 0; i < 500; i++)

Nothing gets rendered. I am very worried, can someone please show me what I am doing wrong?

Also to add, when using geojsondatasouce, I can draw 1000 billboards fine… its the ellipsoids that are not working.


The rendering time may be longer as you add more geometry (especially depending on the power of the video card on your computer), but Cesium should be capable of rendering many thousands of ellipsoids.

Can you paste a full code example? Maybe there’s an error.



Dunno if this will help (and I'm a Cesium newbie), but this Sandcastle code displays 3000 geometric boxes. You might try modifying it to use ellipses, then add labels, then use your json code, to discover where the problem occurs.

var viewer = new Cesium.Viewer('cesiumContainer');
var scene = viewer.scene;
var globe = scene.globe;
globe.depthTestAgainstTerrain = true;

var cesiumTerrainProviderHeightmaps = new Cesium.CesiumTerrainProvider({
    url : '//assets.agi.com/stk-terrain/world',
    requestWaterMask: true,
    requestVertexNormals: true

viewer.terrainProvider = cesiumTerrainProviderHeightmaps;

for(var iLp=0; iLp<3000; iLp++ ) {
    scene.primitives.add(new Cesium.Primitive({
        geometryInstances : new Cesium.GeometryInstance({
            geometry : Cesium.BoxGeometry.fromDimensions({
                vertexFormat : Cesium.PerInstanceColorAppearance.VERTEX_FORMAT,
                dimensions : new Cesium.Cartesian3(40000.0, 30000.0, 50000.0)
            modelMatrix : Cesium.Matrix4.multiplyByTranslation(
                Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(-111.0+iLp, (iLp/100))),
                new Cesium.Cartesian3(0.0, 0.0, 250000), new Cesium.Matrix4()),
            attributes : {
                color : Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.RED.withAlpha(0.5))
        appearance : new Cesium.PerInstanceColorAppearance({
            closed: true