is an attempt to automate much of the work involved in creating very large
virtual urban landscapes. The system takes a street map as input, and
produces street geometry and a scene graph containing the building models
as output. The user has control over the types of buildings placed in the
city through the use of image maps. The potential applications for this
system include video game content (think GTA*), visualization, etc.
It is well known to most of those in the field of computer graphics that
mountainous terrain can be generated programmatically. A good deal of
research has been done in this area, focused for the most part on the use
of fractals to generate landscapes. While these techniques produce some
impressive results, they are restricted in the kinds of terrain that they
can generate. For example, these techniques are not appropriate for the
creation of urban terrain.
This is unfortunate, as there are many benefits to being able to
programmatically generate urban landscapes. Many recent video games, for
example, feature very large urban environments. Finding little research on
the topic of urban terrain generation, I decided to create my own utilities
for that purpose.
Note - I have recently been made aware that a very similar project was
published at SIGGRAPH 2001, entitled "Procedural Modeling of
Cities". That project made use of L-systems to generate the street
topographies (mine uses a user-created node graph) and (from the
description) is considerably more complex. I haven’t seen their
output. If you’re interested in this sort of thing, you might want to
take a look at their work, too.
With the CityBuilder
system, there are three stages in the creation of a city. The first stage
is to create the street map, the building models, and some miscellaneous
support files used by the second stage. The second stage is where CityBuilder
takes control. Street geometry is created using the StreetBuilder
component, building models are placed in the city by the BlockBuilder
component, and miscellaneous items like traffic lights are placed in the
city by the ClutterBuilder component. The third stage is to fine-tune the
output using a scene-graph editor or by hand-editing the output files. The
city is then ready to be viewed.