Streaming 3D Capture Data using 3D Tiles


Advances in photogrammetry, computer vision, and cloud computing have made capturing high resolution 3D scans accessible - most smartphones can now masquerade as portable 3D scanners.

We’ve also seen some really amazing datasets come from combining these advances with the swarm of drones taking flight every day, opening all kinds of possibilities for 3D mapping, civil engineering, and the age-old practice of our users dazzling their clients. What we need is a good way to stream and display that data.

One major use case for our upcoming Massive Models Tiling Pipeline is converting high resolution 3D captures into 3D Tiles. Here’s a drone capture of AGI’s Headquarters, flown by Nate McBee, converted to a 3D model using Bentley ContextCapture, and then converted to 3D Tiles using our pipeline:

And some images:


Parking lot and overhang

This is a true 3D model capable of showing fine detail and overhangs, unlike a height map. The original model consisted of about 1.4 million triangles.

As a quick refresher, Hierarchical Level Of Detail (HLOD) involves simplifying portions of a model, with the resulting tiles acting both as proxies when the viewer is too far to see fine detail and as placeholders when high-detail tiles are needed but haven’t finished loading. For a closer look at what our simplifier can do, here is an untextured tileset generated from a 3D-scanned sculpture by Sketchfab user Benjamin Bardou.

The image on the left is representative of the original 1 million triangle model, while the image on the right is of a simplification to about 53,000 triangles. Drag the slider to see the difference.

Check out the density difference in the wireframe views:

Here, the view shows many tiles at various levels of detail reassembled into a complete view of the sculpture. Larger boxes generally indicate lower detail and thus coarser simplification.

Of course, the model looks better with textures than without.

Our tiling pipeline repacks textures roughly based on what texels each tile references. This allows more efficient streaming and also divides the original-resolution textures so they do not exceed WebGL limits.

Here is a tile containing the face portion of the Cesar sculpture and a blown-up view of its texture (left and middle). Compare this texture with a zoomed-out view of the original texture (right). Cesar repacked texture vs original

Here’s a high-detail tile from the AGI HQ model (left top) with its repacked textures (left bottom). Compare this with a zoomed-out view from just one of the two original ~67 megapixel textures (right).

AGI HQ repacked texture vs original

Finally, we’re working hard on making our model tiling pipeline faster and more robust; with multi-process acceleration, tileset generation can saturate all of a machine’s cores.

Send help

Speeding up tileset generation helps speed up testing, which in turn speeds up getting this feature ready for integration into Stay tuned for more updates!

As always, if you want to see how your massive models stream with 3D Tiles, send me a note at or tweet to @CesiumJS.

Get started with a Cesium ion account

Sign up for free