Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

About the transform matrix and the coordinate frame in 3D Tiles #286

Closed
caohaoze opened this issue Feb 14, 2018 · 3 comments
Closed

About the transform matrix and the coordinate frame in 3D Tiles #286

caohaoze opened this issue Feb 14, 2018 · 3 comments

Comments

@caohaoze
Copy link

I have been studying the mechanism of placing tiles in 3D Tiles definition. And I have some ideas about the matrix(or the coordinate frame).
I have been thinking where the matrix place if the glb in b3dm is just in local coordinate frame. At first, I think the matrix should be placed at Feature Table of b3dm where the BATCH_LENGTH is, such as {"Local_Coordinate_Frame" : [Xx, Xy, Xz, 0, Yx, Yy, Yz, 0, Zx, Zy, Zz, 0, RTCx, RTCy, RTCz, 1]}(if it is an identity matrix, this can be omitted). But it may improper to put it here. So i have a thought to add a extension named "Cesium_LCF" to the glb in b3dm instead of Cesium_RTC.
Create a new extension in glTF to implement the glb(at the local coordinate frame) in b3dm to transform to the surface of the earth(at the whole coordinate frame). Here I want define a extension named "Cesium_LCF"(LCF, Local Coordinate Frame), which is similar to "Cesium_RTC" but is much stroger than that. "Cesium_LCF" is equivalent to add a rotate_translate matrix(4x4) while "Cesium_RTC" is equivalent to add a translate matrix(4x4). The setting of "Cesium_LCF" is adding the matrix(4x4)(an array contains 16 elements) to the extensions of glTF and Cesium need to implement resolving this extension in glb in b3dm, just like "Cesium_RTC". With this setting, matrix in the {tileset.json} is not needed and Cesium can load b3dm depend on b3dm itself. Other modeling software(3ds Max etc. whose target is at the local scene) do not need to resolve "Cesium_LCF" and they can create, load, edit glTF or b3dm in local coordinate frame just like ArcScene(ArcGIS).
The aim of the whole thought I have mentioned is to separate the LCF matrix from the index file(tileset.json) and the model file(glb in b3dm). Is it easy that placing the matrix to Feature Table and letting Cesium to implement moving the glb? Or create the extension of "Cesium_LCF"?
It is emphasized that this thought is just for the application of buildings. If a tileset is represented as BIM, for example, it will be better I think to place the matrx at tileset.json. In this case, 3D Tiles is not used to represent geo-spatial feature dataset in large space so it can do as their own BIM design structure. I think more discussions by people from different professions and applications can make things more reasonable.
@pjcozzi @lilleyse

@lilleyse
Copy link
Contributor

I'm on board with something like CESIUM_LCF (local coordinate frame) going in the feature table. It might just replace CESIUM_RTC.

CC #263.

@caohaoze
Copy link
Author

I am looking forward to it. haha

@lilleyse
Copy link
Contributor

Coordinate systems in 3D Tiles are being discussed in #504 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants