Cell's Automated Building Generator

Automation is an interesting thing. Some things are just easier and faster done manually. Other things are easier and faster done by a computer. The science of discovering which really is better is left up to common sense. Sadly, common sense is commonly uncommon*. That's where today's design system comes from. I decided during a research session on Seattle buildings' architecture that automation of building design in Cell would be wasteful and that I could simply design buildings using very simple architecture techniques that I found during my research.

* If you get my cliche, laugh, it's not meant to be insightful.

I did find an interesting system during my research that could be implemented manually. However, it started to bore me. Beware when you bore me because I am quick to interest and quick to disinterest. Alas, that is the way of the programmer. I decided to write an semi-automation system for design of buildings. There are two parts to designing buildings. The first is structure that decides what the building looks like. The second is texture which decides what materials are in use. These two translate into 3d model and 2d texture that the designer must create. A person who is interested in design might have lots of fun just creating various buildings. But I delight in creating a system that solves the general system and using it to automate the process.

If you don't see an image above, you need a browser that displays SVGs using the embed tag.

So you see that I am designing buildings with rectangles. How awful, huh? Well, it's actually a quite common design pattern. In my search, I found many designs based on this simple system. My Python script generates this by creating an SVG file, which is an XML vector graphics system. I plan on making the script much more diverse, but the idea is that it I will design a system to create structures and textures using simple mathematical formulas that do not deviate from the simple algorithm using simple variables.

Variety is a key component to pleasing architecture, so I created a set of variables that allows each building to be unique. Number of floors, height of each floor, height of window, number of panes, number of windows, and padding are all variable. If I feel that a change needs to be made to a building that cannot be changed by differing the parameters, I can manually change the SVG (the vector graphic), the PNG (the raster graphic), or the 3d object.

With this system, I plan to have variety as well as ease of creation. What more could I possibly want? The indoors. That's something best left up to manual placement, right? Yes, for now.