> For the complete documentation index, see [llms.txt](https://help.mimeeq.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.mimeeq.com/configurator/3d-assets/blender-setup.md).

# Blender Setup

Set up your Blender file so Mimeeq scripts can bake AO maps, compress models and create AR versions for you. Learn the collection, naming and UV rules.

Prepare your models this way and Mimeeq scripts can process them automatically. Using our scripts gives you:

* Automatic creation of a second UV map and of ambient occlusion (AO) maps
* Baking and post-processing of the AO and shadow maps as image files
* Compression of the file with Draco compression
* Generation of a second, automatically decimated, lighter version of the model for AR
* Creation of the CSV that automatically maps each object to its AO/opacity texture in the Mimeeq app

**This entire process is automated, provided the initial .blend file is set up correctly as described below.**

***

## Output files

The process revolves around **collections**. Each collection produces several types of files:

<table><thead><tr><th width="56.4140625">#</th><th width="180.80078125">File</th><th>What it contains</th></tr></thead><tbody><tr><td>1</td><td>Compressed GLB</td><td>The compressed model associated with the collection</td></tr><tr><td>2</td><td>Low-poly GLB</td><td>A version of the model automatically simplified for efficiency</td></tr><tr><td>3</td><td>AO map</td><td>The ambient occlusion map, except for <strong>temp</strong> collections (see <a href="/configurator/3d-assets/blender-setup.md#temp-collection">Temp collection</a>)</td></tr><tr><td>4</td><td>Opacity map</td><td>Produced when any model in the collection includes <strong>SHADOW</strong> in its name (see <a href="/configurator/3d-assets/blender-setup.md#shadow-command">"Shadow" command</a>)</td></tr><tr><td>5</td><td>CSV file</td><td>Links these maps directly to their corresponding objects in the Mimeeq app</td></tr></tbody></table>

All file names are created from the file name and the collection name.

Example of the output files:

![Folder of output files named after the .blend file and its collections](https://621103948-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsqWfi8ifBhTdkvf1vOlY%2Fuploads%2FLgkexwdNaJrAe3oDnkSi%2Ffiles-example_fyq0ir.png?alt=media)

***

## Collections

Sort your models into distinct collections based on two criteria.

**The visibility of the object**

For instance, a chair model without armrests would belong to one collection. The models for the first and second armrest options would each go in separate collections. This way the browser loads only the GLB files that match the parameters selected in the option panel of the Mimeeq configurator.

**The expected impact on AO map quality**

Many elements in a single map can reduce its quality. There is no strict rule on the number of objects or polygons that guarantees a good-quality shadow; it relies on judgement. For example, the chair above, with a mechanism, seat, backrest and base, might need separate collections to keep AO map quality high.

Example of a properly built structure:

![Blender Outliner showing a chair split into well-named collections](https://621103948-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsqWfi8ifBhTdkvf1vOlY%2Fuploads%2FkyAtsKa83ZWlZIbvo0uQ%2Fstructure_1dlahoa.png?alt=media)

{% hint style="warning" %}
Before submitting files for processing, make sure each collection is visible, enabled for rendering and included in the view layer. All objects must be organised within collections, and there should be at least one collection nested within the main **Scene Collection**. No collection should be left empty.
{% endhint %}

{% hint style="success" %}
Tip: for complex products, plan your mesh naming convention carefully from the start. For example, if you have a desk with 3 sizes (120, 140, 160) and 2 shape types (A, B), name your objects systematically: "120-A.legs", "120-A.feet", "120-B.legs", "120-B.feet", etc. When you use the same coding system in the app to create your options, the corresponding mesh codes are generated automatically. This lets you set up dynamic code patterns quickly, and the correct object visibility happens automatically. By default, the system removes everything after the dot (including the dot itself) when processing mesh codes.
{% endhint %}

***

## Model requirements

For optimal results, we recommend a model with an even, optimised quad-based topology. It is not a necessity, but it is very good practice. There is no strict polygon limit, but balancing a lightweight model with realistic quality takes both intuition and skilled modelling.

Requirements and suggestions:

* **Split by material and visibility:** segment the model into objects based on material variations and visibility options (which may be toggled on or off).
* **Apply transformations:** apply all transformations and check the direction of normals, so the model's scale and orientation are accurate.
* **Centre and orient:** make sure the model is centred and faces the camera directly.
* **Leave modifiers:** there is no need to apply (flatten) modifiers; the script does it.
* **Skip textures:** textures don't have to be applied, as the script removes them anyway. You add textures separately in the Mimeeq app.
* **Check close up:** inspect the model at close range to make sure it has enough subdivision to avoid unsightly curvature, and that proper smoothing is applied.

Example of the recommended model topology:

![Wireframe of a chair model with even quad topology](https://621103948-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsqWfi8ifBhTdkvf1vOlY%2Fuploads%2FYQSfiKZIP0jFtCriezqq%2Fimage-from-clipboard_ter068.png?alt=media)

***

## Unwrapping

**Every object in the scene must be unwrapped**, even if only with automatic unwrapping. If the model's structure changes, unwrap it again to prevent texture stretching.

To use materials from the Mimeeq library, you need to adjust the global scale of the UVs with the Magic UV plugin for Blender:

1. Install Magic UV by following the [Magic UV installation guide](https://docs.blender.org/manual/en/4.1/addons/uv/magic_uv.html#world-scale-uv).
2. Unwrap your object.
3. Set **World Scale UV** to a density value of **3200**.

![Magic UV World Scale UV panel with the density set to 3200](https://621103948-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsqWfi8ifBhTdkvf1vOlY%2Fuploads%2F7u3cAzqj436CnnFueWQ6%2Fglobal_6layb2.png?alt=media)

{% hint style="warning" %}
To check the UV map is properly distributed, we recommend verifying it with a UV grid material. Most textures in the Mimeeq library are designed with horizontal patterns, so you may need to rotate the UV map to use these textures well.
{% endhint %}

***

## Additional options

These further steps improve quality and optimisation even more. Each one is triggered by a keyword in an object or collection name:

<table><thead><tr><th width="74.86328125">#</th><th width="148.984375">Keyword</th><th>Add it to</th><th>Effect</th></tr></thead><tbody><tr><td>1</td><td><strong>shadow</strong></td><td>Object name</td><td>Creates an opacity map for the collection</td></tr><tr><td>2</td><td><strong>REMOVE</strong></td><td>Object name</td><td>The object casts shadows in the collection but is not exported</td></tr><tr><td>3</td><td><strong>temp</strong></td><td>Collection name</td><td>No AO map is produced for the collection</td></tr><tr><td>4</td><td><strong>Instances</strong> / <strong>INSTSRC</strong></td><td>Collection name / source mesh name</td><td>Exports repeated elements as instances</td></tr></tbody></table>

### "Shadow" command

Include the word **shadow** in an object's name to create an opacity map for the collection that contains it. This is especially useful for the plane beneath the model, to create a shadow underneath.

Example:

![Blender scene with a shadow plane named with the shadow keyword under a chair](https://621103948-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsqWfi8ifBhTdkvf1vOlY%2Fuploads%2FL2V32cuSzEKcF5scCvOw%2Fshadow_kvvd0m.png?alt=media)

### "REMOVE" command

Use the **REMOVE** command to improve the quality of shadows between collections. To have a mesh cast a shadow within a collection without being exported, make a copy of it, move it to the target collection and append "REMOVE" to its name.

Example:

![Blender Outliner with highlighted REMOVE duplicates placed in several collections](https://621103948-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsqWfi8ifBhTdkvf1vOlY%2Fuploads%2F1LTvzd8RCnnetO1vNDwd%2Fremove_11sehb1.png?alt=media)

In this example, we divided the model into several collections to optimise the quality of the AO maps. The highlighted objects with the "REMOVE" tag are duplicates of the objects without it. They only project shadows onto the non-REMOVE objects within the same collection and are not included in the final export. If the same "REMOVE" object applies to multiple collections, link it (don't duplicate it) between them.

{% hint style="info" %}
"REMOVE" duplicates are most useful when they directly surround the object to be exported. A "REMOVE" shadow plane is also advisable to simulate the shadow from the ground on the object, for extra realism.
{% endhint %}

{% hint style="warning" %}
Important: each mesh in the Mimeeq app can only support one AO map. For example, if you have one seat with 10 different armrest options, you would need 10 duplicate seat meshes, one for each armrest type, to cover the different shadow patterns. These seat duplicates would then be swapped in the configurator along with their armrests. In such cases, weigh the visual benefit of accurate shadows against configurator performance and your team's workload. When the complexity outweighs the benefit, skip the AO mapping; the final result will still look good without it.
{% endhint %}

### Temp collection

If a collection's name contains the word **temp**, it will not produce an AO map. Use these collections for elements that don't need the map, such as:

* Engravings and logo placeholders
* Stickers and tags
* Items with glass or mesh material
* Stitching geometry

### Custom lights

Our default scripts do not include Blender light sources in the baking process. You can bake AO using Blender's lighting with another of our scripts. This method often needs many adjustments, as good results usually come from trial and error. Please contact us if you want to use this solution.

### Instances

The Mimeeq app works with instances, so use them for repetitive elements in your model. To prepare your instances for the script:

1. Include the word **Instances** in the name of the collection.
2. Create a source mesh and include **INSTSRC** in its name.
3. Apply ("flatten") modifiers on the source before creating instances, rather than leaving them active.
4. Press **Alt+D** to generate instances from the source object.
5. Keep all instances in the same collection as their source mesh. If there are many instances, organise them into sub-collections within the main collection.

Instances can be moved, rotated and scaled, but their individual geometry must not be altered.

Example of properly set up instances:

![Blender scene with desk leg instances and their INSTSRC source mesh set aside](https://621103948-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsqWfi8ifBhTdkvf1vOlY%2Fuploads%2FuaPdgePKtrcgVEQpT1kQ%2Finst_1jwj8km.png?alt=media)

{% hint style="info" %}
The INSTSRC object can be a visible part of the model, or it can be placed off to the side. The app can hide it through specific rules. This is useful when instances of the same item (like a desk leg) need to be shown or hidden depending on another aspect of the model, such as the desk size. In that case, the instance source is easier to control when it sits outside the model (see the screenshot above).
{% endhint %}

***

## Iterations and revisions

It's common to need multiple iterations to correct errors, especially in complex projects with many meshes and collections. The process typically involves preparing the files, running the scripts, identifying any issues, and rerunning the scripts until you reach the desired quality. This iterative approach is standard in the workflow. **Please contact us about any edge case not covered by this documentation.**

{% hint style="warning" %}
Revisions are done based on the naming convention. If you want to override the changes rather than configure the product from scratch, do not change the name of the file itself or, if possible, the names of the objects.
{% endhint %}

***

## Related articles

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>3D Asset Requirements</strong></td><td>File formats, polygon limits, and technical specifications for 3D assets.</td><td><a href="/configurator/3d-assets/asset-requirements.md">3D Asset Requirements</a></td></tr><tr><td><strong>Modular Products in Blender</strong></td><td>Prepare and structure modules for modular product configurators in Blender.</td><td><a href="/configurator/3d-assets/modular-products-in-blender.md">Modular Products in Blender</a></td></tr><tr><td><strong>Photo &#x26; Video References</strong></td><td>Guidelines for capturing reference photos and videos to support 3D modelling.</td><td><a href="/configurator/3d-assets/photo-and-video-references.md">Photo &amp; Video References</a></td></tr></tbody></table>


---

# 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://help.mimeeq.com/configurator/3d-assets/blender-setup.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.
