I’m learning how to make 3D tilesets for some of my datasets. I was able to successfully load my facetized geometry into Ion using a “box” BV that reflected the bounds of the underlying glTF and then I added a transform to the tileset to place it in the correct geographic location using Cesium.Transforms.eastNorthUpToFixedFrame()
. But long term, I want my tilesets to be geolocated to begin with and not have the app code (local instance of Ion in this case) need to relocate it. For that, it seems like I should be using a “region” BV. So I did that and with the debug volumes displayed it appears that my volume is in the right location without needing the app level tile transform (as expected). However, the tile content is not getting displayed. So I must be missing something. Do I need to bind the region to the local cartesian coordinate system in the glTF? I assumed that maybe there was an implied East-North-Up convention or something that would handle something automatically. It seems stright forward, but all my reading isn’t showing me the way.
Problem solved. It appears that I do need to use a “transform” to explicitly transform my glTF content into the geoframe. I mistakenly assumed that their might be a default transform to take you from global to local coordinates within a given region. For example, it maybe assume East-North-Up and that the south west corner would automatically correspond to the local glTF origin. I could have sworn I tried adding my own explicit transform and it didn’t work, but I just circled back this this and it did.
In hindsight, it makes just as much sense to not assume a default transform for any of the bounding volumes.
See Omar’s comment in another thread to basically states the requirements for bounding volumes and the underlying content.
A recent thread where the issue was similar: Implicit tiling file format help - #8 by Marco13
Relevant points may be:
- The
tile.transform
is applied to the geometry (i.e. to the glTF data) - The
tile.transform
is also applied to a boundingbox
orsphere
- The
tile.transform
is not applied to a boundingregion
(The latter simply because a bounding region cannot sensibly be transformed with a 4x4 matrix…)
Maybe this can be made clearer or pointed out more explicitly in the specification…