Cesium 3D Tiles geospatial streaming
Dawn Engine Cesium 3D Tiles streams global-scale geospatial content (terrain, photogrammetry, BIM, point clouds, Gaussian splats, voxels) into the Atom renderer using cesium-native and the 3D Tiles standard. It provides WGS84 georeference, camera-driven LOD, Cesium ion and self-hosted data sources, raster overlays, globe anchors, origin shift, and fly navigation—expressed as O3DE components and EBuses, and integrated with Dawn’s LargeWorld double-precision coordinates.
Maturity: Experimental / shipped in-engine (Cesium3DTiles Gem, v0.2.0). Desktop platforms: Windows, Linux, Mac. Geospatial scenes require
double-precision rendering (LargeWorld / RenderOriginService); the Gem can enable LargeWorld on activate. Mobile (Android / iOS) is not in the support matrix.
Difference from O3DE: the historical external Cesium for O3DE community Gem is no longer actively maintained. Dawn Engine ships Cesium built into the engine, continuously maintained, and integrated with LargeWorld so globe-scale tilesets work with the rest of the Dawn large-world stack.
It does not replace PolyTerrain or World Streaming: Cesium owns globe-scale 3D Tiles LOD; Terrain and World Streaming remain available and can coexist via optional bridges.
What problem it solves
Digital twins, simulation training, and GIS visualization need real-world context at planetary scale. Cesium3DTiles provides:
- End-to-end streaming from Cesium ion, URL, or local
tileset.jsoninto Atom; - Accurate LLH / ECEF / engine-local transforms on a WGS84 (or custom) ellipsoid;
- Imagery and vector overlays draped on tileset geometry;
- Globe-anchored entities, fly camera, origin shift for large-world precision;
- Optional PhysX tile colliders, metadata picking, credits attribution, and editor tooling.
With the Gem disabled, Terrain / WorldStreaming / LargeWorld behavior is unchanged.
How it works
ion / URL / local tileset.json
│
▼
cesium-native (tile selection · load · glTF)
│
▼
Atom MeshFeatureProcessor (+ optional PhysX)
│
▼
LargeWorld RenderOrigin (float relative to camera)
│
▼
ScriptCanvas / EBus (anchors, fly-to, metadata)
Key ideas:
- Georeference maps LLH/ECEF to the level’s local frame (default: cartographic origin → engine
(0,0,0), +X East, +Y North, +Z Up). - Tilesets refine by screen-space error (SSE) from aggregated camera frustums.
- Raster overlays are separate LOD streams textured onto tile meshes (up to four material slots on the default material).
- Origin shift keeps the render origin near the camera so single-precision GPU transforms stay stable at global scale.
Layout under Gems/Cesium3DTiles/:
| Path | Role |
|---|---|
Code/ | Runtime + editor components, cesium-native integration, bridges |
Assets/ | Default materials, shaders, ellipsoid assets, pass templates |
Registry/ | Default Settings Registry (Cesium3DTiles.setreg) |
3rdParty/ | CMake FetchContent for cesium-native |
Quick start (summary)
- Enable
Cesium3DTiles(andPhysXif you need tile colliders). - Set
CESIUM_ION_TOKENor open Tools → Cesium Settings. - Build a minimal hierarchy: Georeference → Tileset (ion
1) + Ion Raster Overlay (ion2) → SunSky + Credits → Camera with Fly Controller + Origin Shift.
For the full walkthrough and verification checklist, see Getting started.
Handbook chapters
| Chapter | Contents |
|---|---|
| Getting started | Enable the Gem, configure ion, build a minimal globe scene, verify it works |
| Core concepts | LLH / ECEF, SSE LOD, origin shift, LargeWorld relationship |
| Georeference and tilesets | Origins, ellipsoids, tileset sources, LOD / physics / materials |
| Overlays and clipping | All raster overlay types, material slots, polygon clip / exclude |
| Anchors and navigation | Globe Anchor, Origin Shift, Fly Controller / Fly-To, sub-levels, cameras |
| Environment, metadata, and bridges | SunSky, Credits, metadata / GeoJSON / Voxel / Splat, Terrain/WS/Nav bridges |
| Configuration and debugging | Settings Registry, HTTP knobs, CVars, troubleshooting |
| Recipes | Followable setups: terrain, photorealistic cities, offline, GPS Prefab, low-end, private ion |
| Reference | Component list, common EBuses, asset types |
Glossary
| Term | Meaning |
|---|---|
| 3D Tiles | OGC standard for streaming massive 3D geospatial content (tileset.json + tile tree) |
| Cesium ion | Cesium cloud platform for global 3D content and tiling; optional self-hosted server |
| LLH | Longitude (°), latitude (°), height above ellipsoid (m) |
| ECEF | Earth-centered, Earth-fixed meters; authoritative storage uses AZ::Vector3d |
| ENU | East-North-Up local tangent frame at a surface point |
| Georeference | Root transform between global coordinates and engine-local space |
| Tileset | One 3D Tiles dataset instance (Cesium3DTilesetComponent) |
| Raster overlay | 2D imagery / vector layer draped onto tileset geometry |
| SSE | Maximum screen-space error (pixels); primary LOD budget |
| Globe Anchor | Component that bidirectionally syncs an entity’s Transform with LLH / ECEF |
| Origin Shift | Moves the LargeWorld render origin with the camera to preserve float precision |
| cesium-native | Official Cesium C++ library for tile selection, HTTP/ion access, and glTF parsing |
Limits and related capabilities
You can rely on:
- ion / URL / local tileset streaming with camera-driven LOD;
- Georeference, Globe Anchor, Origin Shift, Fly Controller / Fly-To, geographic sub-levels;
- Multiple raster overlay providers and credit display;
- Optional PhysX colliders; Gaussian splat and voxel paths when content supports them;
- Editor Settings, ion asset browser, Quick Add, and token troubleshooter.
Do not assume:
- Mobile runtime support;
- That Terrain or World Streaming cells are replaced (they coexist; bridges are opt-in);
- That empty ion tokens or wrong asset permissions will load silently—check network and Troubleshoot Token;
- That PIE without Unload tiles in play mode stays memory-safe with large tilesets;
- That occlusion culling is production-ready (experimental, off by default).
Next steps
- Getting started — shortest path to a working globe.
- Double-precision rendering — required foundation for globe-scale precision.
- World Streaming — stream local Prefab cells beside Cesium globe content.
- Navigation3D — volumetric air navigation over Cesium terrain.
Getting started
Enable the Cesium3DTiles Gem, configure a Cesium ion token, build a minimal globe scene, and verify terrain and imagery load.
Core concepts
Understand LLH and ECEF coordinates, screen-space error LOD, origin shift, and how Cesium3DTiles works with LargeWorld.
Georeference and tilesets
Configure CesiumGeoreference and Cesium3DTileset sources, LOD, physics, materials, and editor actions.
Overlays and clipping
Configure Cesium raster overlay types, shared LOD options, material slots, polygon clipping, and tile excluders.
Anchors and navigation
Place entities with Globe Anchor, drive origin shift, fly the camera, use Fly-To, geographic sub-levels, and multi-camera LOD.
Environment, metadata, and bridges
Configure Cesium SunSky and Credits, pick feature metadata, load GeoJSON, enable splat and voxel paths, and optionally bridge Terrain, World Streaming, and NavMesh.
Configuration and debugging
Cesium Settings Registry keys, HTTP transport knobs, console commands, CVars, token resolution, and troubleshooting.
Recipes
Followable setups for global terrain, photorealistic cities, offline tiles, GPS Prefabs, low-end demos, and private ion servers.
Reference
Component checklist, common EBuses, asset types.