if a city can be generated within 20 seconds?

City Generator: A Grasshopper Plugin Development and Research Paper Publication on Generative Urban Models
Project Overview
TYPE: Academic Work at Harvard GSD
FIELDS: Computational Design, Urban Planning,
City Generation, Form-Based Planning
TIME: Fall 2020- Summer 2021
TOOLS: C#, Visual Studio, Grasshopper for Rhino
TEAM:
Zihan Mei, Pam Yue Pan, Jack Cheng
INSTRUCTOR: 
Jose Luis Garcia del Castillo Lopez
PUBLICATION:eCAADe 2021
Introduction
In the modern urbanization process, urban planners create rules to define urban form and composition of blocks which are greatly impacted by the road network. This research paper proposes a ``city generator'', as an urban design toolkit for urban designers to make prototypes of large new town planning and reimagination of city generation.

The generator aims to translate planning regulations into three-dimensional urban form and provide users with efficient and intuitive design iterations. Moreover, our generator emphasizes consistency generation across scales. From a single block to a district, they can be produced in one operation without losing details.

Finally, the generator provides great degree of freedom for users to manipulate, including three aspects - road generation, density mapping and building form. Because of the flexibility of input parameters, generated models can be a rigid urban grid or an organic pattern, which can highly satisfy urban designer's expectations and imagination.
H. Taubenböck, N.J. Kraff, M. Wurm, The morphology of the Arrival City - A global categorization based on literature surveys and remotely sensed data, Applied Geography, Volume 92, 2018, Pages 150-167, ISSN 0143-6228,
H. Taubenböck, N.J. Kraff, M. Wurm, The morphology of the Arrival City - A global categorization based on literature surveys and remotely sensed data, Applied Geography, Volume 92, 2018, Pages 150-167, ISSN 0143-6228,
In the rapid urbanization process, urban planners created rules to define their physical form and composition of urban blocks, from the rigid blocks forms in Manhattan to the organic urban grid in London. Under each condition, cities apply a set of planning rules determining urban block patterns and hierarchy of programs. The U.S. zoning regulations of land use, building setbacks, and block density are greatly impacted by the hierarchy and composition of the road systems.

However, many of the computational tools applied in urban design either focus on the block scale or the parcel scale, without notifying the connection of block density to road systems. Moreover, some tools can automatically generate a road network based on the main roads input by the user, but there is no way to effectively generate building volume on a city scale.

Another discontinuity problem is that although some computational tools can produce large-scale road network systems and building volumes, the building can only be adjusted with height or other single parameter at a time, which greatly reduces the level of detail of the generated blocks.
CHALLENGE
Consistency across scales
Prototyping speed
User participation
Designed for urban designers and planners, our tool is developed on Rhinoceros 7 and Grasshopper 1.0.0007, a computer-aided-design software that is popular with designers worldwide. Designed to be used by designers at will, our algorithms are packed as an open-source, compiled Grasshopper plugin available at GitHub repository: https://github.com/saturn-drm/city-generator
Supposing a boundary and several main roads are used as inputs for a project, the methodology divides the generation into 3 steps:
1. Road network and block generation
2. Density remapping
3. City form generation
methodology
Grasshopper Plugin
Road Generation
Block Generation
Density Mapping
City form generation
As the first step in the generation tool, network generation takes in a boundary for the project, with several main roads, and returns the network of main, secondary, and minor roads. Due to the target of density-driven network in the urban scale, this process is based on the looped division of blocks until certain critical values, representing that the block is too small to be divided further.

Considering the variation of urban density in different locations between the core and peripheral parts, the critical values for subdivision are not the same for each block. That is, areas nearer to the urban center tend to have higher network density and smaller block size. Therefore, within each step, the critical value whether to divide the blocks further can be controlled by three parameters that are defined by the user:

Universal size (uArea), defining the overall size to stop subdivision;
Amplitude controller (AmpC), defining the deviation in uArea;
Critical distance to main roads (Dist), checking if the blocks are near the urban center, thus need to be compared to a smaller critical value.


step 1:
Network
GENERATION
Division patterns:
While the critical values applied in the process of looped division determine the variation of density all over the district, there are also two patterns used to execute the divisions, determining the patterns of either organic or rigid grid. The two division patterns share the same random index (Rand Parameter) to control the degree of rigid/organic form:

Radius division generates lines from a random point near the block’s center to all the borders. This method is used when the block is not quadrilateral. It’s controlled by one parameter defining the random range for the starting point, and another defining the range where the end points should locate on borders.

• Crossing division generates lines connecting pairs of random points on opposite borders in each block. It’s controlled by one parameter defining the random range where the points should locate on borders.


After the road network is determined, with additional user input of roads and sidewalk widths, a series of blocks can be created.  

Input: Centerlines of Primary/Secondary/Minor Roads
Parameters: Width for Primary/Secondary/Minor Roads, Width of Sidewalks
Output: Sidewalk Outlines, Block Outlines, Setback Lines
step 2:
STREET & BLOCK
GENERATION
In the city generator, the building density of each block is affected by the distance between the block and roads. The method to measure the density of each block is to calculate the minimum distance between the center of each block and all the main, secondary roads on the map. Then, the distance value will be put into three different intervals to evaluate the scores, and all the scores of the block will be summed up. Finally, the summed scores for main roads and secondary roads are weighted into the final density value.

The range of each interval can be determined by the user. The distance value will be assigned a score according to the intervals set by the user. For example, if the user sets three continuous intervals, [1, 10](starting interval), [10, 20] and [20, 30], they represent 3, 2, and 1 points respectively. When the distance between the block and the main road is 11,then the block will get 2 points. It can be seen that when the block is closer to the main road, the score will be higher, which can reflect higher density.

Since there will be multiple main roads on the map, each block will get multiple points and sum up a total score. Based on the maximum score and minimum score on the entire map, the total score obtained by each block will be remapped to three intervals of FAR, respectively [0.5, 2.0], [2.0, 5.0], and [5.0,20.0]. In this way, the block score can be used in the next section, city form, to present different functional forms of building volume.


step 3:
DENSITY MAPPING
The generated FAR (Floor Area Ratio) was assigned to each generated urban block from the previous steps. The guiding logic of building form generation in blocks aims to reflect the connection between the FAR regulation and building typologies. We conclude the relationship between building forms and associated block FAR through various zoning documents in the U.S.

The block building forms are generalized into three categories:

the low-density residential blocks (FAR 0.5 - 2.0);
• the local retail & service blocks (FAR 2.0 - 5.0);

• the commercial blocks (FAR 5.0 - 20.0).

There is a unique set of geometry generation rules for each category that takes the density parameter (FAR) generated from the previous step and user-controlled input such as building coverage ratio (BCR) to create block building form. The form reflects its density and uses in an abstract city form. Learning from the building from patterns in cities, we define the number of parcels within each block increases when the block density(FAR) decreases


step 4:
city form
With this tool, a 3D city model of multi-hectare site can be generated with the simple input of site boundary and major roads. Rapid iterations are also made possible using this grasshopper plugin for Rhino 3D.

In the process of iteration, as shown in the image below, user can change the input, as well as parameters that controls the major roads alignment, density distribution, building typologies, in order to generate outcome as 3D models and real-time rendering within seconds.
OUTPUT
Rapid Iteration
City Generation Simulation
The parametric city generator tool successfully streamlines the city generation process. It has great potential to be integrated into the workflow for urban designers and planners. Currently, the project accomplishes the integration across scales and the efficiency in prototyping. However, the urban modelling is a complicated process and involves various stakeholders.

In our future research, in addition to the existing elements, we plan on integrating the following aspects to enhance to practicality of the tool:

Adaptability: allow organic shapes and alignment of road centerline and site boundaries as input to enhance its range of adaptation in real-world urban design projects;
Flexibility: Allowing users to make changes manually in the city generation process
Complexity: Take other urban design elements including boundaries of existing open spaces, turning radius of curb fillet, etc..
reflection
Adaptability
Flexibility
Complexity
Back to HOME page