-
Notifications
You must be signed in to change notification settings - Fork 3.5k
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
Support voxel tilesets containing glTF tiles using the EXT_primitive_voxels
extension
#12432
base: main
Are you sure you want to change the base?
Conversation
Thank you for the pull request, @jjhembd! ✅ We can confirm we have a CLA on file for you. |
@jjhembd do you mind also accounting for CesiumGS/3d-tiles#780? (still working on test data, but I'll get it to you ASAP) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @jjhembd! Could you please merge in |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is looking great @jjhembd! Just a few (hopefully) small comments, and then this should be good to go.
Thanks @ggetz, I think I incorporated all those comments. This should be ready for another look. |
Description
This PR updates
VoxelPrimitive
and related classes to support tilesets using the proposed update toEXT_primitive_voxels
.Along the way, the internal APIs were cleaned up and made more consistent with
Cesium3DTileset
, to prepare for work on #12297.Key code changes include:
VoxelProvider
interface always returns aVoxelContent
, rather than an array of metadata. This affects not justCesium3DTilesVoxelProvider
, but procedural data as well--see the Sandcastles for an example.VoxelContent
can now be constructed before the data is ready, via the asynchronousVoxelContent.fromGltf
method, and updated updated viaVoxelContent.prototype.update
. This makes it more similar toCesium3DTileContent
. For synchronous construction (e.g. with procedural data), useVoxelContent.fromMetadataArray
.VoxelTraversal
was refactored to use smaller functions that are structured more likeCesium3DTilesetTraversal
. For example,loadAndUnload
was broken intoselectKeyframeNodes
(similar toCesium3DTilesetTraversal.selectTiles
) andupdateTiles
. TheupdateTiles
loop is where we callVoxelContent.update
to process glTFs.Test datasets were also updated to the new format. Note that the tilesets in
Apps/SampleData/Cesium3DTiles/Voxel/
are a copy ofSpecs/Data/Cesium3DTiles/Voxel
.Issue number and link
Resolves #12368.
Related: #12297
Testing plan
Load the three Voxel-related Sandcastles and verify all datasets load and functionalities are unchanged.
Author checklist
CONTRIBUTORS.md
CHANGES.md
with a short summary of my change