CesiumGS / 3d-tiles-tools

Apache License 2.0
307 stars 46 forks source link

No tileset.json found in input when one exists (when upgrading Cesium ION created 3D tiles) #121

Closed joedjc closed 6 months ago

joedjc commented 6 months ago

Hi,

I'm using the branch "upgrade-cmpt" to upgrade a set of tiles to 1.1.

The tileset input has been generated in Cesium ION (asset id: 2555134). I have downloaded the tiles from Cesium ION and run them though the converter with the following command:

npx ts-node ./src/cli/main.ts upgrade -i [path to your tileset] -o [path to your tileset]/upgraded --targetVersion 1.1

I have done this successfully with other tilesets, but for this particular one one I receive an error:

ERROR (CLI): No tileset.json found in input err: { "type": "TilesetError", "message": "No tileset.json found in input",

However, I can see a tileset.json in the input folder, so i'm unsure why 3d-tiles-tools doesn't seem to recognise it.

javagl commented 6 months ago

A wild, quick guess, because this was also the reason for this message in an issue that I just closed:

The input paths are case-sensitive. Could it be that the path that you gave as the -i parameter does not match the actual path name in terms of uppercase/lowercase letters?

joedjc commented 6 months ago

Thanks for the reply Thanks for the reply @javagl - that was the issue

javagl commented 6 months ago

I'll take an internal note to update the README.md with a hint at the top, saying that these paths are case-sensitive.

Linux users are usually more careful here. But on Windows, paths are usually not case-sensitive, so this requirement may come as a surprise.

joedjc commented 6 months ago

Thanks. It was a basic mistake on my part…but actually what would have helped would have been if the error said “Path cannot be found” or something like that rather than the tileset.json was missing. That threw me slightly as I thought it was an issue with that particular file. May be worth considering.

Thanks again for the response

javagl commented 6 months ago

One difficulty for providing a "better" error message at that point is that the operation takes place on a certain level of abstraction. From the input, it creates a TilesetSource object. And this can either be a file-system-based one, or one that reads from, for example, a 3DTILES (SQLite-based) file, or ... from any other source, FWIW. So at the point where the message appears, it just says data = tilesetSource.get("tileset.json"); and complains about that data not being found (but it does not know where this is ... not found...)