Procedural Modular Traditional Chinese Building
For more info on how to use the HDAs and how did I do the case study, please follow the documentation:
https://docs.google.com/document/d/e/2PACX-1vT5JJ2leMfFn21_S6VNZT0bhbDOtDve2HSw6FtkVHuZBrZ2vKa_etyhsy9Trg-LKCCaT-Xd72yBlHjp/pub
Problem statement:
When you really look deeper into the Palace Museum at Forbidden City.
You will not only be attracted by this splendid palace, but you will find that these buildings have many rules to follow.
I want to try to use procedural methods to recreate these traditional buildings and used them in either film or game.
Sample Result
In order to make it as real as possible, I have to study the structure of TaiHedian, and break it into differnt types of Dougong and how they can stack together.
DouGong Structure
The difference between the Qing dynasty and Song dynasty Dougong is the Middle part difference. Song dynasty style Dougong has around 20 degrees angle cross whereas Qing dynasty style Dougong use more general and easy structure
To make it both Procedural and Modular, I decide to break the building into different pieces. Each piece will have different data that will transfer to the next level Prefab.
For example, The Outer_Base as base layer HDA will have its own basic parameters where the Corner Dougong as the second layer HDA will combine those first layers parameter and have a more complicated setting
In the end we will have variation on every possible asepct of the model.
Door and Pattern Design
In this project, I create two types of door. The smaller one is used for general use, the bigger one is used for special case.
Even though they looks have differnt pattern. It follow the basic logic.
We can randomize the normal of the point, so when we copy the points into the grid, it will face to different directions.
Fuse node can randomly connect these line and form a new shape
We can even copy differnt shapes into the grid so it will have different results.
Main Structure
By looking at thoes prespective drawing, the whole strcuture could be created by 3-5 similar small structure, then we connect them together.
In order to make it simpler, I decide only create two main layer that could support the roof at least.
Then based on the size, each HDAs will recaculate it’s length and width etc.
One thing we need to solve in unreal engine or any other game engine for the copy to point method is that all the uv is the same, and once the material is on, it will create repetitive models.
So what I do here is simply randomize the UV for each object that is copyed for the points. So that each object will have the exact same material but fits in different way.
Roof Sturcture (Use Math)
Roof takes really long time to make accurate.
Becase each corner, the angle will facing up in certain angle.
Therefore, it is extremly hard to caculate how it works with pure math.
I made a sudo-demo that use three line to control how the roof bend with mathmatical calculation.
Basically, each line’s angle will transfer to the roof tiles for-each node and these angle will be mutiply to a constant, so that each angle of the tiles will be calculated,.
Therefore, as the basic line moves, the shape will be reformed.
However, it takes long time to process, it also lacking the accuracy as some of the instance are still defined by me.
So I decided use non-mathmatical way to create a simgle roof.
Simple Roof (Lattice control)
Take a close look at reference photos, we can treat the roof into two different sections.
These two part is using basic sweep then just boolean with 45 degreed geometry.
Once we done the basic shape, we can use the lattice to control the side we want to leveling the up angle.
There are more HDAs were created in project but it all follow the same logic.
This project is used for the complete Unreal Engine Game, click the button to see more