etiles
May 21, 2026 · View on GitHub
A Rust library and CLI tool for processing 3D Tiles data.
Features:
- Converts point clouds to 3D Tiles 1.1 using octree spatial indexing
- Supports LAS, LAZ, E57, XYZ, and XYZ+Zstandard input formats
- Reprojects from any EPSG coordinate system to ECEF (EPSG:4978) using PROJ
- Encodes RGB colors from input point clouds into GLB tiles
- Outputs implicit tiling subtrees for efficient streaming
Early stage of development. Developed at the TUM Chair of Geoinformatics. Contributions welcome.
etiles-cli
A command-line tool for converting point clouds to 3D Tiles.
Installation
Download pre-built executables for your platform from the release page.
On macOS, you need to remove the quarantine attribute after downloading:
xattr -d com.apple.quarantine ./etiles-cli
Docker:
docker pull ghcr.io/tum-gis/etiles-cli
From source:
cargo install etiles-cli@0.0.2-alpha.1 # replace with the latest version
Usage
etiles-cli convert-point-cloud \
--input-path /path/to/pointcloud.las \
--output-path /path/to/output.tar \
--source-crs 25832
For a full list of options:
etiles-cli convert-point-cloud --help
Convert an entire directory of point cloud files:
etiles-cli convert-point-cloud \
--input-path /path/to/point_clouds/ \
--output-path /path/to/output.tar \
--source-crs 25832
Docker:
docker run --rm \
-v /path/to/data:/data \
ghcr.io/tum-gis/etiles-cli \
convert-point-cloud \
--input-path /data/pointcloud.las \
--output-path /data/output.tar \
--source-crs 25832
Options
| Option | Default | Description |
|---|---|---|
--input-path | — | Path to a point cloud file or directory |
--output-path | — | Output .tar archive path |
--source-crs | — | EPSG code of the input coordinate system |
--maximum-points-per-octant | 100000 | Maximum points per octree node |
--no-shuffle | — | Disable random shuffling of points before conversion |
--seed | 1 | Seed for reproducible shuffling |
Supported input formats
| Format | Extension |
|---|---|
| LAS | .las |
| LAZ | .laz |
| E57 | .e57 |
| XYZ | .xyz |
| XYZ + Zstandard | .xyz.zst |
Output format
Both the CLI and library produce a TAR archive containing:
tileset.json— root 3D Tiles 1.1 document with implicit tiling metadatacontent/content_{level}_{x}_{y}_{z}.glb— binary glTF tiles with point positions and colorssubtrees/{level}.{x}.{y}.{z}.subtree— implicit tiling subtree availability metadata
The single-file archive simplifies transfer and can be extracted on the target machine.
etiles (library)
A Rust library for integrating 3D Tiles generation into your own application.
Installation
[dependencies]
etiles = "0.0.2-alpha.1" # replace with the latest version
License
Licensed under either of MIT or Apache-2.0 at your option.
