Skip to main content

Help Shape Vector Data Support in 3D Tiles

One of the most frequent and long-standing requests from the community has been support for large-scale heterogenous vector data as part of 3D Tiles. We’re excited to share that we’re adding 3D-native vector points, lines, and polygons support to 3D Tiles 2.0. We’re looking for your feedback to help shape the specification and implementations.

traffic volume visualized with vector data

Vector data scales quickly with geospatial datasets. Here, traffic volume is displayed on regional road network of 150,000 links (polylines) from OpenPaths transport model. Data courtesy of Atlanta Regional Council. Results do not correspond to any specific transportation planning scenario.

Visualization of vector datasets used in AEC

Vector data is widely used in architecture, engineering, construction, and operations, as seen in this 3D design model of a building with annotations, levels, and tags represented as vector data.

Why tile vector data with 3D Tiles?

Before designing a solution, we conducted an extensive survey of the vector data ecosystem and of use cases, workflows, and widely adopted formats, including Mapbox Vector Tiles (MVT), MapLibre Tiles (MLT), and GeoJSON.

The 3D geospatial community’s use cases have focused on 3D vector data as a gap in current solutions. Use cases such as traditional city-scale road networks with centimeter precision on terrain, highly detailed models of transmission and telecom towers overlayed with vector information, AI-extracted global-scale points of interest at accurate elevations, and 3D-specific engineering tasks like building constructions with detailed design strings and annotations—all require real-time level-of-detail streaming and high-precision 3D rendering and analytics.

Road tunnel with vector data derived by iTwin Capture AI Analysis from mobile mapping LiDAR.

There are numerous applications for vector data as 3D Tiles. Here vector data is derived by iTwin Capture AI Analysis from mobile mapping LiDAR.

Green lines mark cracks detected on the Robert Street bridge, St. Paul, Minnesota. Data courtesy of Collins Engineers, Inc.

Green lines mark cracks detected on the Robert Street bridge, St. Paul, Minnesota. Only a 3D-native approach to vector data can capture cracks above and beneath the bridge as seen here. Data courtesy of Collins Engineers, Inc., which leveraged drone photogrammetry and automatic crack detection to operate safer onsite, avoid traffic interruptions, and accelerate and improve bridge inspection and maintenance.

Linework display in EARTHBRAIN Smart Construction Dashboard

Linework display in EARTHBRAIN Smart Construction Dashboard. These proposed changes to 3D Tiles will enable better streaming and sharing of vector datasets in large, complex engineering projects.

At the same time, we've heard from the community about a plethora of use cases that are sufficiently served by existing 2D and 2.5D tiling solutions, with GeoJSON and Mapbox Vector Tiles as most commonly used solutions. Users have shared their desire to use this content in conjunction with 3D Tiles, such as Google Photorealistic 3D Tiles or a user’s own high-resolution reality mesh.

As we compared the use cases to existing solutions, the current landscape is heavily 2D-focused: optimized for flat map tiles, with limited pathways to 3D, restricting both the perceptual clarity of spatial data and overall scalability. This is insufficient for the high-precision 3D use cases.

To address the need for fully-3D vector content and support existing vector data ecosystems, we are:

  • extending 3D Tiles to support vector data through the upcoming 3D Tiles 2.0 standard, built on glTF, and
  • adding runtime support for Mapbox Vector Tiles in CesiumJS and Cesium for Unreal to complement the GeoJSON solution already in place, allowing users to bring their existing vector tiles into Cesium’s open-source ecosystem.

Supporting vector tiling enables efficient streaming and high-performance rendering in a true 3D, Earth-coordinate environment, all while preserving semantic-based operations like metadata querying, styling, and analysis—capabilities essential to traditional vector data use cases. Together, these additions give users an on-ramp for their existing vector workflows and a foundation for next-generation 2D and 3D vector visualization, all within a single, unified ecosystem.

300K points assets detected by computer vision by Blyncsy visualized in CesiumJS

3D Tiles enable smooth streaming of global scale datasets, and support for vector data will  enable powerful streaming capability for vector datasets, too. Here, 300K points assets detected by computer vision by Blyncsy are visualized in CesiumJS.

Focused design: A user-driven scope

In designing our approach to tiling vector data, we focused on meeting real community needs and explored both traditional 2D GIS and emerging 3D workflows. We spoke to users across a breadth of industries about their needs. By observing their use cases, we summarized the following initial requirements for a scalable, 3D-native vector format. These needs have informed our design.

Fundamental element features:

  • Support points, lines, and polygons
  • Support 3D coordinates with graceful handling of 2D and 2.5D
  • Support querying and styling of per-element properties

Flexible tiling schemes:

  • Real-time streaming and level-of-detail
  • Support 3D coordinates not referenced to Earth, e.g., Mars, Moon
  • Support flexible tiling schemes, e.g., quadtrees, octrees, k-d-trees, and discrete global grid systems (DGGSs), for cases where tiling schemes based on the Web Mercator projection are not suitable, like polar regions or vertical structures such as buildings or dams

High-fidelity, real-time visualization experience:

  • Efficient runtime deserialization using runtime-ready binary formats and GPU-ready compression
  • Accurate display allowing centimeter to millimeter precision, which is often required for aligning vector and non-vector (e.g., scanned) sources

Proposed 3D Tiles 2.0 specification and glTF extensions

In the upcoming 3D Tiles 2.0 specification, vector data will be natively supported by leveraging the same spatial indexing, attribute encoding, and level-of-detail organization that powers 3D meshes and point clouds today. This means users can visualize, query, and work with all of their data together in a single, unified workflow, bringing vector features into the same integrated experience their applications already rely on for 3D content.

3D Tiles will support points, lines, and polygons encoded efficiently as glTF assets. The content can be optionally compressed using Meshopt and Gzip compression for efficient storage and streaming. The proposed specification consists of one new 3D Tiles extension and two proposed glTF extensions:

  • 3DTILES_content_gltf_vector (3D Tiles extension): Identifies tile contents as “vector data,” and informs runtimes on how to interpret that data. Enables vector support in 3D Tiles 1.1, with an equivalent extension planned for 3D Tiles 2.0 soon.
  • KHR_mesh_primitive_restart (glTF extension): Enables more efficient encoding of LINE_STRIP and LINE_LOOP topology in glTF, used in line and polygon data.
  • EXT_mesh_polygon (glTF extension): Provides a backwards-compatible representation of polygons for glTF, preserving polygon topology while including runtime-ready triangulation data for high-performance rendering.

glTF extensions including EXT_mesh_features and EXT_structural_metadata will also be used for vector tiles content to encode Feature IDs, properties, and metadata.

Looking Ahead: Cesium's Vector Tiles Roadmap

Vector data workflow for Cesium

A high-level overview of vector data workflow for Cesium.

Our work on 3D Tiles specifications is always backed by reference implementations proving the approach and performance and addressing the use cases. We have started implementations for tiling massive vector data and LOD-enabled high-fidelity rendering in CesiumJS and Cesium for Unreal.

The pipeline for vector content in Cesium will consist of three key parts:

  1. An optimized tiling pipeline to create 3D Tiles from vector data, with GeoJSON as the initial input format. As with our existing pipelines, the vector tiling capability will be available both via Cesium ion and for self-hosted services. Additional formats such as GeoPackage, shapefiles, and more will be supported based on community feedback.
  2. glTF for optimized vector tile encoding, streaming, and rendering.
  3. Runtime vector support in CesiumJS, Cesium Native, and Cesium for Unreal, with additional runtimes like Cesium for Unity based on community feedback.

Aiming for a full end-to-end pipeline in the first phase, we have begun with support for GeoJSON as the initial input format. The support includes commercial tiling, hosting, and streaming services in Cesium ion, with runtime support in CesiumJS and Cesium for Unreal. We have also begun supporting Mapbox Vector Tiles in CesiumJS, which will reuse the same rendering pipelines as 3D Tiles, thus benefitting performance improvements.

In the coming months, we will extend styling support, support 3D Tiles and terrain clamping, add more source formats for all our runtimes, and continue performance and robustness improvements.

Visualization from prototype: A 3D design for a hypothetical highway in Coffs Harbour, NSW, Australia as vector tiles, tiled into 3 LODs and produced by Bentley. The geometry carries real elevation values — the road structures are positioned in true 3D space.

Visualization from prototype: New York City building footprints represent the full perimeter outline of each building as viewed from directly above. Tiled with 13 LODs. Styling of the polygon as blue and dashed outlines is done at runtime.

These reference implementations are intended to seed your testing and feedback to align the specification and roadmap to address your use-cases.  

We look forward to collaborating with the community to finalize vector data support in 3D Tiles 2.0 and implementations in Cesium. We need your input to solidify the specification and test the implementation. Please share your use case and observations in the Cesium community forum. We’d love to hear about how you plan to build applications with vector tiles.