Introduction to CityEngine

The main concept of CityEngine is the procedural approach toward modeling efficiently. The computer is given a code-based procedure that 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 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 to create complex architectural forms.

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

Dynamic city layouts

Dynamic city layouts

The dynamic city layouts allow you to create interactive street networks that automatically update in real time. Streets, sidewalks, and whole blocks, which form the specific urban context, adapt efficiently to your input and allow you to design the layout of complete cities.

All the geometries that depend on the layout of the underlying dynamic city layout are also updated on the fly. Your buildings are rebuilt while you edit the width of the surrounding streets.

Customizable UI

Customizable UI

The user interface (UI) in CityEngine can be adapted to tasks, including rule creation, working on the street network, editing attributes with real-time feedback, or studying the statistical reports of your current city's development.

To have control repetitive tasks, create formatted reports in file format, or automate other specific actions, use Python scripting 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 from CityEngine. Whether you work in urban planning, architecture, entertainment or simulation, CityEngine provides a way to transport your data.

CityEngine modeling pipeline

Modeling an urban environment with CityEngine usually implies the individual stages of the pipeline given in the image 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
An overview of the CityEngine modeling pipeline is shown. Black boxes illustrate data types (layers) and white boxes the operations to create them. Typically, in the first step, the street network is created, and then 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 data types representing the different stages. The pipeline is flexible and can be entered at various stages. For example, street blocks or building masses can be imported and further processed.

Generate large-scale urban layouts

CityEngine consists of several procedural and interactive tools to lay out street networks and align and subdivide shapes. Streets can be grown according to patterns and edited interactively. 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. Also editing tools for lot shapes are available, such as aligning building lots to a terrain. The tools usually work on the selection in the 3D view window or the viewport or operate on the whole layer.

CityEngine windows for urban layouts
CityEngine provides tools to create urban layouts.

The layered organization of CityEngine scenes provides a practical and organized handling of the massive data sets. For example, it is recommended that you duplicate layers before editing and therefore create variations in each layer. You can switch on or off the visibility of each layer.

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 that 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, showing that the application of grammar-based modeling becomes useful with a certain amount of models to do.

Manual modeling versus procedural modeling

Computer Generated Architecture

The Computer Generated Architecture (CGA) shape grammar of CityEngine is a unique programming language specified to generate architectural 3D content. 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 that consist of a geometry in a locally oriented bounding box (the 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. You select which rule file (.cga) to apply onto these shapes. You can either assign one rule to all buildings or assign rule sets on a per-building basis.
  3. You 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. You can then explore the generated models 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. To edit the resulting 3D models, you can edit the rules, overwrite the rule parameters of a rule set on a per-building basis, and if stochastic rules are used (rules with random parameters), alter the random seed of all or single buildings.
  5. After the design is finalized, you can export the selected buildings or streets to a hard disk (including textures).

    There are no memory constraints in the exporting mode.

CGA generated buildings