CityEngine Review

CityEngine
Incredibly powerful urban habitation modeling tool
by Albert Kiefer

cityengine procedural urban modeling software

Both in Architectural visualizations, in certain games situations but also in archeologic reconstructions it is sometimes inevitable to create or recreate an urban environment. A habitated area that shows human presence. Historically this habitation grows from a number of conditions present at a certain geographic location such as a path, a road, a river, etc. People will start settling in places like these and build houses and streets along trading routes that establish themselves in a village that evolves into a town and than maybe into a huge metropolitan city.

Swiss company Procedural have developed a software specifically for this purpose and it’s doing a fantastic job at it. However it’s not your regular easy drag and drop type of software. Obviously CityEngine does provide a great drag and drop functionality. It supports this by dragging rules based procedures to pre-selected surface areas. But it is by no means a software for the casual user. Obviously at its price point starting at 3450 US Dollars (there is an educational license for just 695 US Dollars), this software is not intended for the casual user but for professionals in the architecture, games, film, archeologic and general visualization companies for which the seemingly steep pricing is not a problem since the software will earn itself back very quickly.

Procedurally Structured
So how does CityEngine work its magic? Well it starts more or less the same way a city develops over time. So basically it starts from simple road network. You can for example import xml, dxf data from any source (like openstreetmap.org) and start building from these street networks, or you can have CityEngine generate a network for you based on a series of procedural rules.

After the network is generated you can command CityEngine to draw lots between those streets. These can be subdivided further in smaller lots. After this process of subdivision is complete (you can, by selecting areas, constrain the generation of lots to areas you like) CityEngine can start drawing buildings onto each individual lot or to sets of lots that you pre select. This process is very straightforward and in no time you have created a very convincing urban area with lots of different buildings.

cityengine-street-networkcityengine-lot-divisioncityengine-lot-subdivision
from basic street network to elaborate lot subdivision is just a simple three click process

Now generating networks of streets and subdividing the areas between these streets with small lots of ground is nice. But obviously there, where the houses start to build themselves is where the real CityEngine magic starts to work. CityEngine does this by a procedural modeling language and they have called this modelling structure the Shape Grammar. In the shape grammar of a particular building they write down a set of rules that geometry, and even texturemaps, will behave to depending on a specific situation. This way you can create stunningly adaptive buildings that seems to just know how to behave under certain conditions.

cityengine-shape-grammar
a section of shape grammar code next to a building (might not be the building for this code)

Make a building taller and it automatically adds new floors to compensate for the extended height. Make it wider and the structure adds more windows to avoid large blind walls.
In their free 30 day demo version they have a set of shape grammar scripts to recreate the Petronas Towers, the Parthenon and the Candler building. That way you can start to dissect how to work with this procedural scripting language.

cityengine-lot-selectioncityengine-shape-grammarcityengine-basic-buildings
by selecting subdivided lot sections each can be assigned instructions via shape grammar rules

CityEngine is very powerful for games development too because it can simultaneously generate different levels of details (for instance for distant buildings in relation to a player, or for a simpler collision detection geometry model). And it can export in a variety of formats for popular games engines.

All in all CityEngine is a very powerful package for modeling and simulating urban civilizations. They have even done a great job of rebuilding ancient Pompei (take a look at that movie here). It’s even a great conceptual tool for quickly investigating different massing and shape strategies by architects. But it is certainly not for the casual user. They have now expanded their terrain to include a Mac version as well but I have had serious issues with both the graphics engine and professional Mac video card (ATI Radeon X1900 XT with 512Mb Vram) and also Mac formatted xml files exported from open streetmap (it just does not read them because of a different file naming structure. In my case I had to disable the CityEngine shader on my MacPro 8 core Xeon system because it basically stopped interacting with even a one house shaded setup.

I can even very well see a lower cost version being developed that will sell based on selling rules sets for buildings and simulated streets and lots in a more consumer oriented way wich will certainlly find its way to broader user base.