A fast way to build a virtual city, CityEngine is an easy-to-use tool for concept design or modelling cities for in-context visualisation. Stephen Holmes takes a look.
The name gives the game away as CityEngine by Procedural is a very quick rules-based city creator with parametric building capabilities and the ability to import GIS and other real world data.
For those in search of a quick-fire method of creating a backdrop to architectural renderings this program is what they have been looking for, but be warned: what can be sufficiently and realistically set up in a handful of clicks might have you addicted to fine tweaking every little detail.
CityEngine is a standalone product that has found its way from the entertainment and gaming effects industries to professional users in architecture, urban planning, GIS and other areas of 3D content production providing a modelling solution for the creation of 3D cities and buildings. It has already been taken up by Foster + Partners, Grimshaw, and RNL.
CityEngine provides a useful visualisation tool throughout the design process. However, there are examples of it being used for creating buildings using rules-based methods.
For example, ETH Zurich, the Swiss Federal Institute for Technology, designed the plans for its Swiss Village within the Foster + Partners Masdar City project (a new sustainable city being built in the desert) using CityEngine.
Once the main volumetric language was found, the design was encoded as CGA Shape rules (a shape grammar for the procedural modelling of CG architecture that produces building shells with high visual quality and geometric detail) inside CityEngine and the buildings were automatically generated accordingly.
Building your city
In its simplest form, most likely to be used by the majority of users, the modelling process starts by placing a road grid on an editable terrain that is then populated by buildings according to a set of parameters designated by the user.
Sweeping changes can be made in real-time to the city’s buildings via a clever system of assigning demographic info to a colour. Parameters such as building heights, types (Victorian terracing, more modern semi-detached) or the land use-mix can all be controlled this way to show realistic ‘neighbourhoods’.
From this, individual buildings can be picked out and manually adjusted for height, appearance and purpose; roads can be moved and dragged with real-time effects on the surroundings.
The results are quick and easy to achieve and the building design can be slotted into the new city quite happily and in a very short period of time. Having designed the building in a dedicated modelling program the CAD model is exported as an OBJ, Collada or FBX file and CityEngine takes it in as a 3D asset.
Within CityEngine this asset can then be used in a number of ways, for instance scale, rotate, split, or re-texture, although it will not automatically re-scale in real time like the ‘active’ streets and buildings built in CityEngine.
CityEngine is a not a rendering tool, merely a modelling tool. The viewport provides a rendered scene, but it is only a preview. To have photorealistic renderings or animations of the city model, they need to be exported to a dedicated design viz tool. This can be done via the Autodesk friendly FBX file, or a Mental Ray MI file; imported into 3ds Max and merged with a 3D building model. Render and animate in 3ds Max.
At users’ fingertips, however, is the power to do a great deal more, adding much more realism and authenticity to cities.
Instead of beginning with a random territory and road map, real life geospatial data can be imported with accurate land mapping to provide the basis of the model.
Pre-modelled assets can be dropped in, such as key buildings/landmarks or photographic flyovers.
The software supports industry-standard formats such as ESRI Shapefile or DXF that allow the import of any geospatial or vector data — whether it’s building footprints with arbitrary attributes, or simple line data.
Building rules can be dealt with through some tricky code or through a series of more simple visual ‘chain links’. Assets, such as building height and detail levels, can be altered by a simple slide-rule.
Building rules can be defined using textures/models in the node- or text-based rule editor. More repetitive or pipeline-specific tasks (instancing information for each building, for example) can be streamlined with the integrated Python scripting interface, although this is where the node-based scripting takes over and things get substantially more complex.
This is not to say that users are left unsupported; the software comes with a mammoth amount of tutorials, example cities and rules, as well as online support that would suit anyone with time to learn.
If you are setting out to design a bespoke city down to the minutest detail then, as you would expect, it is going to take an age in CityEngine. It is easy to get drawn into adjusting the individual building faades and creeping around every little detail.
At little over £300, the ‘Indie’ version offers a great tool at an extremely affordable price, although it excludes the Python coding implementation, which limits how much automation can be put into modelling, and support for exporting to RenderMan (.rib) or Mental Images’ Mental Ray (.mi) format. Furthermore, simulation data such as flow fields, colour ramps, lanes, or sound agents cannot be exported to programs such as Massive Prime to add in autonomous crowds.
At ten times the price, the ‘Pro’ license has all the bells and whistles and, according to Procedural provides a very specific alternative to Autodesk’s Project Galileo, which the company believes is not focused enough for building virtual cities.
The latest version is to be launched with some slight upgrades in the coming months, which will help remove some of the minor stability issues and coding nuances, while adding some more simplicity to the user interface.
CityEngine is brilliant for creating a realistic city with a few clicks of a mouse, and can save a huge amount of time when creating a backdrop or cityscape.