Istanbul Technical University

Computing in Architectural Design

Generative Systems in Architecural Design

‘18 Spring

Coordinators:

Prof. Dr. Gülen Çağdaş

Asts. Prof. Erthem Gürer

Res.Asist. Begüm Hamzaoğlu

Teammate: Şeref Atilla Gürbüz

Program: Unreal Engine 4

#### Using Cellular Automata to Generate Novel Cell Structures

The proposed model was developed with a game engine, called Unreal Engine 4 which has a node based programming feature in it. Unreal Engine 4 can run many different numbers of functions in real time and can support the algorithm sequences that can communicate with each other and present it to the user visually. The algorithm of the model is a set of code which lets the user define a volume, initial conditions and continuation rules.

Initially, x, y, z axes are created with grid x, grid y and grid z variables to define an orthogonal volume. In this volume the cells, the unit cubes are replicated. The probability of each cube’s being alive or dead at the start is determined by the Chance To Start Alive which is a variable ranging from 0 to 1 within the algorithm. This is a similar case to Wolfram’s starting with a black or white cell. The computer assigns a random value between 0 and 1 for each cell, and if the assigned number is smaller than the Chance to Start Alive entered by the user, the cell starts alive if it is larger, then the cell starts dead. Each time the process is repeated, the randomness of the value assigned to each cell by the computer, creates an initial setup in which the designer is partially controlled.

With the exception of edges and corners, each cell has a total of 26 neighbours and, when the cell is dead, to be able to confirm the location of the cell and its neighbourhood characteristics, each cell has got a membrane on it. Each cell which is already processed is hold in the Cubes Array so that the number of neighbours in the living state of the cell can be calculated. Since the neighbouring relations of the cell will take a new state in each process, an additional array the Cube2 Array is created. After all the neighbours are checked with a loop, the neighbouring numbers are written to the Number of Neighbours variable. Once the cell count is calculated, the Destroy or Add function is executed for each cell to operate the new state of the cell. This function determines the new state of the cell according to the Number of Neighbours variable for each cell.

Cells can be alive, dead and third state, respectively, with Birth Numbers, Death Numbers, State3Numbers variable names in three different states according to the neighbouring numbers, which is a value of 0-26 entered by the user. Destroy or Add function first checks the cell's state. If the cell is dead, the number of neighbours is compared with the Birth Numbers which is necessary for the revival of the cell. If any match is found, the cell is revived, otherwise left dead. The third state is constructed like the way dead state is and those cells appear as wireframes that is different from appearance of living cells. If the cell is alive, it is required to match the Death Numbers or State3Numbers for the cell to die. And if any match is found, the cell is considered as dead. After each operation, the cell states are processed into the variables and the next step is to adjust visibility with Set Visibility Function. This function first checks whether the cells are alive or not. If the cells are alive, the cells are visible and solid; otherwise they are hidden and invisible. After the control of the dead cells whether they are in the third state or not, the cells in the third state are made visible as wireframe.

When the model runs, it creates a certain number of living cells according to the value of being alive (Chance to Start Alive) and starts to kill the cells by looking at the number of cells to be entered to be alive (Birth Numbers). When the model is run again, it performs the same operation over and over again, reduces the number of cells and starts to create voids in the volume.

The pure mathematical translation of a cellular automata into architectural form includes number issues that do not consider built reality (Krawczyk R. J., 2002). However, this study is expanded with additional rules including contextual sensitivity and structural intelligence. When a user route is determined and it is provided to create an additional void according to this route, not according to the neighbouring numbers. Considering the number of neighbourhoods, the cubes in the edges and corners appear to be more noticeably reduced. To prevent this problem, a structural foundation was added to the cubes which started to break from the ground. However, against undesirable cases, the Build Mode offers the designer the ability to add / remove units during the usual work of the model.