Skip to main content

Hi,

I'm a Master's student using FME Workbench for my thesis project, and I'm using the Cesium 3D Tiles writer to convert CityGML files into Cesium 3D Tilesets. I am curious how the writer determines which features should go into which tiles? The Cesium 3D Tiles spec states that tiles are loaded roughly by distance to the camera; however, when I convert a large CityGML dataset to a 3D Tiles dataset, the writer scatters features over a large geographical area rather than clustering them together based on spatial location.

I was also wondering how the writer calculates the bounding volume property of 3D tiles, as the bounding volume shows up as a very large box tilted at an angle. I would appreciate any insight anyone might have on how the 3D Tiles writer determines bounding volumes and how it determines which features are assigned to which tile.

 

Thanks!

Right now the cesium writer has a somewhat cryptic approach to writing tiles. Roughly speaking, it tries to build the tiles dynamically, filling them one feature at a time. If a feature is too far away, it starts a new tile for that feature. It keeps filling the tiles with 'close' features until it reaches the max feature per tile number. One of the problems is that it does this in geocentric coordinates. That is why the bboxes of the tile look like they are jutting through the earth's surface at odd angles, depending on the latitude.

We recently implemented an I3S writer and in this process developed more of a quad and oct tree approach to writing 3d tiles which we are working to optimize. Once we are happy with the I3S writer, we plan on revising the Cesium writer to make use of these lessons. In the mean time you can try reducing the number of features that you write per tile, as set by the writer parameter. You could also try computing the centroid of every feature and then sorting your features by the x and y of that centroid. That might make it easier for the writer to group features closer together.


Reply