Awesome Open Source
Awesome Open Source

CityEngine SDK

This is the official site for the SDK of CityEngine, a 3D city modeling software for urban design, visual effects, and VR/AR production.

The CityEngine SDK can be used for the development of:

  1. Custom importers and exporters for CityEngine.

    This means the SDK enables you to develop CityEngine plugins to read or write additional 3D and image formats or your own proprietary 3D data format. A simple use case example is 3D printing where the STL geometry format is often needed. STL support is not provided out-of-the-box in CityEngine, but you can develop your own STL exporter as described below.

  2. 3D apps which need a procedural geometry engine.

    The core of CityEngine is its unique geometry generation engine, called Procedural Runtime (PRT). PRT takes as input an initial geometry and then applies a given rule package (= CGA rules authored in CityEngine) to generate more detailed 3D geometry as output. For example, PRT can generate - based on given rules - a 3D model of a building out of a parcel polygon. With the SDK you can integrate PRT in your own 3D applications taking full advantage of the procedural geometry generation without running CityEngine. An interesting use case example is Palladio, a plugin for SideFX’s Houdini software. Palladio includes PRT and therefore extends Houdini with the procedural geometry engine of CityEngine. Another use case example could be a specific cultural heritage 3D application which automatically generates detailed 3D models of temples based on input attributes.


This document explains how to install the CityEngine SDK and how to work with the source-code examples contained in this repository. The CityEngine SDK is packaged into three parts:

  • This git repository with the example sources.
  • An archive per platform with the SDK binaries and documentation (whitepaper and API reference). The archives are attached to the repo release tags, see links below.
  • An archive with example data (e.g. rule packages and initial shapes).

The archives are available for download at the corresponding github release page. See installation instructions below for details.

CityEngine SDK Releases

Installation Instructions

  1. Clone or download this repository
  2. We provide some demo files to run the prt4cmd example. They can be found in the SDK example data archive attached to the release. Unpack the archive into a "data" directory inside the cloned repository.

The final directory layout should look like this:



This repository contains a number of source code examples in the "examples" directory. Each example contains a README with detailed instructions how to build and use it:

  • prt4cmd: a simple command line utility to apply rule packages onto initial shapes and generate models.
  • stlenc: demonstrates how to write a custom encoder, in this case for the STL geometry format.
  • stldec: demonstrates how to write a custom decoder for the STL geometry format.

Related Projects

  • PyPRT: Python language bindings for the Procedural Runtime (PRT)
  • Palladio: CityEngine plugin for SideFX Houdini
  • Serlio: CityEngine plugin for Autodesk Maya
  • Vitruvio: CityEngine plugin for Epic Unreal Engine

General Software Requirements

Please note that the individual example READMEs may include further requirements.

All Platforms

  • To load custom encoders built with the latest SDK, you cannot use CityEngine. To be able to load the encoders in CityEngine, please find the right SDK for the CityEngine version in the list above.
  • License for matching CityEngine, e.g. to author Rule Packages resp. CityEngine 2021.1 for version 2.6.8135.
  • CMake 3.3 or later (


  • Windows 8.1 or 10 (64bit)
  • Required C++ compiler: Visual Studio 2019 with Toolset MSVC 14.27 or later
  • Required flags for extension libraries release mode: /std:c++17 /bigobj /GR /EHsc /MD (use /MDd to debug)


  • RedHat Enterprise Linux 7.x or compatible
  • Required C++ compiler: GCC 9.3 or later (RedHat Enterprise Linux DevToolSet 9)
  • Required flags for extension libraries: -std=c++17 -D_GLIBCXX_USE_CXX11_ABI=0 -march=nocona -fvisibility=hidden -fvisibility-inlines-hidden -Wl,--exclude-libs,ALL

Further Resources


Did you find a bug or do you want to request a new feature? Please let us know by submitting an issue.


Anyone and everyone is welcome to contribute and to extend and improve the examples by sending us pull requests.


The CityEngine SDK is free for personal, educational, and non-commercial use. Commercial use requires at least one commercial license of the latest CityEngine version installed in the organization. Redistribution or web service offerings are not allowed unless expressly permitted.

The CityEngine SDK is licensed under the Esri Terms of Use:

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
C Plus Plus (369,974
Api (22,718
Processing (6,553
Sdk (4,275
Cross Platform (3,361
3d (2,678
Geometry (892
Decoder (562
Encoder (541
Arcgis (377
Modelling (281
Procedural (220
Esri (186
Alembic (84
Usd (72
Fbx (65
Native Development (47
Collada (43
Cityengine (22
Cityengine Sdk (3
Related Projects