sparklesGaussian Splat Upload

Upload a Gaussian Splat (.ply + poses.json) as a Multiset VPS map via the REST API.

Gaussian Splats are uploaded through the same two-step multipart flow as e57 maps (POST /v2/vps/map → upload parts → /complete-upload/{id}). The only thing that changes is the source object you send in Step 1 — it describes that the file is a Gaussian Splat and carries splat-specific metadata.

What to upload

A single .zip containing both:

  • point_cloud.ply — the Gaussian Splat file.

  • poses.json — the training camera poses.

Both files must be at the root of the archive. See Gaussian Splat for export details and the poses.json schema.

source object for Gaussian Splat

"source": {
  "provider": "xgrid",
  "fileType": "splat",
  "coordinateSystem": "RHS-Z-UP",
  "metadata": {
    "mode": "indoor",
    "hasPoses": true
  }
}
Field
Value
Notes

provider

"xgrid"

Scanner provider. See note below for upcoming providers.

fileType

"splat"

Tells the server this is a Gaussian Splat upload (not e57 / zip).

coordinateSystem

"RHS-Z-UP"

Xgrids exports use right-handed, Z-up.

metadata.mode

"indoor" | "outdoor"

Pick the one that matches the capture — affects VPS accuracy.

metadata.hasPoses

true

Must be true. poses.json is required for VPS.

circle-info

The example on this page is specifically for Xgrids Gaussian Splats (exported from Lixel CyberColor). Support for additional Gaussian Splat providers — such as LitechFeld — is coming soon. The provider value will change per pipeline; the rest of the source shape (fileType, metadata.mode, metadata.hasPoses) will stay the same.

Example — create a Gaussian Splat map (Step 1)

The response contains mapId, uploadId, and the array of presigned signedUrls — exactly like the e57 flow.

Next steps

After Step 1:

  1. Split your .zip into chunks and PUT each chunk to the corresponding presigned URL. Capture the ETag of every part.

  2. Call POST /v2/vps/map/complete-upload/{mapId} with the uploadId, S3 key, and the array of { PartNumber, ETag }.

Both endpoints are identical to the e57 upload — see the Map Upload overview for the full OpenAPI specs.

circle-exclamation

Last updated