# Gaussian Splat

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 + 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` — translation `[x, y, z]`.
* `R` — rotation quaternion `[x, y, z, w]`.
* `RGB` — optional, can be `null`.

#### Requirements

* **Metric scale is required.** The Gaussian Splat must be in real-world metric scale for VPS to work.
* **Indoor or outdoor** — you'll specify this at upload time; selecting the correct mode improves VPS accuracy.
* **poses.json is required** — the splat cannot be localized against without the training poses.

{% 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)](https://docs.multiset.ai/basics/third-party-scans/gaussian-splat/xgrids-gaussian-splat) — all Xgrids scanners (PortalCam, L2 Pro, K1/K2) via the Lixel CyberColor reconstruction app.

More providers will be added as they ship metric-scaled Gaussian Splat exports.

## 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-82018630a86f03ad96d1c6d023f898d9ff665ce2%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-3cb7e1eed6262f6060e6fb1d21cceea70ac0ebc7%2Fmultiset-upload-gs-config.png?alt=media" alt="" width="375"><figcaption><p>Gaussian Splat configuration — confirm scale, indoor/outdoor, and poses.json.</p></figcaption></figure>
