3d Tiles - jgoffeney/Cesium4Unreal GitHub Wiki

Back

Description

Notes on the Cesium 3d-tile specification

References

Notes

Introduction

The 3d-tile format exists to stream and render large scale datasets. It generates a hierarchy of tiles to deliver data without rules on how to visualize it (that is left to the client).

The tile hierarchy using a tree based spatial data structure designed around files and folders. In the root folder is a file tileset.json defining the structure. The tile formats are of one of the following types:

Supported Formats

  • Batched 3d Model (b3dm)
  • Instanced 3d Model (i3dm)
    • 3D model that should be instanced (trees, windmills, bolts)
    • Based on glTF format
  • Point Cloud (pnts)
    • large numbers of points
  • Composite (cmpt)
    • Combining different tile types into a single tile

The spatial data structure is based on a tree of bounding volumes where the child nodes are completely contained with the parent volume. The specific structure is not defined as it can be octree, k-d tree, quadtrees and grids (as long as it supports the above rule) to allow for higher dimensional indexing than typical 2d structures.

URIs

The format uses URIs relative to the JSON

{"content":{"uri":"13/5407/3511.b3dm"},"boundingVolume":{"region":[-1.4391232992299994,0.40166624788006783,-1.4390794492741188,0.40170683792555034,43.575062020681798,66.472772024571896]},"geometricError":4.0,"refine":"REPLACE","children":[]}

Units

All distances are in meters and all angles are in radians.

Concepts

Tiles

A tiles consists of the metadata to determine if a tile is rendered, a reference to the renderable content and an array of child tiles.

Geometric Error

A tile's geometric error is the metric (in meters) to determine which tile's contents should be rendered for LOD. The root should have the greatest error since it is the most simplified version. The child nodes should have a smaller error than their children with the leaf nodes should have error close to 0.

The client implementation will couple the geometric error with other metrics such as the distance from tile to camera, screen size and resolution to determine if a tile should be rendered while its children should not.

Refinement

Refinement is the process through which a lower resolution parent tile is managed with its higher resolution children. Refinement can use replacement or addition.

  • Replacement
    • A parent tile is replaced by its children.
  • Addition
    • The child tile data is added to the parent tile data.
Bounding Volumes

Bounding volumes define the spatial extent which can be boxes, sphere or regions to support tight fitting volumes.

  • Region
    • Defined by the latitude and longitude coords (west, south, east and north) and minimum and maximum height.
    • The units are in radians and meters.
    • Aligned to the geospatial grid
  • Box
    • An oriented box
    • Defined by a center point and next three tuples determining the direction of each axis with its half-length
  • Sphere
    • A sphere defined by a center point and a radius
Viewer Request Volume

A viewer request volume is an additional volume check to enable and disable rendering. A point cloud may have a bounding volume for its LOD but also a viewer request volume to just trigger rendering. Consider a point cloud with a building. Rather than default to a low res version of the cloud always being on the viewer request volume requires an initial distance before the point cloud is visible.

Transforms
  • Tile Transforms
    • An affine transform that converts a child's coordinate system to its parent's
    • Allows tiles to maintain local coordinates
    • Affects all coordinates except region type bounding volumes which are always EPSG:4979 (WCS 84 with height)
  • glTF Transforms
    • Batched and instanced 3d tiles use glTF with its own hierarchy with a y-up coordinates.
    • The transforms are applied in the following order:
      • Node Hierarchy
        • Apply any general transform
      • Y-up to Z-up
        • Switch the y coordinates to z coordinates for the up
      • Tile specific transforms
        • Batched and Instanced models can apply different transforms
      • Overall tile transform