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

3D Tiles Next CesiumJS Roadmap #9520

Open
53 of 80 tasks
ptrgags opened this issue Apr 30, 2021 · 4 comments
Open
53 of 80 tasks

3D Tiles Next CesiumJS Roadmap #9520

ptrgags opened this issue Apr 30, 2021 · 4 comments

Comments

@ptrgags
Copy link
Contributor

ptrgags commented Apr 30, 2021

3D Tiles Next adds several new, experimental capabilities to 3D Tiles. Currently, they take the form of extensions to 3D Tiles 1.0 and glTF 2.0. An overview of these specifications can be found in the 3d-tiles repository. See also the list of resources

This issue tracks the changes to CesiumJS and the implementation status for each.

3D Tiles Next Extensions - Initial Implementation

These features are now available as of CesiumJS 1.87.1

  • 3DTILES_implicit_tiling - experimental implementation in Experimental 3D Tiles Next Extensions #9517
    • Implement an Implicit3DTileContent, which transcodes implicit tiles to Cesium3DTile objects when the content loads. This naïve transcoder is similar in function Tileset3DTileContent (external tilesets).
  • 3DTILES_multiple_contents - experimental implementation in Experimental 3D Tiles Next Extensions #9517 - However, we found some caveats to the specification, in particular that there is no way to use contents that require mixed ADD/REPLACE refinement. This specification may be revised in the future
    • Implement Multiple3DTileContent
    • Add support for multiple contents in implicit tiling.
  • 3DTILES_metadata - experimental implementation in Experimental 3D Tiles Next Extensions #9517
    • Create classes for representing metadata concepts
    • Add tileset, tile, and group metadata to 3D Tiles 1.0 classes
    • Add tile and group metadata support to implicit tiling
    • Add group metadata support to multiple contents
    • Add Cesium3DTileFeature.getPropertyInherited() for CPU styling. Now the styling language will use tileset, tile, and group metadata
  • 3DTILES_content_gltf - experimental implementation in Experimental 3D Tiles Next Extensions #9517
  • (glTF) EXT_feature_metadata - in progress. This involves significant refactoring of Model.js (see more in the Other Improvements section below)
    • Create classes for representing feature metadata concepts
    • Create a parseFeatureMetadata() function for parsing the EXT_feature_metadata extension
    • Create a parseBatchTable() function to transcode the old batch table into the new feature metadata format. This includes some classes for compatibility with JSON properties and the EXT_batch_table_hierarchy extension.
    • Load feature metadata from a glTF via GltfFeatureMetadataLoader
    • Redesign Cesium3DTileBatchTable to use feature metadata. This will enable using feature metadata for styling.
    • Update Gltf3DTileContent to support feature metadata
  • 3DTILES_bounding_volume_S2 - in progress, see PR Adds support for 3DTILES_bounding_volume_S2 #9506
  • Custom shaders See roadmap issue basic implementation.

Additional Supporting Extensions

ModelExperimental Implementation Improvements

General Improvements

Custom Shaders Improvements

Pairity with the old Model.js

The intent of ModelExperimental is to someday replace the existing Model.js. Here are the critical steps to get it there:

Consider Deprecating

@ptrgags
Copy link
Contributor Author

ptrgags commented Nov 29, 2021

Updated and reorganized the roadmap. Many of the outstanding tasks have GH issues, I linked them where appropriate.

@lilleyse
Copy link
Contributor

lilleyse commented Nov 30, 2021

A few more I can think of right now

  • Allow dynamic model matrix updates to scene graph. This can be done before animations proper.
  • Support AGI_articulations
  • Custom shaders (taking some things from styling)
    • Use statistics in the styling language
    • Use min/max values of metadata properties for better color ramps
  • Remove all other glTF 1.0 extensions
  • Minimum pixel size Add minimumPixelSize to ModelExperimental #10081
  • Clean up the Spec/Data/Models folder. All the models should be deleted except those in the Specs/Data/Models/GltfLoader folder which can eventually move into the parent folder.
  • Debug wireframe but done correctly - 3D tile wireframe display is tangled #9066

And some comments

  • vctr transcode to ModelExperimental3DTileContent may not be in scope for this effort. Let's keep treating it as its own content type Vector3DTileContent. Let's see where the next iteration of vector tiles takes us first.
  • ClassificationModel - leverage GltfLoader but otherwise treat as a separate content type since it so heavily uses the vector engine
  • I think old batch table hierarchy is already supported...?
  • We may still be able to support glTF 1.0 as long as we have a runtime upgrade path that does not involve using KHR_techniques_webgl. This may involve changes in gltf-pipeline and won't work for all assets like the BIM tileset.

@lilleyse
Copy link
Contributor

lilleyse commented Jan 4, 2022

In addition to basic 2D/Columbus View support...

@ptrgags
Copy link
Contributor Author

ptrgags commented Feb 9, 2022

One thing to note is new issues about ModelExperimental have their own label of category - ModelExperimental

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

No branches or pull requests

2 participants