Chinese Architecture project
For an assignment during my Masters I did research in Chinese architecture, more specifically the architecture described in the Chinese building manual from the mid Song Dynasty (1100) called the Yingzao Fashi or “Treatise on Architectural Methods” or “State Building Standards” [1]. A while ago I started with redoing my research for implementation in Houdini sideFX. The final goal is to make a procedural tool that can create Chinese buildings based on the rules described in the Yingzao Fashi.
The Yingzao Fashi is a building manual created during the Song Dynasty and publish in the 1103 by Li Jie[1]. It describes a procedural approach to buildings, making it ideal for creating a procedure based on it. Unfortunately there is no copy of the original text or a translated version to be found online, so for my research I rely on a paper written by Andrew I-Kang Li “A shape grammar for teaching the architectural style of the Yingzao Fashi”[1]. In the paper he describes a shape grammar he created for teaching architectural design of traditional Chinese buildings. From this one I found several other articles and papers on the subject which I use to supplement and compare data with.

For this project I’m going for a systematic approach for developing the tool, following the design process as described by I-Kang Li. first I researched and implemented the measurement system used, followed by creating the ground plan with the correct dimensions and so on. For each step I do research on the topics as needed. Although it might not be the best method of working it does provide a nice overview of progress it allows me to explain and understand each stage and iteration along the way.
1) A shape grammar for teaching the architectural style of the Yingzao Fashi by Andrew I-Kang Li


Ground plan. 
For the dimensions of the building or to be more precise the width and depth of the building a separate type of notation is used, the width is notated as number of bays wide while the depth is noted as number of rafters deep.

A bay as described by I-Kang is the space between 4 columns although this is only partly true in the way it is used here. As the depth of the bays is 2 Rafters deep. Rafters are the vertical support beams found in roofs of a building.

Bays range in size from 250 to 300 Fen with the biggest always in the center. Each additional set op bays added to the side is always equal or smaller than the last. In any given building the central bay can be anywhere between 250 and 300 Fen width with every new set of bays decreasing with and incremental step.

For the project I decided to round the size of to the closes tenth, based on information provided by [2 Di Li], where she states that in the original antidote translation instead of the Fen the Cai was used as measurement witch is equal to 10 Fen. The measurement system is also called the CaiFen system.

The depth of the building and the bays is noted in number of Rafters, where they can vary per building between 100 to 150 Fen. Although the 100 Fen as minimum is never stated as the absolute minimum size, but is more suggested. Taking a smaller size would be possible but could result in really width but thin buildings which looks strange, so I’m keeping it at 100 as minimum.

Bays always come in an uneven number starting at 3 (1 central bay and 1 set of side bays.) with a maximum number of 11 bays wide for the highest Deng building. The depth in Rafters on the other hand is always an even number starting at 4 with a maximum of 12 Rafters. [1 I-Kang Li]

Depending on the Deng of the building the min and maximum number for both change.
Deng 1 2 3 4 5 6 7 8
Dian tang 11-9 7-5 5-3 3 3- 0 0 0 0
Ting tang     7 5 3+ 3-      
Others             X X X
[2 Di Li]
3-]  3 small bays
3+] 3 large bays

Base ground plan creation
The ground plan is created by first determining the building Deng, number of bays and rafters.
Select a building Deng. 
Min and max size of the bay is selected.
The step size for each intermediate bays is calculated.
The last step is to determine the size of the Rafters.
No real rules are given on determining the size of these and for this project I keep to the same rule as above creating a random value between 10 and 15 and multiply it by 10 which results in the size between 100 and 150 Fen
Step size = (Center bay – outer bay) / ((Nr bays – 1) / 2)
Then the process start by placing and scaling the first central bay. This is a simple 2D plan build up out of 2 rectangles. As a bay consist out of 2 rafters and each rafter can be supported by a column later this immediately creates the correct point locations for potential columns later on. See Figure 1 step A.

Depending on the number of bays step B is repeated multiple times.
On each side of the existing bays an additional bay is placed.
These are then scaled with the step size subtracted from its width.
The formula to calculate the number of repetitions is as following.
(Nr bays – 1) / 2
After this the whole row of bays is duplicated and placed behind the existing bays show in step D. The number of times it gets duplicated equals the
(Nr rafters / 2).
During this process 2 attributes are assigned to each point in a bay, bayWidth and bayDepth see step F. This data can later be used to determine where a column are inside the building.
bayWidth shows the degree of separation from the central bay. Where the central bay has a value of 0.
bayDepth indicates rafter depth of each point with the front points being 0.
This results in a group of rectangles form the floor area of the building and indicate all the potential column locations.



Figure 1: Floor plan process.
1) A shape grammar for teaching the architectural style of the Yingzao Fashi by Andrew I-Kang Li
2) A parametric recreation of traditional Chinese architecture. By Di Li, Michael Knight, Andre Brown
  13-03-2016


Measurement units and sizes.
The Yingzao Fashi even uses a procedural measuring system based on the Fen unit. The size of the Fen is determined by the class or Deng of a building. So the higher the class the larger the Fen becomes. In total there are 8 levels of Deng resulting in 8 different sizes of Fen. From the Fen 2 additional units are calculated the Cai and the Zu Cai which are used for the beam measurements, the first is 15 Fen and the second is 21 Fen big. Depending on the Deng 1 Fen is between 19.20mm and 9.6mm.

With this data I created a null node to calculate a single value that can be used to convert values from Fen to meters. This allows me to do all the calculations using the Fen, as in almost all the papers dimensions are also given in Fen making my live easier. This is done by creating a float parameter (feninmeterarray) with 8 fields, each field containing one of the 8 values in meters so 19.20 mm is noted as 0.0192. This parameter is hidden from the users, in a second parameter I excess the correct value based on the selected Deng. The Deng is selected using a drop down menu called (buildingclass). The resulting expression for getting the correct value is as follows.

    ch("feninmeterarray"+(ch("buildingclass")+1))

In the final result the user can only select the building Deng, while some additional information like the Fen size in meters, the number of Fen in a Cai and in a Zu Cai is provided using a label parameter. Providing the user with information but limiting the total number of options.

The final interface looks like this, with a single option for the user, the scaler value and additional information.


Deng    fen in mm     
1 19.20
2 17.60
3 16.00
4 15.40
5 14.10
6 12.80
7 11.20
8 9.60

The full interface with the hidden values shown.
  23-01-2016