Skylines: City Generator

Immersive Experience

Personal project under the mentorship of Ian Shelanskey

Creative design and development of a procedural city generation tool in TouchDesigner

Softwares used:

TouchDesigner

Blender

Having recently rewatched Blade Runner 2049, I was deeply inspired by the neo-noir aesthetic Denis Villeneuve had created for his futuristic Cyberpunk version of Los Angeles and I wanted to create a similar experience where the guest is flying over a large and densely-packed dystopian-looking city.

Modelling and visualisation of man-made systems such as large cities is a great challenge for computer graphics. Traditionally, creating an entire 3D city required an artist to manually place hundreds, if not thousands of models to create the look and feel they want. While this approach provides the artist with full control of how to generate their city, it requires a tremendous amount of skill and time and is not conducive to any big changes in the future. Since the cons outweigh the pros, artists have sought out ways to automate the process and create tools that aid in the generation of the cities.

There is a ton of research that has been done in this domain and the most popular of those is the 2001 paper on Procedural Modelling of Cities by Yoav I H Parish and Pascal Müller. There are also some existing tools available like SceneCity for Blender that allows you to create different types of cities and ArcGIS City Engine which is a standalone city design software. With this project in the Spring of 2022, I wanted to dive into the basics of what it takes to procedurally generate a city and have it run in a real-time software like TouchDesigner. 

shot_2
Skylines_3
Skylines_1
Skylines_2

I have covered the development process for this project in a 4 part blog series, where in the first part I cover the point allocation algorithm I developed for this project. In the second and third part I cover the steps I had to take to optimize the project and in the final part, I cover the staggered asset loading algorithm I developed to assist with project startup.