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) : http://www.centralpictures.com/ce/index.html.
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:
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..):
Generate buildings only, using shape grammar (and a database of rules):
Generate metallic structures:
Posted by T-virus at 01:56 PM on Fri, 04 July 2003