> For the complete documentation index, see [llms.txt](https://docs.multiset.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.multiset.ai/fundamentals/third-party-scans/gaussian-splat.md).

# Gaussian Splat

Use Gaussian Splat reconstructions as input for Multiset VPS.

Multiset now supports **Gaussian Splats** as input for building a VPS map. Instead of uploading a point cloud (e57), you can upload a trained Gaussian Splat reconstruction together with the camera poses used to train it, and Multiset will use that as the source of truth for localization.

#### What you need to upload

A **single `.zip`** containing two files:

1. **`<name>.ply`**, the Gaussian Splat file exported from your reconstruction tool.
2. **`poses.json`**, the camera poses (position and rotation) associated with the training frames, in the format shown below.

Both files must be at the root of the zip (no nested folders).

#### poses.json format

```json
{
  "poses": [
    {
      "ts": "1776075484.516121864",
      "T": [0.000021, 0.000021, 0.000008],
      "R": [0.707448, -0.706765, 0.001143, 0.000027],
      "RGB": null
    }
  ]
}
```

Fields:

* `ts`, timestamp (string).
* `T`, camera position in world coordinates, `[x, y, z]`.
* `R`, camera to world rotation quaternion in `[w, x, y, z]` order, camera looking down `+Z` (OpenCV convention).
* `RGB`, optional, can be `null`.

`T` and `R` must be in the same frame as the `.ply` itself. Poses are subsampled to roughly one per metre during processing, so a dense list is fine.

#### Requirements

* **Metric scale is required.** The Gaussian Splat must be in real-world metric scale for VPS to work.
* **Right-handed, Z up.** The splat and its camera poses must be in a **right-handed coordinate system with +Z up**, which is what Xgrids Lixel CyberColor writes. Output from any other tool has to be converted into that frame first, splat and poses together. See [Splats from Other Tools](/fundamentals/third-party-scans/gaussian-splat/splats-from-other-tools.md).
* **Indoor or outdoor.** You specify this at upload time, and selecting the correct mode improves VPS accuracy.
* **poses.json is required.** The splat cannot be localized against without the training poses, and every camera position used to train it should have an entry.

{% hint style="warning" %}
Gaussian Splats generated without metric scale (arbitrary-scale reconstructions) cannot be used for VPS.
{% endhint %}

## Supported pipelines

Currently supported Gaussian Splat export sources:

* [Xgrids (Lixel CyberColor)](/fundamentals/third-party-scans/gaussian-splat/xgrids-gaussian-splat.md), all Xgrids scanners (K1, K2, PortalCam, L2 Pro, L3 Pro) via the Lixel CyberColor reconstruction app. Its output is already right-handed Z up and metric, so nothing needs converting.

More providers will be added as they ship metric-scaled Gaussian Splat exports. A splat from any other trainer can still be uploaded today, as long as you convert it and its poses to right-handed Z up, keep it metric, and supply a `poses.json`. See [Splats from Other Tools](/fundamentals/third-party-scans/gaussian-splat/splats-from-other-tools.md).

## Upload flow

On the Multiset developer portal, choose **Upload Existing Map**, select your scanner provider (e.g. **XGRIDS**), then pick **Gaussian Splat (ply and poses.json compressed in same zip)** as the file format. You will be asked to confirm:

* Whether the Gaussian Splat is metric-scaled (must be **Yes** for VPS).
* Whether the capture is **indoor** or **outdoor**.
* Whether the zip includes `poses.json` (required).

<figure><img src="https://3163433004-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FokTDI7QVY04Zvb1pQ8Ry%2Fuploads%2Fgit-blob-3bec0d7028c4a76e62d228eb5924a73cd82449f0%2Fmultiset-upload-gs-xgrids.png?alt=media" alt="" width="375"><figcaption><p>Upload Existing Map: select XGRIDS and Gaussian Splat file format.</p></figcaption></figure>

<figure><img src="https://3163433004-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FokTDI7QVY04Zvb1pQ8Ry%2Fuploads%2Fgit-blob-f871004aeaef98ba9cb5f8ca001baf3b40b0b4db%2Fmultiset-upload-gs-config.png?alt=media" alt="" width="375"><figcaption><p>Gaussian Splat configuration: confirm scale, indoor or outdoor, and poses.json.</p></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.multiset.ai/fundamentals/third-party-scans/gaussian-splat.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
