© Copyright 2008 Procedural Inc. All rights reserved.
Almost anyone who has ever wanted to make a film has dreamed of setting up a scene with a big city, be it a modern or ancient city. I even did it once for a short film some years ago, and I ended up manually placing a countless number of textured cubes, but the result was far from satisfactory. My city actually turned out to be a small town with only a few buildings.
My main problem is my lack of programming skills to actually make a tool that would allow me to build that city; on top of that, as an independent filmmaker you don’t have your own R&D department where TDs will spend weeks and months working on that specific thing you need. Things would have been different if CityEngine had been in my toolset.
CityEngine is a city generator by Procedural Inc. If you’ve been following our news, you must know that Procedural took part in the Rome Reborn project that we got to see this past August at SIGGRAPH. If you had the chance to see the complete Rome Reborn model, you can imagine the massive amount of data that CityEngine generated for that project.
When you start a new project you have the option to follow a wizard that guides you through the different steps that will eventually create your city, from the roadmap to the city growth. The software uses the “CGA Shape grammar” language, which is a text-based scripting language to create the buildings. Each building has its own CGA Shape file that defines the different properties, so you can edit that file to make that specific building fit your needs.
Buildings are based on a sliced grid primitive that defines the different floors and areas (pretty much a subdivided cube that lets you make changes on a per-face level). Using a primitive alone can be limiting, and that’s why you can also load custom geometry on the buildings to get exactly the look you want. You can use custom geometry to replace cells on the grid, which is mostly used for windows and doors. This doesn’t mean you are only limited to windows and doors, as you can place the custom geometry virtually anywhere. Using the same method you can also load textures to be placed on the faces of the buildings (or onto the custom geometry).
Every time you start a new project (or workspace), CityEngine creates a folder structure where it stores all of your assets (this is the same concept as when you create a new project in Maya). This helps your projects organized as the software always knows where to look for the different assets, and personally I’d wish that more DCC software packages would use this same philosophy as you always end up having to arrange your data by yourself.
As I said before, every building has its own CGA file. However, you can also assign one specific CGA file to a group of buildings in case you need an area where the buildings look similar. You can then randomize parameters to add variations to the buildings. This can be useful if you want to make areas of your city with buildings that look somewhat similar, but with certain differences (for example, a lot of apartment buildings, or an industrial area).
The city creation process is not exactly a “one click wonder.” However, it’s far superior to manually placing your buildings.
For creating streets, you usually go through the Street Generator. That wizard generates a street network based on the parameters that you’ve set up. You can then add or delete streets, as well as move the street nodes. In the latest release (2008.2), you can also import data in OpenStreetMap format (www.openstreetmap.org), meaning that you could recreate almost any city in the world inside CityEngine.
You can also use “Environment maps” to define the shape of your street.
Elevation maps are used to define an uneven terrain that contains inclinations, hills and such. For example, the terrain used in Rome Reborn had a lot of hills and uneven environments.
Obstacle maps are used to prevent the streets from filling certain areas. Maybe your city is built around a mountain or something similar (like the capital city in my country). Using an Obstacle map, you can prevent the streets from climbing the mountains.
After you’ve finished the street network, you can generate the street shapes and lots. The final step is to create the buildings as I’ve described above. You can customize your city using a skyline map and a region map. Skyline maps are used to control the height of your buildings, telling the program where to place tall buildings and where to keep them small. A region map is a map that describes the types of buildings you can find in your city (urban areas, industrial buildings and such).
CityEngine alone would not be as useful in a production environment, and having the ability to plug into any production pipeline is a must. The software can export to the industry standard FBX and COLLADA formats, as well as OBJ, and the generated wireframes are very clean (unless the custom geometry that you may have used for your buildings is not clean).
With a price tag of nearly $5,000 (USD) you can clearly see this is aimed to big budget studios or professionals, so many may end up being discouraged by the price. All I can tell you is that CityEngine is indeed a timesaver if you need to create any kind of city for a big project.
- 2GHz dual core CPU or better (at least Pentium4 compatible Intel/AMD)
- 2 GB of RAM or more
- 500 mb of free disk space or more
- Graphics Card
- NVIDIA: Geforce 6xxx / Quadro or better NVIDIA graphics card
- ATI: Radeon X1600 or better ATI graphics card
- Network adapter
- Windows XP 64bit, WIndows Vista 64bit
- Windows XP, Windows Vista
- Mac OS X 10.5 (Leopard)
- Linux x86 (only 32-bit versions supported)
- >= 2.2.1 of the GTK+ widget toolkit and associated libraries (GLib, Pango)
- for help system: install xulrunner package and add environment variable "MOZILLA_FIVE_HOME" pointing to the xulrunner
- OpenGL 2.0 driver (e.g. latest NVIDIA or ATI drivers
Check out a free 30-day trial of CityEngine, here.
For more information, pricing, and availability, please visit the Procedural website.
All supporting images are copyright, and cannot be
copied, or reproduced in any manner without written permission.
Animation Alley is a regular featured column with Renderosity Staff Columnist Sergio Rosa [nemirc]. Sergio discusses on computer graphics software, animation techniques, and technology. He also hosts interviews with professionals in the animation and cinematography fields.