Skip to main content

How to Create LOD Manually (CLI)

This guide explains how to create LOD files for your Splat manually using the splat-transform CLI tool and upload them to Arrival.Space.

When to Use This Method

While Arrival.Space offers a convenient one-click LOD generation directly in the platform, there are scenarios where manual LOD creation is preferable:

  • Individual PLY files: You have multiple pre-reduced .ply files (e.g., from external tools or manual decimation) that you want to combine into a LOD structure.
  • Fine-grained control: You need more control over the reduction ratios, chunk sizes, or other parameters than the one-click feature provides.
  • Offline processing: You want to process LODs locally before uploading, or integrate LOD generation into your own pipeline.
  • Very large scenes: For extremely large scans, local processing with increased memory allocation may be more reliable.
Prefer One-Click Generation?

If you just want a quick and easy LOD setup, check out the One-Click LOD Creation Guide — it handles everything automatically within Arrival.Space.

TL;DR

  1. Create reduced versions of your .ply file (or use an .lcc file with built-in LODs)
  2. Generate LOD structure: splat-transform [files] -l [level] output/lod-meta.json
  3. Zip and upload to Arrival.Space
  4. Tune LOD settings via the "Edit" button in the preset selector

Install splat-transform

The installation guide can be found in section Splat Transform Guide.

1. Prepare Your LOD Files

Option A: Using an .lcc file

If you have an .lcc file, it usually already contains all LOD levels built-in. You can skip the manual reduction steps below and proceed directly to generating the output.

Option B: Using .ply files

Start with your highest-resolution .ply file.
Then create reduced versions — ideally each one about 50% smaller than the previous.

Example for an 8 GB source:

my_splat_file.ply (8 GB) → LOD 0
my_splat_file_1.ply (4 GB) → LOD 1
my_splat_file_2.ply (2 GB) → LOD 2
my_splat_file_3.ply (1 GB) → LOD 3
my_splat_file_4.ply (512 MB) → LOD 4
my_splat_file_5.ply (256 MB) → LOD 5

2. Generate the LOD Structure Using splat-transform

Create an empty target folder for the final LOD output:

mkdir LOD_OUT

For .lcc files:

Important: Reference the .lcc file directly (not the zip archive). The .lcc file is typically located in a folder alongside .bin files (e.g., data.bin, index.bin, attrs.lcp, collision.lci).

Command structure:

splat-transform [path-to-folder]/file.lcc [output-folder]/lod-meta.json

Example:

splat-transform ./my_scan_folder/data.lcc LOD_OUT/lod-meta.json

This will create lod-meta.json and all LOD chunks inside the LOD_OUT/ folder.

For multiple .ply files:

Replace the filenames with your actual .ply file paths:

splat-transform \
my_splat_file.ply -l 0 \
my_splat_file_1.ply -l 1 \
my_splat_file_2.ply -l 2 \
my_splat_file_3.ply -l 3 \
my_splat_file_4.ply -l 4 \
my_splat_file_5.ply -l 5 \
LOD_OUT/lod-meta.json

This writes a lod-meta.json file and the corresponding LOD chunks into the LOD_OUT/ directory.

For Very Large Scenes

If the command runs into out of memory errors for very large scenes, you can increase the Node.js memory allocation:

node --max-old-space-size=32000 node_modules/.bin/splat-transform \
my_splat_file.ply -l 0 \
my_splat_file_1.ply -l 1 \
my_splat_file_2.ply -l 2 \
my_splat_file_3.ply -l 3 \
my_splat_file_4.ply -l 4 \
my_splat_file_5.ply -l 5 \
LOD_OUT/lod-meta.json

3. Upload to Arrival Space

Zip the LOD folder:

zip -r LOD_OUT.zip LOD_OUT/
  • Upload LOD_OUT.zip as "+ Content" in Arrival Space
  • (Recommended) Upload into a new space to keep everything clean and organized

4. Tuning LOD Settings

After uploading your LOD to Arrival.Space, you can fine-tune the LOD settings (ranges, presets, etc.) directly in the platform. See the LOD Creation Guide - Tuning LOD Settings for detailed instructions on how to configure presets for desktop and mobile devices.


More Resources