CityGen - A procedural model generator

Current version: V0.9 (released July 7th, 2005)

What is CityGen ?
CityGen is a procedural 3D model generator application aimed for generating random urban models. These models are generated from an XML construction file using several simple operations and random inputs. Developed as a side project from my "Ray-Space Factorization for From-Region Visibility" paper.

CityGen main features


Generator overview
The city generator begins by splitting the city plane into equally sized axis-aligned cells. Geometry is generated separately for each cell. The generator currently has two types of cells: either building or a road cells. The only difference between these types of cells is the construction template used for generating the model within them.

For each cell, the generator picks a construction template at random based on the cell type. It begins filling the cell bottom up by applying a sequence of operations defined in the selected template. Each operation can transform the active cell (scale, rotate and elevate it) or it can draw in it either a floor, a box or a pyramid. Operations are performed one after the other where usually the next operation will continue from the end-state of the previous one. For example, if a box is draw then the next draw operation will place something on-top of that box.

To allow creation of more complex templates, the current state can be saved and restored, either fully or partially using push-pop operations. Finally to simplify the construction file, maybe and choose operations supports random variations in the sequence of operations used.

The construction file
The construction file defines global city parameters and the construction templates for the cells. The construction file is an XML formatted text file that uses CityGen's schema file. The main benefit of using XML for this is that of-the-shelf tools exist which assist in writing such construction files.

To that purpose, I strongly suggest that you use a validating XML editor (validating means that the editor verifies the correctness of the construction file using the supplied schema file). Advance validating editors support auto completion and other features that can further assist you. I recommend the following editors:

For description of CityGen construction file syntax consult the examples and the detailed documentation in the distribution .

New in version V0.9
Added support for street sizes via streetSizeX and streetSizeY.
Added support for street offset via firstStreetCrossX and firstStreetCrossY.
Upgraded to Xerces 2.6.0.

Zip, Version 0.9 (latest version), 1.8MB

Zip, Version 0.8 (initial version public version), 1.9MB


* see LEGAL.TXT inside distribution for license details

Back to my research page