> For the complete documentation index, see [llms.txt](https://multiset.gitbook.io/multiset/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://multiset.gitbook.io/multiset/basics/maps/output-asset/mesh.md).

# Mesh

## Overview

The mesh is the geometric representation of a mapped space. It is produced for **every input type**, including Gaussian Splat uploads, where the mesh is reconstructed from the splat. It is what you use for occlusion, collision, and navigation at runtime, and for placing content against real-world geometry before you deploy.

## Two variants

| Variant      | What it is                                                | File   | Use it for                                                                                                                                            |
| ------------ | --------------------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Raw**      | Untextured, low-poly geometry                             | `.glb` | [Occlusion](/multiset/unity-sdk/occlusion.md), colliders, [NavMesh](/multiset/unity-sdk/navmesh-navigation.md) baking, anything shipped to the device |
| **Textured** | The same geometry carrying photo texture from the capture | `.glb` | Visual preview, editor-time content placement, sharing the scan, BIM and analytics pipelines                                                          |

Ship the **raw** mesh when the mesh runs on device: it is far smaller, and occlusion and physics only need geometry. Use the **textured** mesh when a human is looking at it. You can reduce the raw mesh further in any 3D tool (Blender, for example) by lowering the poly count.

{% hint style="info" %}
People captured during scanning are masked out when the mesh is textured, so passers-by do not end up baked into the texture.
{% endhint %}

## Coordinate frame

Both meshes sit in the map's local frame:

* origin at `(0, 0, 0)`,
* `+Y` up,
* metric scale, where 1 unit is 1 metre.

A VPS query returns poses in that same frame, so anything you align to the mesh in the editor appears in the same physical spot at runtime. See [Coordinate Systems](/multiset/basics/localization/coordinate-systems.md) for the left-handed and right-handed conventions.

{% hint style="danger" %}
Do not move the origin of a downloaded mesh. It must stay at `(0, 0, 0)`, otherwise everything you place against it will be offset once VPS poses arrive.
{% endhint %}

## Getting the mesh

### Developer Portal

Open the map from the **Maps** list and click **View Mesh** in the Map Details toolbar. The viewer lets you inspect the mesh and download the raw and textured GLB files.

### Unity Editor

The [Map Mesh Downloader](/multiset/multiset-quest-sdk/map-mesh-downloader.md) pulls the mesh straight into your scene under the `MapSpace` GameObject, so you can lay out content against real geometry. Downloaded meshes are tagged `EditorOnly` and excluded from the build. At runtime, [MapMeshHandler](/multiset/unity-sdk/api-reference/mapmeshhandler.md) can fetch and display the mesh instead.

### REST API

Meshes are stored per map and fetched through the [`/file`](/multiset/basics/rest-api-docs/map-operations.md) endpoint, which exchanges a storage key such as `<accountId>/<mapId>/Mesh/TexturedMesh.glb` for a short-lived, pre-signed download URL.

## Replacing a mesh

If you clean up or re-texture a mesh externally, you can push it back to the map with `POST /vps/map/{mapCode}/mesh-upload-url`, choosing `meshType: textured` or `meshType: raw`. See [Map Operations](/multiset/basics/rest-api-docs/map-operations.md).

{% hint style="success" %}
Replacing a mesh does not affect localization accuracy. Queries run on the map's feature data, not on the mesh, so the visual mesh can be updated at any time without re-processing the map.
{% endhint %}


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://multiset.gitbook.io/multiset/basics/maps/output-asset/mesh.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
