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

ModelExperimental -> Model Roadmap #10346

Closed
21 of 51 tasks
j9liu opened this issue May 3, 2022 · 4 comments · Fixed by #10644
Closed
21 of 51 tasks

ModelExperimental -> Model Roadmap #10346

j9liu opened this issue May 3, 2022 · 4 comments · Fixed by #10644

Comments

@j9liu
Copy link
Contributor

j9liu commented May 3, 2022

One of the major items on the 3D Tiles Next Roadmap (#9520) is bringing ModelExperimental up to feature parity with Model, so that it can entirely replace it. In other words, we aim to remove the current Model class and any related files, and rename ModelExperimental to Model without any hiccups.

This issue goes into more detail than the overall roadmap and will be updated as necessary.

Remaining ModelExperimental Features

Important bugfixes

Lower-priority bugfixes

Testing

  • Ensure all models from glTF-Sample-Models load correctly with ModelExperimental
  • Ensure that tilesets load correctly with ExperimentalFeatures.enableModelExperimental set to true
  • Ensure that entities and CZML work with ModelExperimental
  • Go through the "category - gltf" label for any important lingering issues
  • Go through Sandcastles and make sure they work with ModelExperimental. See ModelExperimental Sandcastle Testing #10379

Files to remove

  • Model
  • ModelInstanceCollection
  • ModelAnimationCache
  • ModelAnimation
  • ModelAnimationCollection
  • ModelNode
  • ModelMesh
  • ModelUtility -- make sure it no longer needs to be used by ClassificationModel
  • ModelOutlineLoader
  • all related specs

Files to rename

  • ModelExperimental and related architecture
    • ModelExperimentalSceneGraph
    • ModelExperimentalNode
    • ModelExperimentalPrimitive
    • ModelExperimentalSkin
    • ModelExperimentalAnimationChannel
    • ModelExperimentalAnimation
    • ModelExperimentalAnimationCollection
    • ModelExperimental3DTileContent
    • ModelExperimentalType
    • ModelExperimentalUtility
  • Shaders
    • ModelExperimentalVS
    • ModelExperimentalFS
  • loadAndZoomToModelExperimental
  • all related specs
@lilleyse
Copy link
Contributor

lilleyse commented May 4, 2022

This is very exciting! Just a few more things to add from me:

  • glTF 1.0: Is the custom shader architecture flexible enough that it could allow glTF 1.0 models to still work? The main model we're concerned about is https://sandcastle.cesium.com/?src=3D%20Tiles%20BIM.html. It may not be easy to find a replacement. We need to put in a day or two to come up with a plan here.
  • If we decide to deprecate anything, it should be mentioned in the June release
  • Documentation sweep to make sure that everything marked @private should remain @private
  • We should consider setting tileset.enableModelExperimental = true by default so that we can start catching regressions early. We should test as many 3D Tiles datasets as we can find and allow for a couple weeks for bug fixes.
  • Re ModelUtility - it would be annoying to maintain two utility files. It might be worth updating ClassificationModel to use GltfLoader even though it's lower on the priority list.

@j9liu
Copy link
Contributor Author

j9liu commented May 5, 2022

Should we consider adding a url option to the ModelExperimental.fromGltf constructor? Model.fromGltf takes a url whereas ModelExperimental.fromGltf takes gltf, so this will break things when we make the switch from Model to ModelExperimental.

EDIT: this was done in #10371

@lilleyse
Copy link
Contributor

@j9liu yeah definitely. I got tripped up by this earlier today. Could you open a PR for that?

@j9liu
Copy link
Contributor Author

j9liu commented Jun 30, 2022

Going through the glTF 2.0 sample models, leaving notes where I see differences (excluding models with extensions we don't support):

Cube

Pretty subtle rendering difference, but it seems like the top of the cube rendered by Model (right) is more shiny than the cube rendered by ModelExperimental (left).
image

This doesn't have to do with the placement of the models in the scene; swapping their positions yields the same result (Model now on left):
image

Flight Helmet

The gold part of the model renders darker in ModelExperimental than it does for Model.

Model ModelExperimental
image image

Fox

The fox model renders brighter for ModelExperimental (left) than Model (right). This is even with image-based-lighting turned off.
image

EDIT: The below difference is because CesiumJS does not automatically generate normals for glTFs without them. #6506

It also seems like the model isn't shaded properly; it looks unlit, despite having normals. Here's an example of the model being shaded with normals in glTF-Sample-Viewer, without IBL:

image

Lantern

The emissive part of the model (the lantern) is less bright in CesiumJS than it is for glTF-Sample-Viewer.

glTF-Sample-Viewer ModelExperimental
image image

Morph Stress Test

Both Model and ModelExperimental crash trying to load this model with similar errors:
image

We're not required to support this many morph targets according to the spec, so it's not necessary to fix this.

Multi UV Test

Again, ModelExperimental (left) looks darker than Model (right):

image

Normal Tangent Mirror Test

EDIT: Fixed by #10507

When the normal maps are viewed from the back, the domes should appear concave, like they are pushed into the plane. But the front and back of the model look the same on ModelExperimental.

Model ModelExperimental
image image

Normal Tangent Test

EDIT: Fixed by #10507

Same issue as above.

Model ModelExperimental
image image

Simple Meshes

Another instance where ModelExperimental (left) is darker than Model (right):

image

Simple Morph

And then an instance where ModelExperimental (left) is brighter than Model (right):

image

This also applies for "Simple Skin" and "Triangle"

Simple Sparse Accessor

Sparse accessors are not yet supported in CesiumJS.

glTF-Sample-Viewer ModelExperimental
image image

Spec Gloss vs. Metal Rough

The water bottles rendered with both material types are darker for ModelExperimental (left) than they are for Model (right)
image

Texture Linear Interpolation Test

EDIT: This is meant to be broken for WebGL 1 according to the README of this sample model.

The spheres are about the same color for glTF-Sample-Viewer, but they are distinctly different for Model / ModelExperimental

glTF-Sample-Viewer ModelExperimental
image image

Texture Settings Test

EDIT: Fixed by #10507

The double-sided texture renders dark for ModelExperimental but fine for Model.

Model ModelExperimental
image image

Two-Sided Plane

EDIT: Fixed by #10507

The under-side of the plane isn't dark for ModelExperimental even though it is for Model.
image

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

Successfully merging a pull request may close this issue.

3 participants