Download

Procedural Parisian buildings

Hi everyone ! First post here

I just wanted to share the blueprint I made for my graduation project Requiem and that I’m still developing. I made this Blueprint to quickly and randomly generate Parisian buildings.

Edit : Here is the short movie Requiem

The Blueprint can be divided in 3 main parts :

  1. Get the dimensions of the building
  2. Set the characteristics of the building
  3. Construct the building

Sorry but comments are made in french in the BP :slight_smile:

http://pguilpain.com/wp-content/uploads/2018/05/3steps.jpg

Dimensions of the building

I used a vector to get the size of the buildings. For the Requiem project, I set fixed dimensions for all the elements that are part of the buildings. The vector and the different sizes are allowing me to calculate the number of stories and the number of meshes in length and depth.

Next step : to allow any size of mesh for more variations in a city

http://pguilpain.com/wp-content/uploads/2018/05/step01.jpg
Characteristics of the building

It’s in this section that the uniqueness of the building is defined. For each characteristic that follows, a random choice is made between all the meshes available. For Requiem, I only had to time to do 2 variations, sometimes 3, for each module. But the Blueprint is designed to add endless variations. Here is the list of what is randomly chosen :

  • balcony railing
  • lintel
  • roof
  • balcony (railing only, individual balcony, long balcony)
  • moldings under the balcony
  • corbels
  • chimney on roof

http://pguilpain.com/wp-content/uploads/2018/05/screen005.jpg

These are the main architectural characteristics of the buildings. Other elements are defined later in the Blueprint :

  • shutters
  • shops on the ground floor

http://pguilpain.com/wp-content/uploads/2018/05/screen000.jpg

The main problem with my Blueprint is that everything is redefined each time I change the position or the orientation of the building or its size. It’s something that I definitely have to keep working on.

Next step : to stock all the characteristics in an array and add a function to redefine them only when I need to.

Construct the building

Finally, I created multiple functions to construct the building : ground floor, floors and the roof at the end. I used a bunch of “Add static mesh” nodes with loops on the number of modules in the building height, width and depth. I used some socket to place the balcony and all the ornamental moldings.

http://pguilpain.com/wp-content/uploads/2018/05/Clipboard01.jpg

http://pguilpain.com/wp-content/uploads/2018/05/Clipboard02.jpg

http://pguilpain.com/wp-content/uploads/2018/05/Clipboard03.jpg

http://pguilpain.com/wp-content/uploads/2018/05/HighresScreenshot00046-1024x793.png
**

Conclusion

Now, the main goals are to optimize the Blueprint and to make it more user-friendly for a level artist. Indeed, I have to think about the changes a level artist has to control and the ones he doesn’t need to to build a city with this tool. Once this step will be over, I’ll be able to increase the number of modules for each characteristic and eventually create architectural group styles.

Question : have you any lead about how I can test and monitor the optimization ? For example the memory used, or the time to build a building. So I can check if I’m going in the right direction. Thanks a lot for your feedback !

The Artstation post about this project : https://www.artstation.com/artwork/BbLl8

That looks amazing @PGuilpain, Good detail and atmosphere.

There are a number of Unreal streams that detail different aspects of optimization and use of the profiling tool.
UE4 Performance and Profiling | Unreal Dev Day Montreal 2017 | Unreal Engine UE4 Performance and Profiling | Unreal Dev Day Montreal 2017 | Unreal Engine - YouTube

Thanks a lot ! I’m going to take a look at that video and dig up a good way to improve this blueprint !

Little update : now I can relase the short movie Requiem. All the buildings in it are made with this Blueprint.
I put the video in the first post.