-
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
External tilesets are disallowed inside multiple contents #11960
Comments
I did have a short look at this. And I pragmatically created a test case:
multipleContentsExternal 2024-12-04b.zip Then, I simply commented out the check for external tilesets in multiple contents, and it works: Yay 🎉 But ... there is a flag Searching for this flag reveals several places where this is checked. Among them are things like this... /**
* @private
* @param {Cesium3DTileset} tileset
* @param {Cesium3DTile} tile
* @returns {number}
*/
function getPriorityReverseScreenSpaceError(tileset, tile) {
const parent = tile.parent;
const useParentScreenSpaceError =
defined(parent) &&
(!tileset.isSkippingLevelOfDetail ||
tile._screenSpaceError === 0.0 ||
parent.hasTilesetContent ||
parent.hasImplicitContent);
const screenSpaceError = useParentScreenSpaceError
? parent._screenSpaceError
: tile._screenSpaceError;
return tileset.root._screenSpaceError - screenSpaceError;
} Can I be sure that setting this flag to I can read more, and do more tests, but there's always the risk that I miss a case - like the one where the So if someone can say from the tip of the head of whether it's safe to simply allow external tilesets in multiple contents (and set |
@javagl Good point, this could have implications on tileset refinement, similar to the issue that came up here: #9356 I haven't thoroughly checked that the case you bring up here is safe to change, but I would start by looking through Cesium3DTilesetTraversal.js to confirm. |
@ggetz That thoroughness is the main difficulty when trying to address this. It might be that a bug shows up when one tile has two children of which one is empty and the other has two contents where one is a GLB and the other is an external tileset that is an implicit tilest that has a geometric error that is smaller than the geometric error of the parent tile and 'skipLevelOfDetail' is set to true ...?! 🥴 ?! The point is: The "toy test" that I created doesn't say much... The only approach that I can imagine (and that's still on my TODO list) is to search for all uses of |
This should be fixed now via #12440 |
The title basically says it all: When using multiple contents that refer to external tilesets, then a message
is printed and the external tilesets are not rendered.
This might be a leftover from the
3DDILES_multiple_contents
extension: This explicitly disallowed external tilesets in the contents (see https://github.com/CesiumGS/3d-tiles/pull/583/files ). But in 3D Tiles 1.1, there is no such restriction.Attached a really minimal test case of one tileset that only has two contents, which in turn are (external) tilesets, to reproduce the issue:
external tilesets in multiple contents.zip
The text was updated successfully, but these errors were encountered: