About CityEngine

The main concept of CityEngine is the "procedural" approach towards modeling efficiently. The computer is given a codebased "procedure" which represents a series of commands - in this context geometric modeling commands - which then will be executed. Instead of the "classical" intervention of the user, who manually interacts with the model and models 3d geometries, the task is described "abstractly", in a rule file.

CityEngine features

Procedural modeling core

The commands which are provided in the CityEngine CGA shape grammar, such as "extrude", "split" or "texture" are widely known commands in most 3D applications and you can adapt them easily and create complex architectural forms in short time.

To learn more about procedural modeling, see Grammar-based modeling.

Dynamic city layouts

Dynamic city layouts

The Dynamic City Layouts give the user a powerful tool to create interactive street networks which automatically update in realtime. Streets, sidewalks and whole blocks, which form the specific urban context adapt efficiently to the user's input and give the user an intuitive way to design the layout of complete cities.

And of course, all the geometries which depend on the layout of the underlying Dynamic City Layout are also updated on the fly. Your buildings get rebuilt while you edit the width of the surrounding streets.

Customizable UI

Customizable UI

The user interface (UI) in CityEngine can be adapted to any task at hand. Whether this is rule creation, working on the street network, editing attributes with realtime feedback or studying the statistical reports of your current city's development: "anything goes".

For users who want to have control over repetitive tasks, create formatted reports in file format or automate other specific actions, Python Scripting is available to further streamline the workflow in CityEngine.

Data interoperability

CityEngine supports the Industry's most common formats for both import and export. You can transport line data, shape data (footprints) and 3D geometry to and out of CityEngine. Whether you work in the field of Urban Planning, Architecture, Entertainment or Simulation, CityEngine provides a way to transport your data.

The CityEngine modeling pipeline

Modeling an urban environment with CityEngine usually implies the individual stages of the pipeline given in the figure below. The pipeline consists of several procedural modeling tools for generating large-scale urban layouts, as well as applying CGA rules for the creation of detailed building models .

CityEngine modeling pipeline
Overview of the CityEngine modeling pipeline. Black boxes illustrate data types (layers) and white boxes the operations to create them. Typically, in the first step, the street network is created, afterwards the resulting blocks are subdivided into lots. Finally, the 3D models of the buildings are generated using the CGA rules. The output of CityEngine is polygonal building models.

A CityEngine scene is stored as layers of different data types representing the different stages. The pipeline is flexible and can be entered at different stages. For example, street blocks or building masses can be imported and further processed.

Generating large-scale urban layouts

CityEngine consists of several procedural and interactive tools to layout street networks, align and subdivide shapes. On the one hand, streets can be grown according to different patterns and edited in an interactive way. For example, street-crossings can be moved, streets can be deleted or selected and the street growth wizard can be applied again on the selection. On the other hand, tools for the editing of lot shapes are available, such as aligning building lots to a terrain etc. The tools usually work on the selection done in the 3D view window, the viewport, or operate on the whole layer.

CityEngine windows for urban layouts
CityEngine provides several tools for the efficient and interactive creation of urban layouts.

The layered organization of CityEngine scenes provides a practical and organized handling of the massive data sets. For example, it is recommended to duplicate layers before editing and therefore create different variations in each layer. Of course, the visibility of each layer can be switched on or off.

Grammar-based modeling

Grammar-based modeling or "procedural" modeling has a widespread range of applications, but mostly it is applied, when large numbers of iterations of a design or large numbers of objects have to be created which obey certain standardized rules. Automation of the modeling is the goal and the overall quality of the grammar-based description is reflected in the quality and number of details of the generated models. Unique objects (such as landmark buildings) are best modeled by hand and usually do not need the procedural approach since often none of the modeling tasks on that object can be automated.

Of course, the preparation of the rule set creates a certain overhead at the beginning, but on the other side, the model generation itself is done in a small fraction of the time compared to classic manual modeling. The following chart compares both techniques and it is obvious that the application of grammar-based modeling becomes useful with a certain amount of models to do.

Manual modeling vs. Procedural modeling


The CGA shape grammar of CityEngine is a unique programming language specified to generate architectural 3D content. The term CGA stands for Computer Generated Architecture. The idea of grammar-based modeling is to define rules, or CGA rules within CityEngine, that iteratively refine a design by creating more and more detail. The rules operate on shapes which consist of a geometry in a locally oriented bounding-box (the so-called scope). The following rule derivation illustrates the process: on the left side the start shape is shown and on the right side the resulting generated model is displayed.

CGA generation

The generation of building geometries with the CGA shape grammar works as follows:

  1. The building lots are either created by CityEngine with the above mentioned tools or imported. Instead of polygons, mass models (building envelopes) can also be the starting point.
  2. The user selects which rule file (.cga) they wish to apply onto these shapes. The user can either assign one rule to all buildings, or assign rule sets on a per-building basis.
  3. Then, the user can trigger the application of the rules on the selected shapes. Therefore it is important that the Start Rule of the shape is present in the rule file. Otherwise no rule can be invoked. The generated models can then be explored in the 3D viewer of CityEngine. In the case of very large models, it is not recommended to generate all buildings in CityEngine due to memory constraints.
  4. In order to edit the resulting 3D models, different possibilities exist: (1) edit the rules, (2) overwrite the rule parameters of a rule set on a per-building basis, and (3) if stochastic rules are used (rules with random parameters), the random seed of all or single buildings can be altered.
  5. After the design is finalized, the user can export the selected buildings or streets to the hard disk (including textures).

    there are no memory constraints in the exporting mode.

CGA generated buildings