CZML data source - GTLF model disappears a certain camera angles

Hi all

I am seeing my model disappears at certain camera angles when it is close to the ground. I’ve read related posts about similar problems with 3Dtiles


pointing the problem to be the bounding volume. Is it possible to change the bounding volume of a gltf file?

I also tried to set debugShowBoundingVolume: true in the model, but the boundingVolume does not show.

Here is a zip of a screen recording
model disappears.mp4.zip (2.5 MB)

My CZML

[

{
  id: "document",
  name: "CZML Path",
  version: "1.0",
  clock: {
    interval: `${begin}/${end}`,
    currentTime: begin,
    multiplier: 1,
  },
},
{
  id: "path",
  availability: `${begin}/${end}`,
  debugShowBoundingVolume: true,
  path: {
    material: {
      polygon: {
        color: {
          rgba: [255, 0, 255, 255],
        },
      },
    },
    width: 2,
    leadTime: 1,
    resolution: 1,
  },
  model: {
    id: "airplane",
    gltf: "./Cessna_172.gltf",
    debugWireframe: true,
    color: Cesium.Color.RED,
    debugShowBoundingVolume: true,
    nodeTransformations: {
      RootNode: {
        rotation: {
          unitQuaternion: [0, 0.7071, 0, 0.7071],
        },
      },
    },
  },
  viewFrom: {
    cartesian: [70, 20, 30], //
  },
  position: {
    interpolatitudeionAlgorithm: "LAGRANGE",
    interpolatitudeionDegree: 1,
    cartographicDegrees: [....],
  },
  orientation: {
    unitQuaternion: [....],
  },
},

];

Thanks in advance.

The bounding volume issue shouldn’t apply here if you’re loading your model directly as a glTF, and not as a 3D Tileset I believe.

Are you able to share a Cesium scene with this model? You can upload it (along with the CZML) to your Cesium ion account and then share a link here. See: https://cesium.com/docs/tutorials/import-3d-models/

Hi @omar, myself and @Emanuel_Herrmann have looked a bit deeper into this issue after the Christmas break and been able to reproduce this from the sandcastle code playground.

We were able to replicate the bug with both our own model and the model from the sandcastle. After this we tried hard coding the altitude to 0 in the datasource and found the issue was resolved, this lead us to log out the terrains metadata with sampleTerrainMostDetailed(terrainProvider, positions) and we think that the terrain tiles at in that area are rendering at a different hight that the metadata is reporting which is around 22 meters below sea level.

Sandcastle: https://tinyurl.com/y6t4onyd

Hi @omar, have you been able to take a look at this? Many thanks :slight_smile:

The altitude in the datasource may have been sampled with respect to Cesium World Terrain. If you add the following line to the viewer constructor…

  terrainProvider: Cesium.createWorldTerrain()

…the Cesium aircraft’s altitude looks around 0.

It looks like you might also be running into this issue: Depth plane causing clipping artifact · Issue #7879 · CesiumGS/cesium · GitHub.

Hi Dzung,

Thanks for your answer. I just add terrainProvider: Cesium.createWorldTerrain() to the sandbox. Now I can see half of the 3D model showing up, but half is still under the ground as the screenshot. Do we still miss something?

Thanks,

Tao

It could be that the origin of the aircraft is at its center, so the height being 0 means that half of the aircraft should be underground.

Hi @dzung,

I believe this PR - Fix for clipping and camera navigation issues below ellipsoid will fix our issue.

But I don’t see @omar or any Cesium staff review this PR for over 4 months. Could you follow up and let us know the progress, please?

Cheers,

Tao

1 Like

+1 for more info on this please

I have pushed for the PR to be assessed and merged.

1 Like

Hi Dzung, can you please provide an update on the status of the fix?

1 Like

Hi @dzung any update on this ticket? Is there something blocking this from being merged?

Hi all. Sorry for the delayed response. I am checking in with our team on the status of the PR.

I have posted an update in the PR.