Disappearing features with Implicit tiling

When using implicit tiling and geometries that span multiple tiles, it can happen geometries ‘disappear’ when the tile containing the geometry is outside the camera view.

See for example: https://bertt.github.io/cesium_issues/long_lines/implicit/

implicit_tiling_large_Geometries.gif

Workaround is to not use implicit tiling but explicit tiling https://bertt.github.io/cesium_issues/long_lines/explicit/

implicit_tiling_large_Geometries_explicit.gif

What would be the correct way to use implicit tiling and large geometries? I’m thinking of a reshuffle of the geometries (so geometries that span multiple tiles will go to higher z level or so). Or maybe there is something in Implicit Tiling (like Metadata semantic TILE_BOUNDING_REGION)? Is there a sample?

Update: Found a sample with metadata semantics cesium/Specs/Data/Cesium3DTiles/Metadata/ImplicitHeightAndRegionSemantics at main · CesiumGS/cesium · GitHub

I’ll have to look more closely at the structure of the tileset. From the description and appearance, it looks like the geometry is not fully contained in the tile bounding volume.

If this is the case:

The geometry must be be contained in the tile bounding volume. Or conversely, the tile bounding volume must enclose all contents.

(There’s a long-standing issue in the validator to check this, at Validate that geometry is fully contained in bounding volumes · Issue #233 · CesiumGS/3d-tiles-validator · GitHub )

What would be the correct way to use implicit tiling and large geometries?

Defining a new bounding volume for the tile with the corresponding tile metadata semantic may be one option. But this feels a bit dubious, particularly when the geometry does seem to be huge compared to the bounding volume that is implied by the implicit tiling structure.

The actual intention here would be to split the geometry into multiple parts, and put each part into the implicit tile. As such, this question sounds like it is related to the discussion around Implicit Tiling and HLOD - #4 by Marco13

(Splitting geometry like that is highly non-trivial, and does raise a million questions. What if the content is a 10 MB glTF file with an 8MB texture, and only one vertex of this glTF asset is contained in the bounding volume of the implicit tile? Yes, you have to create a glTF asset that contains this one vertex (and the respective triangles that are adjacent to that vertex), and see how you can avoid putting that whole 8MB texture into the glTF just to have these few triangles textured properly - you’ll have to do texture atlassing and compute new textures and texture coordinates. When creating tilesets from large input geometry, much of this has to be done anyhow, so any tool that is capable of sophisticated geometry processing will offer building blocks for that anyhow. But it’s not something that can just so be implemented from scratch…)

1 Like