skip to content
Mantle Placemantle place
Cesium

How to self-host Cesium terrain tiles for a real-world site

Serve your own quantized-mesh terrain — the same format as Cesium World Terrain — from files you own, no subscription.

Cesium streams terrain from quantized-mesh tiles: a layer.json manifest plus a tree of .terrain files. Cesium ion sells this as a hosted subscription, but nothing about the format requires one — point CesiumJS or Cesium for Unreal at any HTTP URL serving the same files and the globe streams your terrain. A Mantle Place bundle ships a complete tileset for the area you draw: the CesiumTerrain folder holds layer.json and the full tile tree, so self-hosting is one static file server away — localhost for a working session, any web host for a team. The terrain lives on your disk with no token and no expiry, and the same bundle carries the imagery, elevation model, and meshes for the rest of your pipeline.

step by step

how to do it

  1. Draw the area

    Define your area of interest on the globe. The terrain tileset in the bundle covers exactly that extent, at the finest resolution available for the site.

  2. Download and unzip

    Unzip the bundle anywhere. The CesiumTerrain folder is the complete tileset — layer.json at its root plus the quantized-mesh tile tree beneath it.

  3. Serve the folder over HTTP

    Start any static file server inside the CesiumTerrain folder — one line of Python runs one on localhost — and confirm layer.json loads in a browser.

  4. Point your Cesium client at it

    In Cesium for Unreal, add the CesiumTerrain actor — not Cesium3DTileset — and set its URL to the served layer.json. In CesiumJS, create the terrain provider from the same URL.

  5. Drape the imagery

    Add a raster overlay pointing at the bundle’s imagery GeoTIFF so the terrain reads photo-real, then fly the camera to your area.

questions

frequently asked

Do I need a Cesium ion subscription to stream terrain?

No. Cesium ion is a hosting service, not the format. The tiles in the bundle are standard quantized-mesh — the same wire format Cesium World Terrain uses — so any static HTTP server can stream them to CesiumJS or Cesium for Unreal.

Why the CesiumTerrain actor and not Cesium3DTileset?

They read different formats. The CesiumTerrain actor consumes quantized-mesh terrain — layer.json plus .terrain tiles — which is what the bundle ships. Cesium3DTileset expects a tileset.json with glTF tiles, a format this bundle does not contain.

Why does the tileset need an HTTP server instead of opening the files directly?

Cesium clients request tiles by URL as the camera moves, and stable builds of Cesium for Unreal reject raw file paths. A one-line static server on localhost satisfies that; a regular web host does the same for a whole team.

Can I use the same site without streaming at all?

Yes. The download also carries the terrain as editable meshes and a GeoTIFF elevation model, so the streamed tileset is one option among several — the Mantle Place Importer route gives you owned, editable Landscape terrain in Unreal Engine from the identical data.

Get the data for your site.

Draw your area, see the price, and download an owned bundle — terrain, imagery, and basemap ready for Unreal Engine, Blender, and your CAD tools.