How to Create Procedural Buildings
Procedural buildings are a new type of volume that allow you to apply a ruleset to any part of the building. They are used to control the appearance of doors, windows, roofs, smaller details and the overall architectural style.
A number of advances have been made in this area. Some of them are based on user parametrization of floor-plans while others are based on stochastic generation of virtual building models.
How to generate a ProcBuilding
Buildings can be generated with a variety of rules sets. To apply a ruleset, simply select a ProcBuilding and set the Ruleset property or use the new Kismet-like editor.
Buildings make extensive use of the InstancedStaticMeshComponent, which allows them to render many instances of the same mesh in one draw call. This improves vertex performance and reduces draw calls by allowing the engine to cache faces and polygons of a building on a per-building basis.
You can override the material used for the roof, floor or non-rectangular wall polys on a per-building basis by entering geometry mode and selecting a face. Then right-click and select ‘ProcBuilding -> Apply Material (MaterialName) To Face’.
You can also reshape the corner polygons of the building by using the ‘ProcBuilding -> Reshape Corner Polys’ command. This is especially useful when you are trying to create a complex shape. However, this will dramatically increase the polycount of a building. So, be careful.
Apply a ruleset to a ProcBuilding
For example, if you have a building that has multiple floors and an awning, you might want to create separate rule sets for each floor. These can then be applied to the building using the ‘ProcBuilding -> Apply Ruleset’ command in the editor toolbar or context menu. Alternatively, you can group buildings together by assigning one to be the ‘Base Building’. Then, all other buildings will be built from the ‘Base Building’ ruleset, making it easier to edit the building geometry.
The ‘Base Building’ ruleset can also be used to set up the ‘Window Mode’ for a building. This will give the building a low-LOD version of itself that can be used for lighting and LOD texture generation. This is a very important step for creating complex buildings. Fortunately, it can be done easily by using the ‘ProcBuilding’command. This will display the building in a light green wireframe, and the ‘ProcBuilding’button in the editor toolbar will let you quickly select it.
Change the color of walls on a per-building basis
A common problem with procedural buildings is that the walls often overlap. To solve this, you can use a tool called wall material regions to change the color of a particular wall segment on a per-building basis. This will ensure that only occluding walls get painted, and it will also help avoid mistakes in the comparison between existing and new construction.
This method uses a combination of the occlusion rules and the “snap” planes to control repetition. The occlusion rule determines the size of a wall, and the snap planes control where the windows will appear. The occlusion and snap rules work together to create an architectural design that can be generated quickly and efficiently.
This is a Geometry Nodes-powered system that takes a low-poly mesh and turns it into a building. You can use it to generate a full, detailed structure with floors, doors, and smaller details. It can also be used to decorate pre-existing buildings, though it will not replace the original geometry.
Change the corner polygons on a per-building basis
You can change the color of the corner polygons on a per-building basis by using the BuildingMaterialParams array on a ProcBuilding. This allows you to create a unique visual style for each building without creating many different Rulesets.
You can also override the material used on the generated roof, floor, and non-rectangular wall polys on a per-ProcBuilding basis. To do this, enter geometry mode, select the faces that need to be changed, and right-click
You can set the display and action of user-defined buttons in the Check Footprint Polygons dialog. These include Auto rotate, Auto shift, Rotate, Shift, and Fix corners. You can also change the editing mode while dragging a vertex by pressing the Shift key. The current mode is displayed on the status bar and in the Heads-Up display. The default mode is plain edges. You can also use the advanced corner settings to create triangles and stars.