> For the complete documentation index, see [llms.txt](https://docs.mapsindoors.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mapsindoors.com/products/cms/media-library/3d-models.md).

# 3D Models

3D models in your MapsIndoors solution are uploaded and managed through the Media Library, just like 2D models and icons. However, due to the nature of 3D models, there are a few additional steps to manage, particularly when uploading your 3D model. 3D models can be uploaded to the Media Library in the `.glb` file format.

## Making performant 3D models

To make your models performant on your maps, you need to follow a few guidelines. Here's a quick guide to exporting proper models from Blender (a 3D modelling software).

### Fewer vertices result in smoother performance

To optimize performance, reduce polygons in your models to minimize data and machine power usage.

<figure><img src="https://2554025873-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYZLXDaaclvaSK6Q7eigW%2Fuploads%2Fgit-blob-972c8be057f227a0d9091b0c738a57af57d88869%2FCleanShot%202025-07-10%20at%2011.08.31.png?alt=media" alt=""><figcaption><p>Workstation model. 50kb, 1300 verts.</p></figcaption></figure>

### Ensure proper .glb export

Here is a guide on which materials to include or exclude in your model exports for better compatibility with Mapbox. The parameters listed below should not deviate from their default settings:

<figure><img src="https://2554025873-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYZLXDaaclvaSK6Q7eigW%2Fuploads%2Fgit-blob-eb61de8131909d05c2f7a4d68b04c5418b2cfaef%2FCleanShot%202025-07-10%20at%2011.12.04.png?alt=media" alt=""><figcaption><p>Always use "Principled BSDF" shader</p></figcaption></figure>

Using Blender or third-party tools to compress models is **incompatible** with Mapbox.

## Set Preview Image​ <a href="#set-preview-image" id="set-preview-image"></a>

<figure><img src="https://2554025873-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYZLXDaaclvaSK6Q7eigW%2Fuploads%2Fgit-blob-7b03fd4f410a999dbee416c292692e86704bd8ee%2FCleanShot%202025-07-10%20at%2010.56.56.png?alt=media" alt=""><figcaption></figcaption></figure>

When you upload a 3D model to the Media Library, you'll need to set a *preview image*. This opens a viewport where you can move and rotate the 3D model to determine what image will display as a preview in both the Media Library and other CMS locations.

1. The widget you use to move your model. In this image, it is set to "Move", but will look differently when set to "Rotate".
2. Toggle between "Move" and "Rotate".
3. Zoom your viewport.
4. Enter values for rotation instead of using the widget.
5. Reset either the camera position, model rotation or model placement to the default values.


---

# 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.mapsindoors.com/products/cms/media-library/3d-models.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.
