Skip to main content

Tiling Photogrammetry Models

Cesium ion allows you to tile large photogrammetry or LiDAR-derived meshes into 3D Tiles — so you can share them on the web without simplifying them. This guide explains how.

Information

If you have other 3D models like BIM/CAD, see the 3D models upload guide.

A photogrammetry model of Independence Hall in Philadelphia.

Photogrammetry of Independence Hall in Philadelphia, PA, visualized in CesiumJS.

Prerequisite

You need a Cesium ion account to take this tutorial.

Information

Cesium ion is an open platform for tiling and hosting. It will serve your photogrammetry as 3D Tiles to any compatible client, like CesiumJS.

Supported formats

FormatFile extensions
Wavefront OBJ.obj
Filmbox.fbx
Digital Asset Exchange.dae
glTF.gltf
Binary glTF.glb
  • Files may be zipped.
  • Your model must use local coordinates (the geometry must be centered around the origin).
  • Units are assumed to be in meters.

Importing

Cesium ion tiles your model into 3D Tiles when you upload it. Here’s a sample photogrammetry model you can download to try this out.

  1. On the My Assets tab of Cesium ion, press Add Data to upload your model.
  2. Select 3D Capture.

Add multiple models at the same time to merge them into a single 3D Tileset.

Data import my assets import

You’ll find a code example for adding this asset to your CesiumJS app at the bottom of the asset preview window.

Learn how to set up a CesiumJS app with the quickstart guide.

Options

After selecting “3D Capture,” there are several options for customizing the tileset. The first option, “Create a 3D Tiles 1.1 tileset,” determines which version of 3D Tiles to use. This is turned on by default and produces 3D Tiles 1.1, the latest version of the standard. However, this can be turned off to create 3D Tiles 1.0 tilesets.

The remaining options depend on which version of 3D Tiles is selected.

Options for 3D Tiles 1.1

Photogrammetry tiler: options for 3D Tiles 1.1

KTX2 compression

This option enables KTX 2.0 texture compression in the generated 3D Tiles 1.0 tileset. This texture compression provides significant GPU performance benefits at runtime. For an example, see the 3D Tiles 1.1 Photogrammetry Sandcastle in CesiumJS

All Cesium runtimes currently support KTX2, but support may vary for other rendering engines. For greater compatibility, this option can be turned off.

Geometric compression

This option lets you select which type of geometry compression algorithm to apply to the data. All compression algorithms decrease the size of the data for streaming and on the GPU. See below for a comparison of the different formats.

Compression typeCorresponding glTF extension(s)Description
NoneN/ADoes not apply any compression or quantization.
Draco (default)KHR_draco_mesh_compressionApplies geometry quantization and compression. Optimized for small file size. This compression method is widely supported in rendering engines.
QuantizationKHR_mesh_quantizationApplies geometry quantization only.
MeshoptEXT_meshopt_compression + KHR_mesh_quantizationApplies geometry quantization and compression. Optimized for GPU performance. This compression method is not as widely supported as the other extensions, though it is supported in CesiumJS.

Options for 3D Tiles 1.0

Photogrammetry tiler: options for 3D Tiles 1.0

Draco compression

When checked, this option enables Draco compression in the generated 3D Tiles 1.0 tileset. When unchecked, no compression is applied.

WebP images

When checked, tiles will use WebP images for textures in the generated 3D Tiles 1.0 tileset. WebP provides better image compression than JPEG and PNG textures. When unchecked, an appropriate image format will be chosen based on the input data.

Geolocating

If your model is not georeferenced, there are a couple ways you can place it at the right location on the globe.

Tips

  • If your model geometry is in a geographic coordinate system, you’ll need to reproject it to a local reference frame before uploading.
  • 3D Tiles allows you to stream massive models to any device by only loading in higher levels of detail when you zoom in.

FAQ

We strongly recommend using the latest version to get maximum performance and benefits. The minimum versions required for visualizations are:

  • CesiumJS 1.108.1 or later
  • Cesium for Unreal 1.25.0 or later
  • Cesium for Unity 1.1.0 or later
  • Cesium for Omniverse 0.7.0 or later

On Cesium ion Saas:

  • There will be no change to your existing 3D Tilesets. You will be able to continue to stream them from Cesium ion with no changes.
  • For new “3D Capture” uploads, the default option will be to produce 3D Tiles 1.1 tilesets using the new 3D Photogrammetry Model Pipeline. If you wish to stay with the 3D Tiles 1.0 tilesets, disable the “Create a 3D Tiles 1.1 tileset” option.

With Cesium ion Self-Hosted or using the on-premises Cesium 3D Tiling Pipeline:

  • You will receive access to both the existing pipeline you are already using and the new 3D Photogrammetry Model Tiler.

To ensure REST API consistency, the default API uses the older pipeline producing 3D Tiles 1.0.

To use the new 3D Photogrammetry Model pipeline in ion, update your POST /v1/assets payload accordingly:

  • The sourceType must be “3D_CAPTURE” to run the new pipeline.
  • Set targetVersion to “1.1”.
  • Leave geometryCompression unset, which defaults to the “DRACO” (recommended), or set it to the geometry compression of your choice.
  • Optionally set textureFormat to “KTX2” (strongly recommended) or leave unset to create a standard 3D Tiles 1.1 tileset that uses PNG or JPG.

  • Our goal is to provide the best-in-class pipelines for all our users, and we’re investing in the new 3D Photogrammetry Model Tiler to meet that goal. We are pausing new feature updates to the existing 3D Model Tiler as a result of that investment but will support critical updates through April 2024.
  • On Cesium ion, the current pipeline will remain available through April 30, 2024, after which the only option will be to produce 3D Tiles 1.1 tilesets using the “3D Capture” option in ion.

Tilers for other pipelines, including terrain, imagery, 3D buildings, and point clouds, are not affected, and you can continue to use them as you have. We plan to ship further improvements to these pipelines as well in the coming months.

Content and code examples at cesium.com/learn are available under the Apache 2.0 license. You can use the code examples in your commercial or non-commercial applications.