CityEngine 2023.1 Release Notes


A new look and feel for the User Interface

New icon set

  • The user interface features a redesigned set of high resolution icons. The icons also have an improved appearance on different screen types and resolutions.
  • Widgets and buttons of tool options have been refreshed with a new appearance for improved visual feedback.
  • The viewport tools use a new and refined set of high-resolution mouse pointers.
  • There is a new scenario icon in the Viewport menu bar and the Dashboards.

Dark mode

  • You can now switch the user interface from light to dark mode. This includes views such as the Scene Editor, Navigator, Inspector, Tool Options, Dashboards, Model Hierarchy, Get Map Data, and all the code editors, preview, and dialogue windows.
  • The 3D Viewport default background color and panorama are improved and adapted for use in dark mode.
  • Code editors for CGA and Python feature a dark mode with adapted syntax color scheme as well as improved highlighting colors.
  • Various UI components are optimized to adhere to both CityEngine color themes and with improved color contrasts and legibility.

Integration with ArcGIS Urban: Spaces, Demolish Areas, and ArcGIS Urban on ArcGIS Enterprise

Support for Spaces

  • Spaces can now be imported and visualized in CityEngine.
  • The scenarios have a Spaces group layer in which building shape layers contain the spaces.
  • Spaces can be overwritten through the Get changes from Urban dialog box. Note that the Save changes to Urban dialog box is not supported for spaces.
  • Space volumes are procedurally created from the space shapes and colored by space-use type.
  • For parcels, the Inspector window now shows a dedicated Zoning section that indicates the zoning designation as defined in ArcGIS Urban. It allows you to define overrides for effective regulations.
  • On a plan import, a list of usage types is stored in the project data folder. This data is used to visualize spaces correctly.

Support for demolish areas

  • Demolish areas are now supported for existing buildings.
  • Added support for getting changes for demolish areas.


  • You can now connect to instances of ArcGIS Urban on ArcGIS Enterprise.
  • Imports from ArcGIS Urban have been sped up.
  • In the Parcel Attributes section of the Inspector window, attributes have been restructured and now allow editing of edge attributes and the Custom ID.
  • Added support for import of non-Web Mercator coordinate systems.
  • When the Existing Building scene layer does not have an accompanying feature layer, a fallback is offered that imports Open Street Map buildings.
  • Fixed a bug that prevented the import of data from custom elevation services.
  • Imported ArcGIS Urban parcel shapes and layers now have dedicated icons in the Scene Editor window.
  • The Urban tab in the Navigator window now also shows plans that belong to public models.

Basemaps and terrain

  • Get Map Data now supports basemaps that use projections other than Web Mercator.
  • Improved the Get Map Data download quality for base maps using layers with differing sets of resolutions.
  • The Get Map Data dialog box is now initialized with the parameters from the last successful download. This allows you to download exactly the same extent again, for example.
  • The Get Map Data dialog box now always closes when you press the Esc key. There was a bug that prevented this when there was not an extent set.
  • Improved the loading speed of the Get Map Data dialog box.
  • Improved responsiveness of many terrain operations.
  • Fixed a bug in which very small terrains were not displayed correctly in the viewport.
  • Fixed a bug in all model exporters in which selecting a preset didn't correctly set the terrain resolution.


  • Fixed a bug in physically based material rendering in which the horizon highlight was not rendered correctly.
  • Fixed a bug in which using the X, Y, and Z keys in a parallel view could leave some tools unusable.
  • Fixed a bug in which sometimes a selection highlight was not rendered for duplicate shapes with the same model.

Tools and streets

  • Added the orange ball handle to the Transform Move tool that makes moving objects in 3D space more convenient.
  • Fixed a bug in the Transform Move tool in which translating multiple shapes close to each other resulted in erratic movements caused by self-snapping.
  • Added an option in the Grow Street tool to deactivate block subdivision. Disabling it can improve the performance significantly.
  • The Freehand Street Creation tool now also adds nodes to existing segments with a single click.
  • The Texture Shape tool now sets relative paths instead of absolute ones when assigning textures from the current active project.
  • The Isolate Selection tool now keeps the selected dynamic shapes visible.


  • Combo boxes in the Inspector window now show the system context menu when you right-click.
  • Fixed a bug in which the location was not updated correctly after editing the values of a vertex.
  • Removed sliders from input fields with large values to avoid undesired side effects.
  • Cleaned up the vertices table of inconsistent coordinates.
  • The analysis tools in the Inspector window no longer show selection highlights.
  • Fixed a bug in which clicking an empty image slot in the terrain inspector on Linux-produced error messages.

Import and export


  • Corrected the value fields for the Terrain Mesh Resolution option in all model exporters to correctly update and reflect the chosen resolution preset.
  • Improved performance and reduced memory consumption for all model exporters when exporting high-resolution terrain layers.


  • The exporter now correctly handles camera bookmark names with special characters, such as a slash (/).
  • Fixed a bug in which certain combinations of scenario and bookmark names would result in incorrect VR views.


  • The COLLADA importer now detects if a COLLADA file has been written by SketchUp with the two-sided option enabled. In this case, the importer will set the doubleSided material attribute to false.
  • Fixed an intermittent import failure for COLLADA files with empty <source_data> and <copyright> tags.
  • Made the importer more robust against invalid COLLADA tags.


  • The FBX importer now correctly detects embedded textures even if the file extension was not lowercase, such as .FBX.


  • The glTF doubleSided material attribute is now handled by both the exporter and importer. It is translated to and from the CGA material attribute of the same name.
  • The exporter received an improved heuristic for setting the blend mode for transparent materials, resulting in fewer rendering artifacts in glTF viewers.
  • To save memory, the importer does not copy texture coordinates on uv-set 0 to higher uv-sets. It instead relies on the fallback to UV set 0 mechanism. See Texturing: Essential knowledge for more information.


  • Improved both the importer and exporter so that model or landmark headings align with ArcGIS Earth.


  • Added a fallback heuristic to the importer when looking for MTL files. If the specified MTL path is incorrect, it now also looks in the same directory as the OBJ.

OpenStreetMap (OSM)

  • Instead of hard-coding street dead-ends to crossing, the OSM importer now uses the turning_circle value to determine the best node type for a street dead-end (roundabout or crossing).
  • Reduced the transient memory consumption of the OSM importer so larger extents can be imported before having to adjust the -Xmx setting in the CityEngine .ini file.
  • Tertiary streets are now correctly included by default.

Scene Layer Packages (SLPK)

  • Fixed a bug that prevented writing SLPKs larger than 2GB.

TIFF elevation

  • Fixed a normalization bug when importing terrain layers from 8-bit .tiff files that caused the highest value to be incorrectly set to zero.

Universal Scene Description (USD)

  • The USD exporter now uses separate indices for all vertex attributes. This allows for watertight meshes with hard edges, in other words, a shared point but different vertex normals.
  • Improved the USD exporter to pass validation checks for default prims, stage up-axis, and material binding API.
  • Fixed importing textures with white spaces in their paths.

CityEngine scene file (CEJ)

  • When exporting objects to a .cej file, the scenario information of the exported objects are now also exported.

ArcGIS Online and ArcGIS Enterprise

  • You can now connect to instances of ArcGIS Urban on ArcGIS Enterprise.
  • Corrected the initial state of Map Viewer if use spatial envelope is chosen in the feature layer importer.
  • Online items in the Navigator window now show the item title with their name as it is shown on ArcGIS Online. This makes identifying the items more convenient.
  • Fixed a bug that blocked portal access when a proxy was configured in the Windows settings and in CityEngine at the same time.

Procedural modeling language (CGA): Visual CGA (Beta) and tags

VCGA Editor (Beta)

  • This release of CityEngine contains a beta preview of Visual CGA (VCGA), the node-based programming editor for CGA.
  • While there is no VCGA documentation and there may be minor bugs, the comprehensive VCGA Playground example, together with the accompanying video tutorials, will help get you started. You can also download the VCGA Playground example directly in CityEngine through Download Tutorials and Examples in the Help main menu.

Next-level component selection and geometry component tags

  • General selection expressions can now be used to select components in the comp and setback operations. You can combine existing static selectors, built-in functions, and your own functions.
  • This release introduces geometry component tags. Tags are intended to identify semantically different parts of the geometry and are preserved by operations and propagated to new geometry when applicable.
  • The extrudeenvelopetaper, as well as all roof and setback operations automatically add tags to their output geometry.
  • Tags can be queried using the new isTagged selector, providing a new way of selecting components based on semantic information rather than geometric properties.
  • The new setTagsFromEdgeAttrs operation allows you to convert the edge attributes of the initial shape into edge tags on the current geometry.
  • Furthermore, the new geometry.tags and geometry.hasTags functions and the deleteTags operation assist you in working with component tags.

Compiler performance

  • Optimized the interactive developer experience for CGA coders, especially when developing large CGA projects with many imports. Now, the CityEngine UI always stays responsive, even when many complex rule files need to be recompiled when editing code.

CGA Editor

  • Dropping a CGA file into CGA code to create an import statement now ensures to generate a valid import identifier. Furthermore, the import path is now correctly set to be relative to the rules folder.

Model Hierarchy

  • Fixed a bug in which shapes in the Model Hierarchy window had incorrect rule names. This happened sometimes when the same file was imported multiple times.
  • Fixed a bug in which setting the Translucent Model switch had no effect on shapes with the material.shader attribute set to CityEnginePBRShader.

Changes and bug fixes

  • Fixed a bug in styles in which parameterized functions defined in a style resulted in a crash on generate.
  • Fixed a bug in which changing the case in rule file names or in import identifiers caused persistent compilation failures.
  • Fixed a bug in which faulty compiled rule files (*.cgb) were created and generated errors. This happened whenever a rule was defined that had the same signature as the s, t, or tileUV operation.
  • Fixed a bug in which holes in triangle faces were ignored, leading to incorrect results. This happened when using the scatter operation on volumes or when using the inside, overlaps and touches context queries.
  • When CGA files are deleted, the corresponding compiled rule files (*.cgb) are now also removed as they are no longer needed.

See the CGA changelog for a comprehensive list of changes and bug fixes.

Documentation and content

  • Added a new section to the USD Export page explaining how attributes and reports are exported and also clarified the mesh merging option.
  • On the Projects page, there is now a section explaining how CityEngine can be started with a specific workspace from the command line.
  • Updated rules in the Tutorial 8: Mass modeling tutorial to make use of logical expressions in the setback operation.
  • The textures used in the CityEngine Tour tutorial are now referenced using relative paths so they are still displayed correctly after the project gets renamed.

Refurbished tutorials

Added streamlined workflows and new images to the following tutorials:

  • Tutorial 7: Facade modeling—Learn how to model a building from a picture, including creating a facade structure, inserting assets, and adding textures to the building.
  • Tutorial 8: Mass modeling—Learn about mass modeling using L and U-shaped buildings, extrusions, and setbacks, and generate a diverse-looking scene including textures.
  • Tutorial 9: Advance shape grammar—Learn how to create a CGA rule for a building facade using a image reference.
  • Tutorial 10: Python scripting—Learn the basic usage of the Python console and editor and explore several examples of how to automate tasks in CityEngine.


  • Updated the following third-party libraries to address security vulnerabilities:
    • libtiff 4.5.1
    • libxml 2.10.4


  • Fixed a bug causing the Menu and Navigator windows to be unresponsive in certain cases.
  • Fixed a bug that prevented loading dashboards for linked projects.
  • The display of the wireframe can now be turned on and off using the ce.setTerrainWireframe() and ce.getTerrainWireframe() Python commands.
  • Optimized the size of various dialog boxes for high-resolution screens.