z order in a Columbus View

I’ve observed that using a COLUMBUS VIEW the drawing order of the entities is not deterministic. Depending on the zoom level, the entity is drawn in a different order. See the following example:

var viewer = new Cesium.Viewer(

``
‘cesiumContainer’,

{

    sceneMode: Cesium.SceneMode.COLUMBUS_VIEW          

}

);

viewer.entities.add({

name : 'Red line on the surface',

polyline : {

    positions : Cesium.Cartesian3.fromDegreesArrayHeights(

        [

            -75, 0, 10,

            -80, 0, 10

        ]

    ),

    width : 5,

    material : Cesium.Color.RED

}

});

viewer.entities.add({

position : Cesium.Cartesian3.fromDegrees(-77.5, 0, 9.5),

billboard :{

    image : '../images/Cesium_Logo_overlay.png'

   

}

});

There are two entities, a red line and a billboard. The Z coordinate of the line is 10 and the Z coordinate of the billboard is 9.5. If you load the example in the SandCastle will observe that depending on the zoom level, the drawing order changes.

I’ve seen in other old posts that I can use the eyeOffset attribute but, if I’m in COLUMBUS VIEW, why I need to define an offset? I suppose that I’m misunderstanding something…

Regards,

Jorge

Hello Jorge,

Thanks for providing a code sample! It looks like the problem you are seeing is related to this known issue: https://github.com/AnalyticalGraphicsInc/cesium/issues/2130

I’ve linked your forum post to the issue so when someone looks into the problem, they’ll make sure your example is fixed too.

Best,

Hannah

Hi Jorge,

Thanks again for the report and example code. #4886 was just merged and will be in Cesium 1.30 next Tuesday.

With this change, your example has much fewer artifacts. Given that the height values are so close, it would still be useful to apply a small eyeOffset.

Patrick