How can we achieve Hierarchical Level Of Detail using implicit tiling?
Is there a way to do this or Hierarchical Level Of Detail and implicit tiling do not go hand in hand?
The basic idea of Hierarchical Level Of Detail (as described in the specification) is
Each tile has a bounding volume, an object defining a spatial extent completely enclosing its content. The tree has spatial coherence; the content for child tiles are completely inside the parent’s bounding volume.
And that still applies to an implicit tileset: The root bounding volume may be a “cube”. In each level of the implicit hierarchy this “cube” is divided into 4 or 8 parts (for quadtrees or octrees). And the content of each tile in each level must be completely contained in the bounding volume of that tile at the respective level (e.g. as shown in the quadtrees diagram of the specification).
In fact, with implicit tiling, some of the requirements are more “strict”: In an explicit tileset, the bounding volumes of child tiles are allowed to overlap (as long as the parent encloses the content of all children). In an implicit tileset, the bounding volumes are strictly defined (implicitly) by the bounding volume of the implicit tileset root, and the coordinates if the inner tiles.
At which point do you see a contradiction between these concepts?
Hi Marco, thanks for your response.
Considering a scenario where I have say a building in three LODs. I want to create a HLOD using these LODs I have based on the geometric error. So, I would want to render a tile with lower LOD when it is far from camera and as and when my camera comes close to the tile, I want to replace it with higher LODs.
This can be achieved through explicit tiling where a parent child hierarchy can be formulated and respective tile content with a specific LOD can be rendered by specifying the bounding volume and geometric error of the children tiles.
How can the same be achieved using implicit tiling?
The description for now sounds like what is demonstrated with the TilesetWithDiscreteLOD sample.
Some decisions here may depend on the exact use cases and model. So I don’t want to make any “recommendation” here, without knowing further details. But if this is about a “single, relatively small, relatively simple model”, then there might not be a need for implicit tiling.
The benefits of implicit tiling would rather play out when you have a large model where the structure of the implicit tile hierarchy reflects how the model is divided into smaller parts, with increasing detail for the lower levels.
Trying to illustrate that with a (quick and crude, but hopefully helpful) image:
So in order to represent your single building model as an implicit tileset, you’d have to “slice and dice” the model (and simplify each part), to create the content that goes into each level of the implicit tile hierarchy. That’s not trivial (because you have to split triangles at the border of each implicit tile and so on), and it’s not clear whether this is what you want to achieve, compared to what is done in the “TilesetWithDiscreteLOD” sample.
This clears the confusion. To achieve discrete LODs as an implicit tileset, the model will have to be sliced according to the level of LOD’s and the tileset file constructed accordingly.
Also, as you say, implicit tiling is not required for small models.
Thank you Marco for clearing the confusion.