Understanding geometric error.

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

I’m a little lost on the whole concept of geometric error. I have read through the 3D Tiles specification on GitHub several times and I still can’t seem to wrap my head around it. I don’t understand how the geometric error, which is supposed to be defined in meters, is related to the screen space error, which is supposed to be defined in pixels.

Could I get some insight into how to approach geometricError? Is there a good metric to calculate it or do I just tinker with it using the 3D Tiles Inspector Mixin until I get the right result?

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

This is a small sample of my tileset:

{

“asset”: {

“version”: “1.0”,

“tilesetVersion”: “2019-07-22 17:00:00”

},

“geometricError”: 1024,

“root”: {

“refine”: “REPLACE”,

“boundingVolume”: {

“region”: [

-2.339584496045807,

0.37629161493001184,

-1.0863812085439954,

0.9165582275972561,

0,

20000

]

},

“geometricError”: 512,

“children”: [

{

“boundingVolume”: {

“region”: [

-2.3362284851067705,

0.7202958946347583,

-1.9985590970589064,

0.8680290985648369,

0,

20000

]

},

“refine”: “REPLACE”,

“geometricError”: 256,

“content”: {

“uri”: “LOD2-0,0.i3dm”

},

“children”: [

{

“boundingVolume”: {

“region”: [

-2.3362284851067705,

0.8103443993855003,

-2.256434257115052,

0.8533423349162942,

0,

20000

]

},

“refine”: “REPLACE”,

“geometricError”: 128,

“content”: {

“uri”: “LOD1-0,0.i3dm”

},

“children”: [

{

“boundingVolume”: {

“region”: [

-2.3362284851067705,

0.828387882758405,

-2.3187516211208803,

0.838394793007226,

0,

20000

]

},

“geometricError”: 64,

“content”: {

“uri”: “LOD0-0,0.i3dm”

}

}

]

}

]

}

]

}

}

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

I want an LOD system in my custom 3D Tiles pipeline.

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

Cesium 1.59, Windows 10, Google Chrome.

You can actually see how screen space error is computed from the geometric error here:

It’s essentially scaling it based on how much screen space the tileset is estimated to be taking up. So a tile may have a geometric error of 10, but it’s so far from the camera that you can’t notice this error, then it would have a screen space error of 0. So the idea is just projecting the geometric error onto the screen. With that said, it is largely an approximation (both the geometric error computed during tiling, and the projected screen space error computed at runtime). Getting better approximations for these I think is not an easy problem, but you may find some writing on this out there since it is not specific or unique to 3D Tiles.

I read the advice below for calculating geometric error. My tiles are pure terrain, I can easily find out total height from bounding box but biggest feature width is tricky/slow. Anybody has done that?

The geometric error can be computed however you like, but often a good estimate is finding 
the diagonal of the largest building/feature in the tile. 
In tileset.json a tile's geometric error will often equal the largest geometric error of its children.
https://github.com/CesiumGS/3d-tiles/issues/162