CesiumGS / 3d-tiles

Specification for streaming massive heterogeneous 3D geospatial datasets :earth_americas:
2.14k stars 469 forks source link

Clarification for content availability of implicit tileset roots #769

Closed javagl closed 6 months ago

javagl commented 6 months ago

(Edited for more clarity...)

The specification text at https://github.com/CesiumGS/3d-tiles/tree/main/specification/ImplicitTiling#availability-1 says

If the implicit root tile does not have content then contentAvailability shall be omitted.

I was a bit surprised by that statement: It is phrased as a requirement to omit this property, but it only refers to the root tile. But the information cannot be omitted when there is content available in other cells of the subtree.

It could be clarified that when the contentAvailability is omitted, it just means availableCount:0/constant:0. But requiring to omit it depending on the presence of content only in the root tile does not seem to make sense.

(This came up in the forum at https://community.cesium.com/t/omitting-content-availability-when-using-implicit-tiling/32238 )

lilleyse commented 6 months ago

I think this is referring to a tile without a content property, e.g.

{
  "root": {
    "boundingVolume": {
      "region": [-1.318, 0.697, -1.319, 0.698, 0, 20]
    },
    "refine": "REPLACE",
    "geometricError": 5000,
    "implicitTiling": {
      "subdivisionScheme": "QUADTREE",
      "availableLevels": 21,
      "subtreeLevels": 7,
      "subtrees": {
        "uri": "subtrees/{level}/{x}/{y}.json"
      }
    }
  }
}

contentAvailability would be omitted since this implicit tileset contains all empty tiles.

I think the line should be reworded to

If the implicit root tile does not have a content property then contentAvailability shall be omitted.

javagl commented 6 months ago

Now this makes sense, on the level of the specification. It may raise questions about use-cases for an implicit tileset that does not have content at all. But one could make a case for such a tileset serving only as a purely spatial datastructure that stores metadata, for example.

To avoid similar confusion, one could probably consider to elaborate that further, with something like

If the implicit root tile does not have a content or contents property, and therefore does not define a content template URI, then this means that none of the implicit tiles has any content, and the contentAvailability in the subtrees shall be omitted.

lilleyse commented 6 months ago

@javagl that sounds good. Could you open a PR with that wording?

javagl commented 6 months ago

Yes, there are a few "smaller" things that I can try to address in a few small PRs during the weekend, like