cesium-native
cesium-native copied to clipboard
Add i3dm support
Adds support for the Instanced 3D Model format. We transcode each i3dm tile into a gltf with the EXT_mesh_gpu_instancing extension.
Main Changes:
- Added the auto-generated Gltf reader/writer classes for the
EXT_mesh_gpu_instancinggltf extension. - Added
Instanced3DModelContentto transcode i3dm intoEXT_mesh_gpu_instancing. - Changed
TileContentLoaderinterface to take anAsyncSystem,IAssetAccessor, and request headers in addition to theTileContentLoadInput. Tile content loading can now happen asynchronously, so the loaders now return aFuture<unique_ptr<TileContentLoadResult>>. - Made significant rearrangements in
Tileto allow the content loading to happen asynchronously, this rearrangement should be checked for multi-threading-correctness.
TODO:
- Transcode scale buffer as well.
- Transcode quantized positions/normals, non-uniform scaling, and any other possibilities in i3dm.
- Determine if
EXT_mesh_gpu_instancingis sufficient to represent i3dm while still being compliant. - Remove
RTC_CENTERfrom the gltf.extras by factoring it into the top level node transforms in the gltf (as is being discussed here: https://github.com/CesiumGS/cesium-native/issues/289).
Copied from Slack:
@lilleyse brought up that i3dm and the EXT_mesh_gpu_instancing have slightly conflicting transform orders, particularly:
I3DM:
tileTransform * instanceTransforms[i] * nodeTransform * vertexPosition
EXT_mesh_gpu_instancing:
tileTransform * nodeTransform * instanceTransforms[i] * vertexPosition
This comes from the fact that the extension attaches to the node and expects the node's mesh to be the thing that's instanced. Since i3dm instances the entire gltf model, I was hoping I could just give each node the same instance attributes through the extension and it would work. But since the extension defines a conflicting transformation order, I think it would be noncompliant to use it for i3dm. Has anyone here thought about what other gltf extensions could correspond to i3dm, might it be reasonable to write a new similar extension that attaches to the gltf model instead of the node?
Also from Slack:
might be weird but could you bake everything into the instance matrix? -@lilleyse
If there was just a single node that might work, multiplying the node transform into instance transforms and then setting the node transforms to identity. But the instance transforms may need to be used across several nodes, each with its own transform right?
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
https://github.com/CesiumGS/cesium/pull/10302 has a diagram showing the difference in transformation order between i3dm and EXT_mesh_gpu_instancing.
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
Thanks again for your contribution @nithinp7!
No one has commented on this pull request in 30 days. Maintainers, can you review, merge or close to keep things tidy?
I'm going to re-bump this in 30 days. If you'd like me to stop, just comment with @cesium-concierge stop. If you want me to start again, just delete the comment.
I'm going to close this PR (but keep the branch) because it looks like this PR is using the old content architecture, and a lot has changed since then. We'll try to revisit this in the future.