Geoferenced GLTF model does not exactly match lat lon reference points

1. A concise explanation of the problem you’re experiencing.

I’m using a czml to display a set of points in cartographic degrees along a gltf georeferenced model. The model appears to be rendered correctly but the vertices do not exactly match the reference points. This is very noticeable when zooming in. I created a dummy example to illustrate the problem. The mismatch between the model vertices and the reference points can be seen in the attached screenshots. With other models I have been testing the model is also rotated with respect to the reference points.

The model data is in utm zone 10 coordinate system (I made it by transforming the wgs84 reference points to utm using proj4). I’m using a node transform to convert the z-up data to y-up as required in the gltf spec. In Cesium I’m locating the model on the globe with the position property of the czml entity that references my gltf model, I use the centroid of the model in WGS84 coordinates as the cartographic degrees position.

What do I have to do to make the model and the points match exactly?

Is there a preferred coordinate system I should use for this scenario?

Is there any way to use wgs84 directly in the gltf data?

2. A minimal code example. If you’ve found a bug, this helps us reproduce and repair it.

var czml = [{

“id” : “document”,

“name” : “CZML Model”,

“version” : “1.0”

},

{

“id”:“Point 1”,

“name”:“Point A”,

“position”: {

“cartographicDegrees”: [-122.37266385,37.82411625,10]

},

“point”: {

“outlineWidth”:1,

“pixelSize”:5

}

},

{

“id”:“Point 2”,

“name”:“Point B”,

“position”: {

“cartographicDegrees”: [-122.3709471,37.8215564,10]

},

“point”: {

“outlineWidth”:1,

“pixelSize”:5

}

},

{

“id”:“Point 3”,

“name”:“Point C”,

“position”: {

“cartographicDegrees”: [-122.36826735,37.82268672,10]

},

“point”: {

“outlineWidth”:1,

“pixelSize”:5

}

},

{

“id” : “Model”,

“name” : “Gltf model”,

“position” : {

“cartographicDegrees”: [-122.3704656010898475, 37.8228363356576978, 10.0000000000000000]

},

“model”: {

“gltf” : “triangle.gltf”,

“scale” : 1,

“minimumPixelSize”: 1,

“nodeTransformations”: {

“root”: {

“rotation”: {

“unitQuaternion”:[ 0, 0, 0, 1 ]

}

}

}

}

}];

var viewer = new Cesium.Viewer(‘cesiumContainer’, {

shouldAnimate : true

});

var dataSourcePromise = viewer.dataSources.add(Cesium.CzmlDataSource.load(czml));

dataSourcePromise.then(function(dataSource){

viewer.trackedEntity = dataSource.entities.getById(‘Point 2’);

}).otherwise(function(error){

window.alert(error);

});

The model used for the example is attached (triangle.gltf)

3. Context. Why do you need to do this? We might know a better way to accomplish your goal.

I want to display a georeferenced gltf model along some reference points I have in WGS84 coordinates.

4. The Cesium version you’re using, your operating system and browser.

Cesium 1.67

Ubuntu 18.04

Google Chrome Version 80.0.3987.106 (Official Build) (64-bit)

triangle.gltf (857 Bytes)