OGC 3D Tiles in X3DOM: A Unified, Specification‑Grounded Architecture for Web‑Native Geospatial Visualization

Release Date: 
17 July 2026

The Web3D Consortium’s announcement of OGC 3D Tiles support in X3DOM marks a major milestone in unifying two mature but historically separate ecosystems: the X3D declarative scene graph and the OGC 3D Tiles streaming standard. Together, they enable accurate geospatial registration, efficient streaming of massive datasets, and seamless integration of glTF content within fully interactive X3D worlds. 

Through the Cesium Ecosystem Grant, the Web3D Consortium is enabling X3DOM to stream massive geospatial datasets—terrain, photogrammetry, buildings—directly into declarative X3D scenes. This work strengthens alignment across X3D, glTF, and OGC 3D Tiles, creating a seamless, vendor‑neutral pathway from data acquisition to web deployment. For users, this unlocks scalable digital twin experiences, richer metadata‑driven visualization, and a more interoperable 3D ecosystem built on open standards that will endure.

 A draft paper OGC 3D Tiles implementation for X3DOM  by Andreas Plesch and Anita Havele describes project motivation and details has been submitted for review to Web3D 2026 Conference. Comments are always welcome!

1. Motivation: Bridging Two Geospatial Ecosystems

OGC 3D Tiles has become the dominant open standard for streaming massive geospatial datasets — buildings, terrain, photogrammetry, point clouds — across the web. X3D, meanwhile, provides a declarative, ISO‑standard scene graph with strong geospatial capabilities, multiple coordinate systems, and double‑precision support.

Until now, these ecosystems operated separately.

“We describe our concept and implementation of bridging two popular but disconnected geospatial ecosystems, Web3D Consortium’s X3D and OGC’s 3D Tiles… with the goal of achieving synergies to both.” (OGC 3D Tiles implementation for X3DOM)

The new GeoTileset node in X3DOM provides the missing link.

 

2. High‑Level Overview: Declarative 3D Tiles in X3D

The integration strategy is simple and elegant:

  1. Use existing X3D nodes to represent 3D Tiles content
  2. Load glTF tile content using <Inline>
  3. Apply tile transforms using <MatrixTransform>
  4. Apply geospatial origin adjustments using <GeoTransform>
  5. Manage tile lifecycle (load, unload, visibility) internally
  6. Expose a single declarative entry point: <GeoTileset>

Example: Declarative 3D Tiles in X3DOM

Code
<GeoTileset
url='"tileset.json"'
geoOrigin="0 0 0"
maximumScreenSpaceError="16"
maximumMemory="512">
</GeoTileset>

This node handles everything: downloading, parsing, tile traversal, LOD selection, transform computation, and integration with X3DOM’s camera system.

 

3. Diagram 1 — Architectural Overview (ASCII Reconstruction)

Code
X3DOM Scene
└── GeoTileset (new node)
├── loads tileset.json
├── manages tile traversal
├── computes transforms (ECEF + glTF up-axis fix)
└── creates tile hierarchies:
GeoTransform (optional, for GeoOrigin)
└── MatrixTransform (accumulated tile transform)
└── Inline (glTF tile content)

This hierarchy is repeated for each tile selected by the loader.

 

4. Coordinate Systems and Transform Logic

4.1 Shared ECEF Coordinate System

Both X3D’s Geospatial component and OGC 3D Tiles use Earth‑Centered, Earth‑Fixed (ECEF) coordinates. This shared coordinate system is the foundation for accurate geospatial registration.

4.2 glTF Up‑Axis Correction

glTF uses +Y as up, while 3D Tiles expects +Z as up internally. The implementation applies a 90° rotation around the X‑axis to align coordinate conventions.

4.3 Diagram 2 — Tile Transform Stack

Code
Tile Transform Stack
├── Parent tile transforms
├── Local tile transform
├── glTF up-axis correction (rotate 90° around X)
└── GeoOrigin offset (optional)

4.4 X3D Representation (from the paper)

Code
<GeoTransform geoOrigin="...">
<MatrixTransform matrix="...">
<Inline url='"tile.gltf"'/>
</MatrixTransform>
</GeoTransform>
 

5. The GeoTileset Node: Internal Architecture

The GeoTileset node is responsible for:

  • Downloading and parsing tileset JSON
  • Maintaining tile traversal state
  • Managing tile visibility and LOD
  • Creating/removing tile hierarchies
  • Applying geospatial transforms
  • Integrating with X3DOM’s camera system
  • Exposing metadata via <MetadataSet>

Diagram 3 — GeoTileset Internal Structure

Code
GeoTileset (inherits X3DGroupingNode)
├── tileset metadata
├── loader state (loaders.gl)
├── tile cache (glTF + transforms)
├── visible tile list
├── selected tile list
└── child tile hierarchies (internal only)
 

6. Integration with loaders.gl

Rather than reimplementing tile traversal, LOD selection, and implicit tile expansion, the team integrated loaders.gl 3D Tiles loader.

Why loaders.gl?

  • Modular design
  • Supports glTF tile content
  • Supports implicit tilesets (quadtrees, octrees)
  • Works with non‑Three.js renderers
  • Provides geometric error‑based LOD selection

Camera State Translation

X3DOM’s camera matrix is converted into the parameters expected by loaders.gl:

  • Latitude
  • Longitude
  • Pitch
  • Heading
  • Zoom
  • Field of view

“We derived the formulation for these parameters the loader library expects to properly load and update tile selections.”

Diagram 4 — Camera State Conversion

Code
X3DOM Camera Matrix
├── Extract position
├── Compute latitude/longitude
├── Compute heading/pitch
├── Compute zoom level
└── Compute FOV
loaders.gl viewport object
 

7. Tile Lifecycle: Loading, Unloading, Visibility

7.1 Tile Loading

Code
Tile selected →
loader requests tile →
X3DOM builds hierarchy →
GeoTileset appends tile →
glTF cached →
tile visible

7.2 Tile Unloading

Code
Tile unselected →
hierarchy removed →
resources disposed →
tile removed from cache

7.3 Visibility Management

  • Newly selected tiles → visible
  • Unselected tiles → hidden
  • Tiles removed only after replacements are visible
  • Tile updates paused during animated camera transitions

This avoids flickering and gaps during LOD changes.

8. Supported Features (OGC 3D Tiles 1.1)

The implementation supports a substantial subset of the 344‑page OGC 3D Tiles 1.1 specification:

Tile Content

  • glTF 2.0
  • Full traversal
  • Tilesets of tilesets
  • Tilesets with empty roots
  • Implicit tilesets (quadtrees, octrees)

LOD

  • Geometric error
  • Maximum screen space error
  • REPLACE and ADD refinement

glTF Extensions

  • KHR_mesh_quantization
  • EXT_meshopt_compression
  • KHR_draco_mesh_compression
  • KHR_materials_unlit
  • KHR_lights_punctual
  • EXT_texture_webp
  • MSFT_texture_dds
 

9. Example: Google Photorealistic 3D Tiles in X3DOM

The paper includes a combined scene:

  • Google Photorealistic 3D Tiles
  • X3D GeoElevationGrid
  • Animated X3D/Web3D logos

“Demonstrating full integration… showing current heading, pitch, zoom level, loaded tiles and memory usage.”

Diagram 5 — Combined Scene

Code
Scene
├── GeoTileset (Google Photorealistic 3D Tiles)
├── GeoElevationGrid (X3D terrain)
└── Animated X3D/Web3D logos
 

10. Availability

The GeoTileset node is available in:

Examples are included in the test folder.

11. Outlook

Future work includes:

  • Full global‑scale support
  • Integration with 3DTilesRendererJS
  • Support for the upcoming glTF‑based 3D Tiles extension

This work positions X3D as a powerful, declarative, web‑native framework for geospatial visualization — now capable of streaming massive datasets with OGC 3D Tiles.