Skip to main content

How to Create LOD (Level of Detail) for Your Splat

This guide explains how to create a LOD of your Splat using the one-click feature in Arrival.Space.

Need More Control?

If you have individual .ply files or want finer control over LOD settings, check out the Manual LOD Creation Guide (CLI) for an alternative approach using the splat-transform command-line tool.

LCC2

This optimzation is not needed for LCC2, because it is already optimized. But the Settings listed in Section Streaming Settings can also be applied to the LCC2 optimization.

TL;DR

  1. Upload your Splat file (.ply, .compressed.ply, .sog, or .lcc as zip)
  2. Click Generate LOD in the Content List Detail View
  3. Tune your LOD settings (presets, distances/multipliers)
  4. Generate a Collision

1. Upload Your Splat File

Before generating LOD, you need to upload your splat asset to Arrival.Space. Supported formats:

FormatHow to Upload
.plyUpload directly
.compressed.plyUpload directly
.sogUpload directly
.lcc / .zipMust be zipped together with its companion files (.lci, .bin files) - detailed information can be found in section Upload LCC to Arrival.Space.
meta.json / .zipIf you created your LOD manually using the CLI (see Manual LOD Creation Guide), upload your LOD output folder as a zip file containing the lod-meta.json and all chunk files.
Sample Data

For valid example files, check out the XGRIDS Sample Data — all samples are provided as ready-to-upload zip files.


2. Generate LOD

Once you have uploaded your asset and created a collision, you will find the Optimize for Streaming button below your asset information 1. Clicking this button opens a submenu 2, where you can configure the following settings:

  • Detail Levels:
    Defines how many Levels of Detail should be generated. The amount of the levels are automatically set for LCC splats.
  • Gaussians per File:
    Specifies the approximate number of Gaussians each chunk should contain. This value is an approximation — the actual count may vary slightly.
  • Chunk Extent:
    Specifies the spatial size (in meters) of a chunk. This should be adjusted based on the scale of your scanned environment.
  • LOD Engine:
    Choose between SplatLOD and NanoGS.
    • SplatLOD uses a uniform Level-of-Detail (LOD) approach, where splats are distributed evenly across multiple detail levels using a fast C++ processing pipeline. This makes it particularly well suited for large-scale scenes and datasets with significant transparency, providing efficient streaming and stable rendering performance while maintaining good visual quality. It is faster than NanoGS.
    • NanoGS uses an adaptive LOD generation approach, varying the number of splats per level to preserve more visual detail at lower LODs. This results in higher quality close-up rendering and is especially suitable for smaller scenes where fine details are important and transparency is less dominant. The adaptive structure can provide better visual fidelity, though LOD generation is typically more computationally intensive than SplatLOD.

After configuring these settings, click Start Generation to generate your LOD. Depending on the size of your splat, this process may take some time. For example, a small splat with around 1 million Gaussians typically takes 10–15 minutes to generate.

You can now leave the Space at any time. The process will continue running in the background.

2.1 Progress LOD Generation

Once you have started the generation process, you can cancel it using the icon. You can also view the progress here to see how far your LOD generation has advanced. 3.


3. Streaming Settings

After your LOD has been successfully generated, it will replace your previous asset. You can recognize that the process is complete when the file becomes a .lod and the
Generate LOD button changes to Streaming Settings 4.

When you click this button, a submenu opens containing the following settings and information:

5 LOD Settings (X LOD Levels):

Displays the number of generated LOD levels — in this example, 5, the visible splats and the video memory usage.

  • Default Desktop Preset: Defines the preset used when a visitor views your Space on a desktop device.
  • Default Mobile Preset: Defines the preset used when a visitor views your Space on a mobile device. This preset is also take for the VR Devices, if the Meta Quest 3 or Apple Vision Pro preset isn't enabled.
  • Enable Preset Selection UI: Shows or hides the preset selection UI for your visitors.
  • Colorize LOD Levels: Allows you to display each LOD level in color. This is especially helpful when defining presets, as it makes distance and range transitions easier to evaluate.

6 Quality Presets

Presets allow you to optimize your LOD for every end device. For example, for mobile devices it is recommended to keep the visible splats count under 3M splats / 400mb of used Memory to ensure good performance on iOS.

Edit Preset

Choose which preset you want to edit. Available presets are Desktop Max, Desktop, Mobile Max, Mobile and Meta Quest 3, Apple Vision Pro if enabled.

Minimum LOD Level

Defines the starting level for your preset. Level 0 is the most detailed level. In the shown example, levels would range from 0 to 4.

LOD Base Distances & LOD Distance Multiplier

The LOD Base Distance & Multiplier affecting each other. The Base Distance defines the Distance in meter for one Level. The Distance Multiplier is used to create all further levels. Example:

  • Base Distance: 5m
  • Distance Multiplier: 2

This would mean:

  • Level 0 (most detailed one): 0 to 5 meters displayed
  • Level 1:5m to 10m
  • Level 2: 10m to 20m
  • Level 3: 20m to 40m
  • Level 4: 40m to endless

Splat Budget

The value you enter here defines a hard upper limit. It counts the splats itself and reduces them if needed.

Cull Distance

Especially useful for small Spaces or Spaces where you can't see everything at once. It defines the distance, where splats aren't longer displayed. For example if you use 5 it would mean that everything behind 5meters woldn't be displayed inside your scene.

Behind Penalty

Chunks located behind the camera receive an additional distance penalty. This makes them unload earlier than chunks in front of the camera, helping reduce memory usage and improve performance. Higher values increase the unloading effect for unseen areas behind the camera.

3.1 Using the Preset Selection UI

When this setting is enabled and you close the UI, the Enable Preset Selection UI will appear below the Owner Badge 7.

3.2 VR Presets

To use VR headsets, you must explicitly enable this option. If it is not enabled, the Mobile preset will be used instead (either Mobile or Mobile Max, depending on your settings).

Toggle the Enabled button to enable VR support. Once enabled, all fields such as Minimum LOD Level will become available. After that, adjust the values according to your needs.


4. Generate a Collision

After tuning your LOD settings, generate a collision mesh for your splat. This enables visitors to walk on and interact with the 3D environment.

For splats uploaded as .lcc, .ply, .compressed.ply, or .sog, you can use the Generate Collision button directly. See the Collision Generation Guide for instructions.

Manually Created LOD Files

If you uploaded a manually created LOD (via the CLI), collision cannot be generated directly from the LOD structure.

Workaround:

  1. Generate a low-resolution version of your splat (approx. 1–2 million Gaussians).
  2. Upload this low-res splat as a separate entity (preferably in a separate space).
  3. Use the Generate Collision button on that entity to create the collision mesh.
  4. Download or locate the generated collision file.
  5. Upload this collision file to your LOD entity.

More Resources