Procedural Buildings

Greetings community.
On behalf of Ammoboxstudios I present the latest procedural system from our team.
Procedural Building Lot**

The latest system from AmmoboxStudios’ Procedural Pack brings you Procedural Building Lot. You can now generate entire row of highly-detailed building with just a few clicks. Using our heavily customizable style-based system. You can create, extend , edit your own styles. Three initial styles are provided ( more for future updates ). Building is tuned towards FPS/TPS level of quality in terms of details.

Building not only generate facade , but windows , and roofs are sensibly generated as well. Providing a wholesome generation of a commercial building.

As with all our systems. It is created with usability in mind. A large variety of switches and parameters are exposed to allow a highly data-driven generation.
Here are some examples:

  • Each Actor has property that allows you to key in allowed styles / pattern.
  • Enter chance for trims/mezzanine to be generated.
  • Customize how many additional lots per facade would be generated.
  • Easily Enable/Disable static lighting with a single switch. You can even customize for building or window or both.
  • Need to customize height?
    No problem ! you can see min/max height, system will decide how many floors that will be.
  • Need to customize how long the building stretch to the back ( depth ) ?
    Set the depth and amount of percentage variation for each lot.

Technical detail:

This system provides:

  • 3 Styles, each style has multiple sections , Ground , Mezzanine , Trim , Window , Roof. Each has its own variation. Some more than others. 2 more styles are complete( pending fixes ) but to be included in update.
  • 4 Window styles are provided. Each style has variations ( up to 8 )
  • 6 pattern profiles are provided. They are used interchangeably with all style. Each facade creates even more variation by using these pattern as ‘skins’ to the original building facade.

As with all of AmmoboxStudios’s system as well. Performance is a high consideration as we are using this for our internal development as well.

Here are some optimization information:
( remember that when it comes to optimization , less means more )

  1. All windows are instanced per style, per entire row.
  2. Each Facade style is represented by a 1 ( Single ) material iD only. If entire row uses a single style this means it’s only using a single ‘set’ of textures.
  3. All Window style used one set of texture. Variation is panned using Per-Instance Data.
  4. All styles are equipped with LOD for the individual section meshes.

Looks very versatile. Is there any plans for including the ability to generate interiors inside the houses as well?

this system generated by arranging correct piece and use rule-based logic to make sure the arrangement makes sense. you can easily add your own style with interior ( making the ground section mesh have their own interior ) and then just replace the styles. or add to the current style. Editing styles are as easy as duplicating those blueprint objects and keying in your own data

This looks better today than the first time I saw it. I still want a way to handle buildings on the corner of a lot elegantly (with two front windows) but this is a great start and a really powerful tool.


Did I’ve missed something obvious and ability to provide custom data per HISM instance was added? Or you are doing some trickery with each instance reading variation from a texture or you added custom per-instace data using c++? Ready to grab pack just to learn this part :smiley:

  1. I’m not using HISM. Just ISM. These are for windows. They don’t have much LOD, and not massively used. It’s in my opinion that they wouldn’t benefit much from using HISM. Feel free to switch it if you want.
  2. Per instance data has always been there for ISM. Yes it’s using material trick to pan to a snapped position to give different variation. All window are from a single texture set. It’s quite simple I wouldn’t call it a trick. There is no C++ customization.

No no, very reasonable technical decision. If you don’t need to manage mesh LODs no reason to use HISM. Unless it can effect collision processing, but I don’t know much on how collision for ISM/HISM works under the hood.

Ohh I see now that there is Instancing Random Seed parameter. It’s clear now :slight_smile:

Maybe I’ve missed it in the video but is it possible to get a facade on both corners? Like for example, in case of a crossroad many buildings have the same facade going on adjacent sides.

Bored: I was just talking to Frozenfire about the same thing. Not yet, but he says just copy the design and overlap on it.
I’m hoping now two people have asked for it, he’ll upgrade it.

I figure the simplest way to do it would be some way to grab a building, designate it a corner, and then just bend the line.

To make corner meaning to generate another entire row on a perpendicular? that’ll probably take a whole lot of re-thinking. the system generate row base.

I think the best workaround I can do for a soon upgrade is to add option to NOT generate the building block on a specific lot. so you can overlap safely , and just copy paste entire Section Array to guarantee they always look the same.
I’m doing the manual lot editing feature specifically for situations like this.

The real trick is the building on the corner - the one with two fronts. If you could generate a row with a fancy end like that, you could do two rows instead of trying to bend or alter the line. A |_ instead of an L if you get me.

Yeah something like that. Like if we have

A |

so A provides only a facade wall and B provides it’s own facade, floor and roof but doesn’t provide wall on A side.

More like this
| |A
| |
| |
| |


So A, at the ‘start of the line’ down has a building with two fronts.
And B at the ‘start of the line’ going right has a building with two fronts.

Like this pic here

Orrrrrr you could just do a ‘capstone’ building.

| |A
| |
| |
. ________
|_| |________B (ignore the periods)

so you put a fencepost between every line, using the same style.

That shouldn’t be too hard - draw a line, drop a fencepost at the corner, draw another line.

Whadda think?

I am trying to use this without a lot of experience with Unreal 4, and am finding it difficult to do almost anything. A basic manual for dummies would be nice, so we don’t have to already be moderately familiar with Unreal modules to jump in. I can’t get a single building to propagate.

I voted up this kit!

Looks great!

Any plans on adding additions for buildings to break up repition? E.g. something like a special entrances (stairs up) or little gardens in front of the buildings?

How about randomely placed decals for damage on the the buildings?

I’m getting constant crashes whenever I drag the end point. :frowning:

Hm. Maybe ‘how many fronts should the endpoint buildings have’ would do it.

Hey this is grand! gg :wink:

Query: on making new styles. It looks to me like the best way is to copy paste an architecture or window style, rename it, and then point it to new assets, change any other settings you want, and then just use it like the ones it came with. Is that right, or am I courting disaster of the crash kind?

@mittense , sorry I didn’t see this earlier. This has been fixed in 4.13 update, it’s due to a bug in Engine where when you duplicate the object , the Object Class array / Enum doesn’t get copied over. I believe it has been fixed. If you’re encountering this , please email me at the support email.
@ZNSinger, that is correct.

@warcabbit Sorry we don’t support corners at this point.

Apologies to all , as I didn’t see the thread earlier , for those who emailed me , I believe I have replied .
Otherwise I’m going to turn on notifications from all my thread from now on.