Issue with displaying glb

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

Hi, I have got a mesh (available here http://the.ndero.ovh/file/test.glb) with the following geometry (computed from meshlab)

Mesh Bounding Box Size 50.301025 38.867523 11.987793
Mesh Bounding Box Diag 64.688362
Mesh Bounding Box min -647.150513 -397.717010 1164.604736
Mesh Bounding Box max -596.849487 -358.849487 1176.592529
Mesh Surface Area is 1476.913086
Mesh Total Len of 101173 Edges is 23624.369141 Avg Len 0.233505
Mesh Total Len of 101173 Edges is 23624.369141 Avg Len 0.233505 (including faux edges))
Thin shell (faces) barycenter: -616.792358 -372.915894 1170.946899
Vertices barycenter -616.030273 -372.015015 1171.141113
Mesh is not ‘watertight’, no information on volume, barycenter and inertia tensor.
Principal axes are :

-0.248451 -0.302277 0.920272 |
-0.057258 -0.943818 -0.325469 |
0.966951 -0.133556 0.217185

The mesh is not displayed with cesiumjs. I guess this is an issue related to geometry, but I’m not sure how to fix it.

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

var Cesium = require(‘cesium/Cesium’);

require(‘./css/main.css’);

require(‘cesium/Widgets/widgets.css’);

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

infoBox : false,

selectionIndicator : false,

shadows : true,

skyBox:false,

shouldAnimate : true,

globe:false,

});

function createModel(url, height) {

viewer.entities.removeAll();

var position = Cesium.Cartesian3.fromDegrees(-123.0744619, 44.0503706, height);

var heading = Cesium.Math.toRadians(135);

var pitch = 0;

var roll = 0;

var hpr = new Cesium.HeadingPitchRoll(heading, pitch, roll);

var orientation = Cesium.Transforms.headingPitchRollQuaternion(position, hpr);

var entity = viewer.entities.add({

    name : url,

    position : position,

    orientation : orientation,

    model : {

        uri : url,

        minimumPixelSize : 1,

        maximumScale : 20000

    }

});

viewer.trackedEntity = entity;

}

createModel(‘output/Samples/test.glb’, 1000);

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

For display purpose.

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

1.60, MacOS, firefox

I think this may be a bug in CesiumJS since it seems to render correctly in the online glTF viewer. I opened a bug report with some more details here:

https://github.com/AnalyticalGraphicsInc/cesium/issues/8148

I also noticed it works if you upload it to Cesium ion to tile it as 3D Tiles, so whatever unusual property of the geometry here seems to get resolved when going through that pipeline.

Hi Omar,
Thanks for your answer. Actually I just found out that if I scale the geometry by 1000 with meshlab, then the cesiumjs display is ok.