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 Blender version 4.2 Enfusion tool addon enabled Substance Painter or Armor Paint Substance Painter export file OPTIONAL: UV_PACKER_MASTER OPTIONAL:  LOD MAKER 3D Creation A - Creating the Hierarchy Start by creating your working hierarchy, right-click → New Collection. 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. 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: 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). THIS IS NOT GOOD. To delete if, select the face -> suppr -> deletefe face after, you can create interior wall 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: Go to Material → + → name it logically, like YOUR_OBJECT_NAME_INT_or_EXT_n. To Apply a Material: Select face(s) → Material → check the desired material → Assign. Adding Door and Window Frames In order to create thsi you will need to get the right dimensions here the wiki from reforger: Measurement Small Window Large Window Min distance from the floor 169 cm 99 cm Common dimensions Height 47 72 118 142 182* Width 70 70 × 47 70 × 72 - 70 × 142 70 × 182 90 - 90 × 72 - 90 × 142 90 × 182 110 - - 110 × 118 110 × 142 - 130 - 130 × 72 - 130 × 142 130 × 182 170 - 170 × 72 - 170 × 142 170 × 182 195 - 195 × 72 195 × 142 195 × 182 - * 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. Steps: In Edit Mode → Shift + D → Esc → P → Selection. Rename this mesh BOXVOL_n, move it to Volumetric Boxes, remove its material, and apply dummyvolume. Simplify the shape by removing unnecessary edges and points. Creating Sockets for Portals In the Memory Points collection, add an empty point. Socket Naming Conventions: socket_door_ext: for exterior doors socket_door_int: for interior doors socket_window: 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. Place sockets at the center of door and window frames. Once positioned, click Enfusion Tool → Generate Portals. Check the positioning and materials of the generated portals. PRO TIPS: Sometimes, portals are misaligned, and you can adjust them manually. Make sure to place the red faces on the outside. 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. 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 BSPs help attenuate sound within the building. Duplicate the LOD, remove excess details, rename it BSP_n, and place it in Light Portals with dummyvolume applied. BSP Validation: Go to Enfusion Tool → Mesh Topology → Check “Non-Planar Faces,” “Non-Convex Geometry,” “Non-Manifold Edges” → Create Validator (Temporary BSPs appear in Invalid_Topology). PRO TIPS: 0 non-manifold edges and non-planar faces. 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 --> modify --> Normals --> Weighted Normal.Then click on “keep sharp” and apply this to your LOD. Creating Multiple LODs Use a mod for LOD separation if desired. Select LOD0 → LODs Maker → Make Lod Object. Creating Colliders Duplicate your LOD0 mesh in Object Mode (Shift + D). Rename it UTM_LOD0, try to add an DECIMATE effect on it to reduce a bit some detail in order to make lighter collider (blue wrench) go to Enfusion Tool → Colliders Setup to set: Game Material: Collider material type. Layer Preset: Specify whether it’s a building, prop, etc. Creating an Occluder Create a cube, place it against a solid wall, apply dummyvolume, and rename it OCC_n. Select Sort Object. You will need to do this operation only on the face that are closed (non windows and door) Export, Import, and 3D Testing Only once all steps are completed, you can export your building: go to File → Export → FBX → Check Custom Properties. Open the Enfusion tool and import it! PRO TIPS: Keep the directory structure consistent between assets and prefabs, for example, ASSETS → Template in assets should match PREFAB → Template in prefabs. Once imported, select the XOB and adjust the following properties: General → Source File → Select your FBX Check Generate BSP & Export Opaque Leave Uncheck Merge Tri Meshes if you have multiple colliders Click Import PRO TIPS: You’ll see the texture emats, dummyvolume, and portals. After importing the emats, update the portal emats: For each emat starting with PRT_*, change its class to MatLightPortal. In Projection Map, select the correct portal based on the frame. Set Direct Light Desaturation to 1. 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 Separate Faces by Material for Easier UV Creation Select LOD0 → Edit Mode → select all faces → P “by material”. 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. To create a seam, select edges → right-click → Mark Seam. PRO TIP: 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 → Clear Seam. 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). For better visibility, go to each material, click the yellow circle next to Base Color → Image Texture → New → Generate Type → Color Grid. Click UV Editing (top menu) → New (4096x4096) → 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. Select all faces in Edit Mode of a single material. If the UV is misaligned: Press U → Reset, then U → Unwrap to correct it. You can also use UVPackmaster3: After resetting and unwrapping, click A (to select all) in the left window → Pack. Do the same things for each material Verification Once UVs are set, return to Layout and verify that the grid squares aren’t stretched. Export Before exporting, select all materials and join them to the same LOD with Ctrl + D. Export the FBX with only LOD0. Creating Texture Masks in Substance Painter Import and Setup In Substance Painter, go to New → PBR - Metallic Roughness Alpha-blend model → select your FBX → set resolution to 4096. (you can use the export preference from bohemia: https://github.com/BohemiaInteractive/Arma-Reforger-Misc/tree/main/Art/Substance%20Export%20Profiles) OR you can use my preset export https://drive.google.com/file/d/1f9OWzuCv8zRdU5heMJhle_m5PEqSlm6z/view?usp=drive_link Put the export preset on Documents\Adobe\Adobe Substance 3D Painter\assets\export-presets 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: Select a material → Texture Set Settings → Bake Mesh Maps. Set the resolution to 4096. Check Use Low Poly Mesh. Set Antialiasing to x4. Choose Match by Mesh Name. Bake the selected textures. Repeat these steps for each material. Add User Channels: Add channels for user0, user1, user2, user3, and user4. Delete Default Layer: In the Layers panel, delete the default layer. Create Folders: Create a folder named Mask and add three fill layers. Assign each a black mask and rename them R, G, and B. Create another folder named VFX and add two fill layers with black masks, renaming them Rvfx and Gvfx. Set User Properties: For each layer, go to Properties - Fill and deselect unused user channels. Assign channels: R=user0, G=user1, B=user2, Rvfx=user3, Gvfx=user4. Create Two Empty Layers: Place them below the existing fill layers. For the export mask, set user0, user1, and user2. For the export VFX, set user3 and user4. This setup should be complete and ready for texturing. 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. 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 Once finished, go to File → Export Textures. Select an output directory → choose the output template “MY PRESET REFORGER.”or "Arma reforger BCR" 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. 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: Go to General → Source File → select your FBX file. Check Generate BSP, Export Opaque Leave & Export skinning Click Import to finalize the import. b- Modificaiont of the Emat Go to the emat concerning -> change class -> MatPBRMulti c - Import your texture masks: Place the global mask in the Mask Map. Place the VFX mask in the VFW Map. Prefab Building Creation a - Prefab Création Open a custom world, drag and drop your XOB on your view port. Take your generic entity en drag and drop on your ressource browser and give it a name like building_base b - Add Component Edit your prefab and on object properpy : Right clic on Generic entity--> change class --> SCR_destructibleBuildingEntity 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" Add an SCR_DestructibleComponent on ArmaReforger/Prefab/Stuctures/Core/Destruction and add your building_ruin on prefab_ruin section of this component 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. 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”. To do this, open a custom world, drop the prefab into the viewport, then add a genericentity in the viewport's tree at coordinates 0.0.0. Then all the objects you place in the viewport must be put in the genericentity like this. Then select the generic entity, move it to your building's resource browser and give it the name building_furniture. Duplicate your batiment_base and give it the name of the building --> 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. 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: here the explainaition for it: https://wiki.nabla.sh/books/general-info-tips-for-the-workbench/page/what-are-lods-and-why-should-i-add-them