Generating Cities

A few months ago, I was working on a car race demo during my spare time, and had few resources (no time, no tool) to create nice circuits. I started to read about city modeling, and had a play with an (half-finished) implementation of Parish and Pascal Mueller "City Engine"...


As far as I know, techniques to generate cities procedurally are relatively recent (siggraph 2001.) There is probably older stuff, but it was certainly not as good. There is also photo-based city modeling, but it is a different approach...

Generating cities is about creating a network of roads, and put some buildings in between so that it looks like the real thing. If you have seen enough terrain engines in your life (like me), and have spare time, city generation is certainly an interesting subject to work on. The results (generated streets networks for ex.) look cool to start with, and are a bit more original than a 512x512 fractal mountain with water at z=0 (and - oh yes! a green to white color gradient on z too).

The best reference so far is probably Procedural Modeling of Cities (siggraph 2001's proceedings) :

Their method generates a full city, with roads and textured buildings. The input is just a few "maps": altitude maps, population density map, etc. The workflow is very rougly as follow:

  • generate roads segment networks (with a distinction between streets and highways)
  • extrude roads
  • generate building "blocks" between roads
  • generate building models, place them in blocks
  • generate facade textures for buildings

And relies a lot on (simple) L-system. L-system is a scary word that actually means: "a set of rules with a fractal flavor, that generate stuff and can be hardcoded in 20 lines of C code ". I simplified a little bit.

A few other intersting papers on the same subject:

Given building blocks, recover roads in between (reverse order as above's paper..):
Street Generation for city modeling

Generate buildings only, using shape grammar (and a database of rules):
Instant Architecture

Generate metallic structures:
Creating Models of Truss Structures with Optimization

Posted by T-virus at 01:56 PM on Fri, 04 July 2003