# 3D Building Creation Tutorial

The goal of this documentation is to provide all the tools needed to create a building from A to Z in Arma Reforger.

# Prerequisites

[Arma documentation](https://community.bistudio.com/wiki/Arma_Reforger:FBX_Import#Probes_and_Probe_Volumes)

- Blender version 4.2
- Enfusion tool addon enabled
- Substance Painter or Armor Paint
- Substance Painter export file
- ****OPTIONAL:****<span style="white-space:pre-wrap;"> </span>[<u><span style="color:rgb(17,85,204);">UV\_PACKER\_MASTER</span></u>](https://drive.google.com/file/d/1qxOtvqbSmytDD_qe56GYZtlYroDR7Uo1/view?usp=drive_link)
- ****OPTIONAL:****<span style="white-space:pre-wrap;"> </span><span style="color:rgb(0,0,0);white-space:pre-wrap;"> </span>[<u><span style="color:rgb(17,85,204);">LOD MAKER</span></u>](https://drive.google.com/file/d/12YmnU1k9GCVNWOZuuZNPqaMZJ_U3QAmz/view?usp=drive_link)

# 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;font-family:sans-serif;letter-spacing:normal;text-transform:none;word-spacing: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;font-family:sans-serif;letter-spacing:normal;text-transform:none;word-spacing: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.

###   

# UV creation in blender

This process will start in Blender, then move to Substance Painter, and finally Enfusion Tool.

I recommend using textures at 4096 or even 8192 resolution for higher quality and precision in Substance. In the Reforger tool, you can later downscale textures to 2048 if needed.

#### UV Creation in Blender

1. ****Separate Faces by Material for Easier UV Creation****  
    <span style="white-space:pre-wrap;">Select </span>**LOD0**<span style="white-space:pre-wrap;"> → </span>**Edit Mode**<span style="white-space:pre-wrap;"> → select all faces → P “by material”.</span>
2. ****Adding Seams****  
    Seams help control how textures are applied to objects. For instance, with a cube, if unfolded, you have six faces. Without seams, the texture will apply uniformly. With seams on all edges, the cube splits into six squares.
    - <span style="white-space:pre-wrap;">To create a seam, select edges → right-click → </span>**Mark Seam**.  
        [![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/OV4image.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/OV4image.png)
    
    ****PRO TIP:****<span style="white-space:pre-wrap;"> In this example, I selected everything and created seams, but I don’t want interior wall seams (e.g., under windows). So, select those specific edges → right-click → </span>**Clear Seam**.
3. ****Creating UVs****  
    UVs unfold the 3D model (e.g., a cube with six faces). Start by renaming the UV map for both materials (which remain separate).  
    [![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/9FOimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/9FOimage.png)  
    
    - <span style="white-space:pre-wrap;">For better visibility, go to each material, click the yellow circle next to </span>**Base Color**<span style="white-space:pre-wrap;"> → </span>**Image Texture**<span style="white-space:pre-wrap;"> → </span>**New**<span style="white-space:pre-wrap;"> → </span>**Generate Type**<span style="white-space:pre-wrap;"> → </span>**Color Grid**.  
        [![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/3j9image.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/3j9image.png)
    - <span style="white-space:pre-wrap;">Click </span>**UV Editing**<span style="white-space:pre-wrap;"> (top menu) → </span>**New**<span style="white-space:pre-wrap;"> (4096x4096) → </span>**Color Grid**. A colored grid will appear on the left.  
          
        A colored grid has appeared on the left.  
        Now, when I select all faces in Edit Mode for a single material, I get a completely broken UV layout.  
        [![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/lg7image.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/lg7image.png)
    
    <span style="white-space:pre-wrap;">Select all faces in </span>**Edit Mode**<span style="white-space:pre-wrap;"> of a single material. If the UV is misaligned:</span>
    - <span style="white-space:pre-wrap;">Press </span>****U → Reset****<span style="white-space:pre-wrap;">, then </span>****U → Unwrap****<span style="white-space:pre-wrap;"> to correct it.</span>  
        [![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/Wuyimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/Wuyimage.png)
    
      
    You can also use UVPackmaster3:
    - <span style="white-space:pre-wrap;">After resetting and unwrapping, click </span>****A****<span style="white-space:pre-wrap;"> (to select all) in the left window → </span>**Pack**.  
        [![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/6mHimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/6mHimage.png)
    
    Do the same things for each material
4. ****Verification****  
    <span style="white-space:pre-wrap;">Once UVs are set, return to </span>**Layout**<span style="white-space:pre-wrap;"> and verify that the grid squares aren’t stretched.</span>  
    [![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/8Dximage.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/8Dximage.png)
5. ****Export****  
    <span style="white-space:pre-wrap;">Before exporting, select all materials and join them to the same LOD with </span>****Ctrl + D****<span style="white-space:pre-wrap;">. Export the FBX with only </span>**LOD0**.

# Creating Texture Masks in Substance Painter

1. ****Import and Setup****  
    <span style="white-space:pre-wrap;">In Substance Painter, go to </span>**New**<span style="white-space:pre-wrap;"> → </span>**PBR - Metallic Roughness Alpha-blend**<span style="white-space:pre-wrap;"> model → select your FBX → set resolution to 4096.</span>  
    <span style="white-space:pre-wrap;">(you can use the export preference from bohemia: </span>[**https://github.com/BohemiaInteractive/Arma-Reforger-Misc/tree/main/Art/Substance%20Export%20Profiles**](https://github.com/BohemiaInteractive/Arma-Reforger-Misc/tree/main/Art/Substance%20Export%20Profiles)<span style="white-space:pre-wrap;">) OR you can use my preset export </span><u><span style="color:rgb(206,212,217);">https://drive.google.com/file/d/1f9OWzuCv8zRdU5heMJhle\_m5PEqSlm6z/view?usp=drive\_link</span></u>
2. <span style="color:rgb(126,140,141);">Put the export preset on Documents\\Adobe\\Adobe Substance 3D Painter\\assets\\export-presets</span>  
      
    [![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/gDJimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/gDJimage.png)  
    You’ll see two views: the 3D view on the left and the 2D view on the right. At the top right, you’ll find your two materials.

Before starting, set up the Substance project:

1. <span style="white-space:pre-wrap;">Select a material → </span>**Texture Set Settings**<span style="white-space:pre-wrap;"> → </span>**Bake Mesh Maps**.
2. Set the resolution to 4096.
3. <span style="white-space:pre-wrap;">Check </span>**Use Low Poly Mesh**.
4. <span style="white-space:pre-wrap;">Set </span>**Antialiasing**<span style="white-space:pre-wrap;"> to x4.</span>
5. <span style="white-space:pre-wrap;">Choose </span>**Match by Mesh Name**.
6. Bake the selected textures.

Repeat these steps for each material.

1. ****Add User Channels****: Add channels for user0, user1, user2, user3, and user4.
2. ****Delete Default Layer****<span style="white-space:pre-wrap;">: In the </span>**Layers**<span style="white-space:pre-wrap;"> panel, delete the default layer.</span>
3. ****Create Folders****:
    - <span style="white-space:pre-wrap;">Create a folder named </span>**Mask**<span style="white-space:pre-wrap;"> and add three fill layers. Assign each a black mask and rename them R, G, and B.</span>
    - <span style="white-space:pre-wrap;">Create another folder named </span>**VFX**<span style="white-space:pre-wrap;"> and add two fill layers with black masks, renaming them Rvfx and Gvfx.</span>
4. ****Set User Properties****:
    - <span style="white-space:pre-wrap;">For each layer, go to </span>**Properties - Fill**<span style="white-space:pre-wrap;"> and deselect unused user channels.</span>
    - Assign channels: R=user0, G=user1, B=user2, Rvfx=user3, Gvfx=user4.
5. ****Create Two Empty Layers****: Place them below the existing fill layers.
    - <span style="white-space:pre-wrap;">For the </span>**export mask**, set user0, user1, and user2.
    - <span style="white-space:pre-wrap;">For the </span>**export VFX**, set user3 and user4.

This setup should be complete and ready for texturing.  
[![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/8Dfimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/8Dfimage.png)

1. Object texturing  
    As mentioned above, a multimat can include:

- One global texture
- Three texture masks
- Two VFX masks

This setup totals six textures. Here, I won’t use Substance Painter's textures, as I’ll apply the vanilla game textures instead. However, the concept remains the same. In this template example, I’ll apply as many details as possible to the faces.

[![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/TCoimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/TCoimage.png)  
Here, in each layer, I’ve added a base color corresponding to the mask colors, with different colors for the floor, walls, ceiling, and tags on the VFX masks.

****c - Export****  
<span style="white-space:pre-wrap;">Once finished, go to </span>**File**<span style="white-space:pre-wrap;"> → </span>**Export Textures**.  
Select an output directory → choose the output template “MY PRESET REFORGER.”or "Arma reforger BCR"  
[![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/hu7image.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/hu7image.png)

<span style="white-space:pre-wrap;">If you select one of the materials (e.g., `CUBE\_EXT\_01`), you can choose to export specific textures—here, only the VFX and global\_mask. </span>

Click \*Export\* to complete the process.

# Import and modification in Enfusion Tool

****a - Import****  
Once imported, select the XOB file and modify the following properties:

- <span style="white-space:pre-wrap;">Go to </span>****General****<span style="white-space:pre-wrap;"> → </span>****Source File****<span style="white-space:pre-wrap;"> → select your FBX file.</span>
- <span style="white-space:pre-wrap;">Check </span>****Generate BSP, Export Opaque Leave****<span style="white-space:pre-wrap;"> </span>****&amp; Export skinning****
- <span style="white-space:pre-wrap;">Click </span>****Import****<span style="white-space:pre-wrap;"> to finalize the import.</span>  
    [![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/KV9image.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/KV9image.png)

****b- Modificaiont of the Emat****

Go to the emat concerning -&gt; change class -&gt; MatPBRMulti  
[![image.png](https://wiki.nabla.sh/uploads/images/gallery/2024-11/scaled-1680-/PJhimage.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-11/PJhimage.png)

****c - Import your texture masks****:

- <span style="white-space:pre-wrap;">Place the </span>****global mask****<span style="white-space:pre-wrap;"> in the </span>**Mask Map**.
- <span style="white-space:pre-wrap;">Place the </span>****VFX mask****<span style="white-space:pre-wrap;"> in the </span>**VFW Map**.

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

# Prefab Building Creation

**a - Prefab Création**

Open a custom world, drag and drop your XOB on your view port.

[![Capture d'écran 2024-12-17 164049.png](https://wiki.nabla.sh/uploads/images/gallery/2024-12/scaled-1680-/capture-decran-2024-12-17-164049.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-12/scaled-1680-/capture-decran-2024-12-17-164049.png)

Take your generic entity en drag and drop on your ressource browser and give it a name like building**\_base**

[![Capture d'écran 2024-12-17 164136.png](https://wiki.nabla.sh/uploads/images/gallery/2024-12/scaled-1680-/capture-decran-2024-12-17-164136.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-12/scaled-1680-/capture-decran-2024-12-17-164136.png)

**b - Add Component**

Edit your prefab and on object properpy :

- Right clic on Generic entity--&gt; change class --&gt; SCR\_destructibleBuildingEntity[![Capture d'écran 2024-12-17 164530.png](https://wiki.nabla.sh/uploads/images/gallery/2024-12/scaled-1680-/capture-decran-2024-12-17-164530.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-12/scaled-1680-/capture-decran-2024-12-17-164530.png)
- Check Relative Y and verify when "**is building**" was check
- Add RplComponent, Hierarchy, WorldSubsceneComponent
- Add RigidBody and check "**Static**" and "**Model Geometry**"
- Save and your building is RIGHT
- Add Occluder
- Add Persistence and uncheck "**Register Loaded"**
- <span style="white-space:pre-wrap;">Add an </span>**SCR\_DestructibleComponent**<span style="white-space:pre-wrap;"> on ArmaReforger/Prefab/Stuctures/Core/Destruction and add your building\_ruin on prefab\_ruin section of this component</span>

**c - Add probeVolume**

The volume probe allows you to have darkened buildings. To add more, simply search for “probe” and add it directly as a child in the building tree.

[![Capture d'écran 2024-12-17 165146.png](https://wiki.nabla.sh/uploads/images/gallery/2024-12/scaled-1680-/capture-decran-2024-12-17-165146.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-12/scaled-1680-/capture-decran-2024-12-17-165146.png)

**d - Add furniture**

An empty building is fine, but a building full of supplies is better! Following the nomenclature, there's the empty “building\_base” with a prefab inside, usually called “building\_furniture”.

<span style="white-space:pre-wrap;">To do this, open a custom world, drop the </span>**prefab into the viewport**, then add a **genericentity**<span style="white-space:pre-wrap;"> in the viewport's tree at coordinates </span>**0.0.0**.

[![Capture d'écran 2024-12-17 170020.png](https://wiki.nabla.sh/uploads/images/gallery/2024-12/scaled-1680-/capture-decran-2024-12-17-170020.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-12/scaled-1680-/capture-decran-2024-12-17-170020.png)

[![Capture d'écran 2024-12-17 170130.png](https://wiki.nabla.sh/uploads/images/gallery/2024-12/scaled-1680-/capture-decran-2024-12-17-170130.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-12/scaled-1680-/capture-decran-2024-12-17-170130.png)

Then all the objects you place in the viewport must be put in the genericentity like this.

[![Capture d'écran 2024-12-17 170444.png](https://wiki.nabla.sh/uploads/images/gallery/2024-12/scaled-1680-/capture-decran-2024-12-17-170444.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-12/scaled-1680-/capture-decran-2024-12-17-170444.png)

<span style="white-space:pre-wrap;">Then select the generic entity, move it to your building's resource browser and give it the name building\_furniture. </span>

[![Capture d'écran 2024-12-17 170627.png](https://wiki.nabla.sh/uploads/images/gallery/2024-12/scaled-1680-/capture-decran-2024-12-17-170627.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-12/scaled-1680-/capture-decran-2024-12-17-170627.png)

Duplicate your batiment\_base and give it the name of the building --&gt; edit it

Finally, move the building\_furniture into the building tree, as the generic entity was at coordinates 0.0.0, the furnitures will be in the same place where you placed them.

[![Capture d'écran 2024-12-17 170924.png](https://wiki.nabla.sh/uploads/images/gallery/2024-12/scaled-1680-/capture-decran-2024-12-17-170924.png)](https://wiki.nabla.sh/uploads/images/gallery/2024-12/scaled-1680-/capture-decran-2024-12-17-170924.png)

# LODs making to improve performance

As every 3D model importing in a game it's supper important to have multiple Level Of Detail to be improve performance:

<span style="white-space:pre-wrap;">here the explainaition for it: </span>[https://wiki.nabla.sh/books/general-info-tips-for-the-workbench/page/what-are-lods-and-why-should-i-add-them](https://wiki.nabla.sh/books/general-information-about-workbench/page/what-are-lods-and-why-should-i-add-them)