# 3D Creation

#### A - Creating the Hierarchy

Start by creating your working hierarchy, right-click → New Collection.

[![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/HYqimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/HYqimage.png)

****What do these collections mean?****

- ****LOD****: Contains all the LODs of the object you want to create.
- ****Light Portals****: Contains window and door portals, as well as the BSP\_n mesh.
- ****Volumetric Boxes****: Contains the volumes of the building’s probe volume.
- ****Memory Points****: Contains all the portal locations.
- ****Colliders****: Contains colliders for object hardness in Arma.
- ****Occluders****: Contains the building’s occluders, which help the player avoid loading objects beyond the wall.  
      
    B - Creating the LOD Mesh

This part will mainly be done in Blender, with an import into the Reforger tool at the end.

1. ****Creating the 3D model****  
    For building creation, there aren’t necessarily any difficulties; just remember that walls and floors are cubes with one visible face and one invisible face. This setup is essential to prevent collisions and in-game issues.

****Example:****  
<span style="white-space: pre-wrap;">I’ve created a wall for the building’s frame by subdividing the edges of the foundation cube. As you can see, one side is split into three faces. Upon closer inspection, there are two faces overlapping inside (one visible and one invisible). </span>****THIS IS NOT GOOD.****  
[![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/CPyimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/CPyimage.png)

[![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/IrHimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/IrHimage.png)

To delete if, select the face -&gt; suppr -&gt; deletefe face

after, you can create interior wall

1. ****Adding Materials for MultiMat****  
    After creating the interior walls, apply a material (an emat in Reforger), allowing up to 7 textures per material. Apply materials from the bottom up, floor by floor.  
    ****To Create a Material****<span style="white-space: pre-wrap;">: Go to </span>**Material**<span style="white-space: pre-wrap;"> → + → name it logically, like </span>`<span class="editor-theme-code">YOUR_OBJECT_NAME_INT_or_EXT_n</span>`.  
    [![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/EM8image.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/EM8image.png)  
    ****To Apply a Material****: Select face(s) → Material → check the desired material → Assign.
2. ****Adding Door and Window Frames****  
    <span style="white-space: pre-wrap;">In order to create thsi you will need to get the right dimensions here the </span>[wiki from reforger](https://community.bistudio.com/wiki/Arma_Reforger:Environment_Metrics):

<table id="bkmrk-measurementsmall-win" style="font-size: 14px; line-height: inherit; background-color: rgb(248, 249, 250); color: rgb(32, 33, 34); margin: 1em 0px; border: 1px solid rgb(162, 169, 177); border-collapse: collapse; box-shadow: rgb(162, 169, 177) 0px 0px 0.125em; font-family: sans-serif; letter-spacing: normal; orphans: 2; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><th class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; background-color: rgb(242, 242, 242); text-align: center;">Measurement

</th><th class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; background-color: rgb(242, 242, 242); text-align: center;">Small Window

</th><th class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; background-color: rgb(242, 242, 242); text-align: center;">Large Window

</th></tr><tr><td style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em;">Min distance from the floor

</td><td style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em;">169 cm

</td><td style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em;">99 cm

</td></tr></tbody></table>

Common dimensions

<table class="align-center" id="bkmrk-common-dimensionshei" style="font-size: 14px; line-height: inherit; background-color: rgb(248, 249, 250); color: rgb(32, 33, 34); margin: 1em 0px; border: 1px solid rgb(162, 169, 177); border-collapse: collapse; box-shadow: rgb(162, 169, 177) 0px 0px 0.125em; font-family: sans-serif; letter-spacing: normal; orphans: 2; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><colgroup><col></col><col></col><col></col><col></col><col></col><col></col><col></col></colgroup><tbody><tr><th class="align-center" colspan="2" rowspan="2" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; background-color: rgb(242, 242, 242); text-align: center;"></th><th class="align-center" colspan="5" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; background-color: rgb(242, 242, 242); text-align: center;">Height

</th></tr><tr><th class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; background-color: rgb(242, 242, 242); text-align: center;">47

</th><th class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; background-color: rgb(242, 242, 242); text-align: center;">72

</th><th class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; background-color: rgb(242, 242, 242); text-align: center;">118

</th><th class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; background-color: rgb(242, 242, 242); text-align: center;">142

</th><th class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; background-color: rgb(242, 242, 242); text-align: center;">182\*

</th></tr><tr><th class="align-center" rowspan="6" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; background-color: rgb(242, 242, 242); text-align: center;">Width

</th><th class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; background-color: rgb(242, 242, 242); text-align: center;">70

</th><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">70 × 47

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">70 × 72

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">-

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">70 × 142

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">70 × 182

</td></tr><tr><th class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; background-color: rgb(242, 242, 242); text-align: center;">90

</th><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">-

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">90 × 72

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">-

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">90 × 142

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">90 × 182

</td></tr><tr><th class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; background-color: rgb(242, 242, 242); text-align: center;">110

</th><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">-

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">-

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">110 × 118

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">110 × 142

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">-

</td></tr><tr><th class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; background-color: rgb(242, 242, 242); text-align: center;">130

</th><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">-

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">130 × 72

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">-

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">130 × 142

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">130 × 182

</td></tr><tr><th class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; background-color: rgb(242, 242, 242); text-align: center;">170

</th><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">-

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">170 × 72

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">-

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">170 × 142

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">170 × 182

</td></tr><tr><th class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; background-color: rgb(242, 242, 242); text-align: center;">195

</th><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">-

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">195 × 72

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">195 × 142

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">195 × 182

</td><td class="align-center" style="border: 1px solid rgb(162, 169, 177); padding: 0.2em 0.4em; text-align: center;">-

</td></tr></tbody></table>

**\* recommended ceiling height: 330 cm**

Some other uncommon formats exist, such as e.g 260×230 for the air control tower.  
  
It’s better to create cutouts for doors and windows by defining their dimensions precisely. Two techniques:

- **Boolean Modifier**: Create a cube with the dimensions, place it, then select the primary LOD → Modifier → Boolean → select the cube and apply. This method is fast but can cause complex edge and BSP issues.
- **Subdivision Technique**: For clean frames, subdivide edges to create door/window frames, keeping the edges as simple as possible.

****Creating the Box Volume****  
Select all interior building faces, duplicate them, and form a cube with visible exterior faces. Do this floor by floor before adding the roof.

[![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/sThimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/sThimage.png)

- ****Steps****<span style="white-space: pre-wrap;">: In </span>**Edit Mode**<span style="white-space: pre-wrap;"> → Shift + D → Esc → P → Selection. Rename this mesh </span>`<span class="editor-theme-code">BOXVOL_n</span>`<span style="white-space: pre-wrap;">, move it to </span>**Volumetric Boxes**<span style="white-space: pre-wrap;">, remove its material, and apply </span>**dummyvolume**. Simplify the shape by removing unnecessary edges and points.

****Creating Sockets for Portals****  
<span style="white-space: pre-wrap;">In the </span>**Memory Points**<span style="white-space: pre-wrap;"> collection, add an empty point.</span>  
[![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/Ed1image.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/Ed1image.png)

- ****Socket Naming Conventions****:
    - `<span class="editor-theme-code">socket_door_ext</span>`: for exterior doors
    - `<span class="editor-theme-code">socket_door_int</span>`: for interior doors
    - `<span class="editor-theme-code">socket_window</span>`: for windows  
          
        For doors, try to position them precisely in the center of the frame at ground level, and for windows, ensure they’re centered within their frames.  
        [![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/Q6uimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/Q6uimage.png)
- <span style="white-space: pre-wrap;">Place sockets at the center of door and window frames. Once positioned, click </span>**Enfusion Tool**<span style="white-space: pre-wrap;"> → </span>**Generate Portals**. Check the positioning and materials of the generated portals.  
    [![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/655image.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/655image.png)

  
****PRO TIPS****:- <span style="white-space: pre-wrap;">Sometimes, portals are misaligned, and you can adjust them manually. </span>
- <span style="white-space: pre-wrap;">Make sure to place the red faces on the outside. </span>
- <span style="white-space: pre-wrap;">Some materials may not generate correctly if the frame dimensions are off, so it’s essential to refer to the available portal that matches the frame size. </span>
- Use only one type of portal for single doors, double windows, etc.  
      
    Finally, the created portals have names like `PRT\_DOOR\_GARAGE\_A\_EM\_` ending with “\_”. Generate a GUID with the Enfusion tool to place it at the end of the material name: go to \*Utilities\* → \*Generate GUID\*.

****Creating the BSP****  
<span style="white-space: pre-wrap;">BSPs help attenuate sound within the building. Duplicate the LOD, remove excess details, rename it </span>`<span class="editor-theme-code">BSP_n</span>`<span style="white-space: pre-wrap;">, and place it in </span>**Light Portals**<span style="white-space: pre-wrap;"> with </span>**dummyvolume**<span style="white-space: pre-wrap;"> applied.</span>  
****BSP Validation****<span style="white-space: pre-wrap;">: Go to </span>**Enfusion Tool**<span style="white-space: pre-wrap;"> → </span>**Mesh Topology**<span style="white-space: pre-wrap;"> → Check “Non-Planar Faces,” “Non-Convex Geometry,” “Non-Manifold Edges” → </span>**Create Validator**<span style="white-space: pre-wrap;"> (Temporary BSPs appear in </span>**Invalid\_Topology**).  
[![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/BGCimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/BGCimage.png)  
****PRO TIPS****:

- <span style="white-space: pre-wrap;"> 0 non-manifold edges and non-planar faces.</span>
- Non-convex edges are acceptable.

****LOD Verification****  
Once all your frames, box volumes, portals, and BSP are correctly set:

- Check between walls to ensure there are no overlapping faces.
- Ensure each face has a maximum of four edges.
- Verify that all faces are oriented in the correct direction.
- Make sure each face has the correct material assigned.
- Confirm that the bottom faces are deleted.
- Dissolve unnecessary edges and reduce the number of points as much as possible.  
      
    Pro tips: This order applies to a single-story building; if additional floors are added, the BSP and box volume setup will differ.

****Apply Weighted Normal****

Arma doesn't like objects that are too sharp, so just go to your LOD --&gt; modify --&gt; Normals --&gt; Weighted Normal****.****Then click on “keep sharp” and apply this to your LOD.[![Capture d'écran 2025-02-24 235449.png](https://wiki.nabla.sh/uploads/images/gallery/2025-02/scaled-1680-/capture-decran-2025-02-24-235449.png)](https://wiki.nabla.sh/uploads/images/gallery/2025-02/scaled-1680-/capture-decran-2025-02-24-235449.png)

****Creating Multiple LODs****  
<span style="white-space: pre-wrap;">Use a mod for LOD separation if desired. Select </span>**LOD0**<span style="white-space: pre-wrap;"> → </span>**LODs Maker**<span style="white-space: pre-wrap;"> → </span>**Make Lod Object**.

****Creating Colliders****  
<span style="white-space: pre-wrap;">Duplicate your </span>**LOD0**<span style="white-space: pre-wrap;"> mesh in </span>**Object Mode**<span style="white-space: pre-wrap;"> (Shift + D). Rename it </span>`<span class="editor-theme-code">UTM_LOD0</span>`, try to add an DECIMATE effect on it to reduce a bit some detail in order to make lighter collider (blue wrench)[![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/eeKimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/eeKimage.png)  
  
<span style="white-space: pre-wrap;">go to </span>**Enfusion Tool**<span style="white-space: pre-wrap;"> → </span>**Colliders Setup**<span style="white-space: pre-wrap;"> to set:</span>

- **Game Material**: Collider material type.
- **Layer Preset**: Specify whether it’s a building, prop, etc.  
    [![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/ouYimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/ouYimage.png)

****Creating an Occluder****  
<span style="white-space: pre-wrap;">Create a cube, place it against a solid wall, apply </span>**dummyvolume**<span style="white-space: pre-wrap;">, and rename it </span>`<span class="editor-theme-code">OCC_n</span>`<span style="white-space: pre-wrap;">. Select </span>**Sort Object**.  
[![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/DJKimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/DJKimage.png)

You will need to do this operation only on the face that are closed (non windows and door)

### Export, Import, and 3D Testing

<span style="white-space: pre-wrap;">Only once all steps are completed, you can export your building: go to </span>**File**<span style="white-space: pre-wrap;"> → </span>**Export**<span style="white-space: pre-wrap;"> → </span>**FBX**<span style="white-space: pre-wrap;"> → Check </span>**Custom Properties**. Open the Enfusion tool and import it!  
****PRO TIPS:****

- <span style="white-space: pre-wrap;">Keep the directory structure consistent between assets and prefabs, for example, </span>**ASSETS → Template**<span style="white-space: pre-wrap;"> in assets should match </span>**PREFAB → Template**<span style="white-space: pre-wrap;"> in prefabs.</span>

Once imported, select the XOB and adjust the following properties:

- ****General****<span style="white-space: pre-wrap;"> → </span>****Source File****<span style="white-space: pre-wrap;"> → Select your FBX</span>
- <span style="white-space: pre-wrap;">Check </span>****Generate BSP &amp; Export Opaque Leave****
- <span style="white-space: pre-wrap;">Uncheck </span>****Merge Tri Meshes****<span style="white-space: pre-wrap;"> if you have multiple colliders</span>
- <span style="white-space: pre-wrap;">Click </span>**Import**  
    [![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/03jimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/03jimage.png)

****PRO TIPS:****

- You’ll see the texture emats, dummyvolume, and portals.
- After importing the emats, update the portal emats:
    - <span style="white-space: pre-wrap;">For each emat starting with </span>`<span class="editor-theme-code">PRT_*</span>`<span style="white-space: pre-wrap;">, change its class to </span>****MatLightPortal****.
    - <span style="white-space: pre-wrap;">In </span>****Projection Map****, select the correct portal based on the frame.
    - <span style="white-space: pre-wrap;">Set </span>****Direct Light Desaturation****<span style="white-space: pre-wrap;"> to 1.</span>  
        [![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/ky3image.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/ky3image.png)  
          
        Your 3D model is now ready! Now, it’s time to texture it.

###   