> 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/modular-products-in-blender.md).

# Modular Products in Blender

## Introduction

This documentation explains key concepts for preparing the modules for the modular product in the Mimeeq App using Blender software.

The topics covered in this article include:

* The Logic Of The Set Up
* Snaps Logic
* Collisions Logic
* Dimention Boxes Logic

**All neccesary things to know are described below.**

## Logic Of The Set Up

Due to the complex nature of the modular systems and their uniqueness, it is crucial to carefully plan the logic of the modular configurator before proceeding. Consider which elements connect to each other and what constraints exist for individual modules and their configurations. Taking the time to map everything out in advance will help you approach the creation process with confidence, avoiding problems and saving time in the long run. We recommend contacting our Mimeeq Studio to ensure that everything will work smoothly and that the logic is correct when you start working on the configurator. We're familiar with all the nuances and possibilities and will be happy to assist you.

## Snaps Logic

## What are Snaps?

Snaps are plane objects defined in the Mimeeq App as SNAP points. They serve as the connection points between modules in the modular system.

## Characteristics of Snaps:

* Snaps should be completely flat planes with 4 vertices, without any thickness or subdivisions.

![💡Front and Side View Of The Snap](https://621103948-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsqWfi8ifBhTdkvf1vOlY%2Fuploads%2FtKJ9nMpbNXYWFCSj0XQZ%2Ffront-and-side-view-os-the-sna_1fqwves.jpg?alt=media)

* Snap normals is the most important factor - blue snaps should connect to blue, red to red (normals direction). Opposite orientations will cause flipping behavior.

![💡Correct and Incorrect of Snap Set Up Between Modules](https://621103948-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsqWfi8ifBhTdkvf1vOlY%2Fuploads%2FyCo2Dj2MXiiWjgdn0Uij%2Fcorrect-and-incorect-1_7kodpm.jpg?alt=media)

* The center of the snap is the most critical factor—snap centers must align for proper connections. They will always "glue" to each other at their centers, without any space in between.

![💡Showcase of Snaps with Centers Aligned Between Modules](https://621103948-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsqWfi8ifBhTdkvf1vOlY%2Fuploads%2F096flJB3eLLo2lWYnifH%2Fsnaps-having-the-center-in-the_18r1sjs.jpg?alt=media)

* It's best to keep snap sizes consistent and square, but the exact size is not critical as long as the centers align.
* Snaps in the singular module should not intersect or overlap, as this will result in welding and improper functionality.

![💡Incorrect and Correct Snaps within a Singular Module](https://621103948-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsqWfi8ifBhTdkvf1vOlY%2Fuploads%2F3LzKGdtSdb1Q6zm81act%2Fnew-project-12_zjs3mu.jpg?alt=media)

* Snaps can be conditional, meaning you can activate them only under certain circumstances (example: show the snap only when you have an option of the arm selected).
* Rectangular snaps serve the best when you want to use slide feature. (e.g., when you want to slide an added pillow across a straight backrest).

![💡Showcase of Two Modules with Correctly Set Up Snaps](https://621103948-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsqWfi8ifBhTdkvf1vOlY%2Fuploads%2F8IspUyARuk0j97I6pvDe%2Fcorrect-and-incorect-2_1nhjqwz.jpg?alt=media)

## Collisions Logic

## What are Collisions?

Collision is a cube object defined in the Mimeeq App as the collision type of the mesh. The purpose of the collision is to prevent modules that should not intersect from doing so. It can also be used as a workaround to hide unwanted snaps in certain cases. The collision boxes are separate from the dimension boxes, which should match the precise dimensions of the object. Collisions do not need to match the exact dimensions of the module; they only need to prevent the modules from overlapping.

## Characteristics of Collisions:

* Collision boxes are always cubic, regardless of the object's actual shape. They cannot take on any other form, such as a trapezoid or a curved shape. To achieve such shapes, it is necessary to use a pair of collision boxes as separate boxes arranged in the desired configuration.

![💡Showcase of the L-Shaped Collision Created from Two Cubical Meshes](https://621103948-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsqWfi8ifBhTdkvf1vOlY%2Fuploads%2FVnckQEgzd8R5xKQxPC5L%2Fnew-project-13_1q0xixi.jpg?alt=media)

* The placement and size of the collision boxes in relation to the object is important, as they determine how the object will collide and interact with other objects.

![💡Showcase Of a Correctly Used Collision On an Object](https://621103948-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsqWfi8ifBhTdkvf1vOlY%2Fuploads%2FWeTUSI8ptHkKVhTWMsGy%2Fcorrect-and-incorect-3_kh1jpq.jpg?alt=media)

## Dimension Boxes Logic

## What are Dimension Boxes?

Dimension boxes are cubes with specific measurements that outline objects to display their exact dimensions. Their purpose is to avoid small disturbances in the displayed measurements caused by model imperfections, especially in upholstered products.

## Characteristics of Dimension Boxes:

* To maintain perfect dimensions in the modular system, snaps must be "glued" exactly where the edges of the dimension boxes are.
* The model can be smaller or larger than the dimension box to appear realistic when connecting (e.g., puffed upholstery), but the dimension boxes will still display the proper measurements.

![💡Showcase of Dimension Box Set Up with Puffed Upholstery to Maintain Correct Dimensions](https://621103948-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsqWfi8ifBhTdkvf1vOlY%2Fuploads%2F0hv5EdvY1QVVo1P3NsE5%2Fnew-project-7_16dr624.jpg?alt=media)

* Dimension boxes must be cubic.

![💡Dimension Box with Snaps](https://621103948-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsqWfi8ifBhTdkvf1vOlY%2Fuploads%2FBCEYMBxCYrSEj3Hugp9H%2Fnew-project-9_z8r7qc.jpg?alt=media)

## Multi Direction Snap

### Standard workflow (you do not want to use Mimeeq scripts)

For clients implementing this 3D snap functionality without utilizing Mimeeq's scripting services, the process requires manual handling of snap exports with specific technical considerations:

* do not flip the normals - use the proper rotation of the snap instead
* do not apply transforms, since the snap positioning depends on the raw object transformation
* export the object to GLB with the Draco compression

### Automated workflow (you want to use Mimeeq scripts)

If you want to automate your workflow, we recommend using our scripting services. To understand how to prepare the Blender file for scripting, please use the step-by-step instruction below:

**Step 1: Install the Custom Snap Model Plugin**

* Download the [add\_custom\_model\_plugin.zip](https://d1bd8jihtqzqs4.cloudfront.net/help_articles/add_custom_model_plugin.zip) file containing the Custom Snap Model plugin
* Open Blender 4.2 or higher
* Navigate to Edit → Preferences → Add-ons
* Click "Install from Disk..." and select the downloaded zip file
* Enable the plugin by checking the checkbox next to it in the add-ons list
* The plugin integrates seamlessly with Blender's existing interface without requiring restart

**Step 2: Accessing the Snap Model Tool** The plugin provides two convenient access methods:

* **Primary Method**: Use the Add menu → Mimeeq Models → Snap
* **Alternative Method**: Access through the context menu in 3D viewport - shift+A → Mimeeq Models → Snap

**Step 3: Initial Snap Creation**

* When first added, the snap model appears as a pyramid shape to allow you to easily identify the direction and rotation (side arrow)
* The snap object initializes with default transform values: Location (0,0,0), Rotation (0°,0°,0°), Scale (1.000,1.000,1.000)
* The object is named with the specific convention; the prefix is **md-snap.**

{% hint style="warning" %}
It is important not to change the md-snap prefix, as it is a command for the exporting script not to apply any tranforms on this object (it does for every other object)
{% endhint %}

**Step 4: Snap Positioning and Orientation**

* Position the initial snap at the desired connection point on your 3D model
* Use the Transform panel to precisely adjust **Location** and **Rotation** values - this is crucial as the system bases on the rotation of the target snap

**Step 5: Creating Multiple Snap Variations**

* Duplicate the initial snap object (Shift+D) to create additional snap points
* Rename each snap with descriptive names following your project's naming convention. Remember to keep **md-snap** prefix.
* Rotate each duplicated snap to achieve the desired 360-degree directional coverage
* Each snap's rotation defines its unique connection behavior and object alignment properties

## Final Words

It's not uncommon to need multiple iterations to correct errors, especially in complex projects with numerous modules. The process typically involves preparing the files, setting up modules, identifying any issues, and then rerunning until the desired quality is achieved. This iterative approach is standard in the workflow. **Please contact us in case of any edge case not covered by this documentation.**


---

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