Cesium 3D Tiles, currently in the process of becoming an OGC community standard, is a publicly available open specification for streaming 3D geospatial datasets. Its primary purpose is to improve the streaming and rendering performance of massive heterogeneous datasets – such as point clouds, 3D buildings (exterior and interior), trees, imagery, BIM/CAD models and terrain – to a web browser or other desktop client for visualisation, analysis, and sharing.
“Currently, there’s tons of 3D geospatial data being acquired by satellites, drones, LiDAR point clouds and 3D buildings from open government movements,” says Patrick Cozzi, the creator of Cesium and 3D Tiles. “We have all this massive data coming from different sources in different 3D data types, and we want to take that data and fuse it together, and then to be able to stream it into a web browser. But there’s so much data that you can’t just download it!
“3D Tiles is all about making this 3D data streamable. The source data can come from many different sources, and in many different formats, and 3D Tiles will bring them together into a streamable version, ready for visualisation, analysis, and sharing.”
The foundation of 3D Tiles is a spatial data structure that enables hierarchical level of detail (HLOD) so that only visible tiles are streamed – and only those tiles that are most important for a given 3D view – saving significant bandwidth and reducing loading times. Bringing techniques from graphics research, the movie industry and the game industry to 3D geospatial, 3D Tiles defines a spatial data structure and a set of tile formats designed for 3D and optimised for streaming and rendering. It uses glTF, the WebGL runtime asset format developed by Khronos, to which the Cesium team heavily contributes.
From the ground up, 3D Tiles is designed for true 3D with a free-roaming camera – it is not limited to cases such as 2.5D perspective. Instead of relying on 2D constructs such as zoom levels, 3D Tiles is based on geometric error for level of detail (LOD) selection and adjustable pixel error. This enables tuning of performance and visual quality and is built for multiple ‘zoom levels’ in the same view. For example, a 3D building could be a billboard and label at one LOD, an extruded footprint at a higher LOD, a 3D model at the next LOD, and a textured 3D model at the highest LOD.
“Having hierarchical level of detail means that, while you’re zoomed in on one building in Philadelphia, it only loads that one building, rather than the entire city,” says Patrick. “Likewise, when you’re looking out at the horizon, and you have City Hall in front of you and New Jersey off in the distance, you have really high-resolution data for City Hall Philadelphia and increasingly lower resolution data out to New Jersey.”
3D Tiles also supports interactive selection and styling. Even with WebGL optimisations such as batching, 3D Tiles allows for individual model interaction, such as highlighting on mouseover or removing a 3D building. Tiles can contain metadata for each model to allow additional interaction, such as querying third-party web services using a building ID.
Metadata for individual models, such as ‘building height’ or ‘year built’, can be used for shading at runtime without writing code. Styles can be changed on-the-fly, allowing visualisation of queries such as ‘show me all the buildings built in the past five years’ or ‘show me those that need to be inspected in the next six months’.
3D Tiles also enables adaptive spatial subdivision in 3D, including k-d trees, quadtrees, octrees, grids, and other spatial data structures. Instead of rigid spatial subdivision, conversion tools can adaptively subdivide a dataset based on, for example, the cost of rendering each model and the distribution of models, resulting in a balanced data structure. A runtime engine like Cesium is generic and works with all subdivision techniques.
“In traditional 2D geospatial, when you’re drawing satellite map tiles, you’d use what’s called a quadtree, and you basically slice things down the middle,” says Patrick. “In computer graphics, when you have a full 3D world, it’s less efficient to slice things down the middle because the distribution of data is going to be non-uniform – you might have lots of buildings over here and then a sparse park over there — so you want to do non-uniform subdivision, such as a k-d tree.”
Giving 3D Tiles to the community
3D Tiles is now in the process of becoming an OGC community standard. A community standard is an official standard of OGC that is developed and maintained external to OGC. The originator of the standard – in this case Cesium – brings to OGC a ‘snapshot’ of their work that is then endorsed by OGC membership as a stable, widely implemented standard that becomes part of the OGC standards baseline. In 2016, OGC approved a work item on endorsing 3D Tiles as an OGC community standard. This effort is currently under consideration for approval by OGC members and the public.
Patrick says the 3D Tiles entered the community standard process because Cesium “wanted 3D Tiles to get the broadest adoption. We believe in using open formats so that our software is interoperable, plus we want lots of engines ingesting 3D Tiles and lots of people using 3D Tiles – and to do that, it should be as open as possible. Our work in 3D visualisation is fundamentally geospatial and we think of OGC as the centre for geospatial formats, so it made sense to have 3D Tiles become part of their standards baseline.”
Adoption of 3D Tiles is already well established, with more than a dozen software offerings supporting the format. And with it soon to become part of the OGC standards baseline, that number will only grow and full 3D geospatial analysis in the browser will become as commonplace as streaming a video from YouTube.