CityEngine 2026.0 release notes

 

Python

The Python 3 integration is out of beta. Use Python 3 in scripts and interactive consoles to get access to the full CityEngine API functionality, plus all the packages from the vast Python ecosystem. Conveniently switch between Python 3 and Jython per project. Environments and their required packages are automatically installed upon project import making sharing projects and collaboration on Python scripts easy.

Python API

  • The Python 3 API (i.e. the "cityengine" Python package) reached feature parity with Jython. Jython scripts may be ported to Python 3 by switching "import scripting" to "import cityengine" and the usual Python 2 to 3 adaptations.
  • Added support for concurrent Python 3 API sessions. Similarly to Jython, you can now start multiple Python 3 consoles or run multiple Python 3 scripts concurrently. Keep in mind that CityEngine scene objects are generally not protected against concurrent modification.
  • Removed Scene Light and Panorama items from the result of ce.getObjectsFrom(ce.scene()). Use the LightSettings and PanoramaSettings classes instead.

Python IDE

  • We overhauled the way Python environments are managed. You can now conveniently add, edit, and remove venv and Conda environments from within the Python Preferences. When removing an environment, you have the choice to only remove it from CityEngine or also destructively remove it from disk. See Environments in Python Preferences.
  • Added a button in the Python Environment Preferences to quickly (re)install the current Python API "cityengine" package in any environment including those created outside of CityEngine.
  • Added a new Startup option in the Python Preferences. You can now select a script from any Jython or Python 3 project to automatically run at startup. The previous "startup.py" mechanism is still available, but for Jython only.
  • Replaced the functionality provided by scripting.py with a dedicated entry in the Python Preferences. See Interactive Console > Initial Commands in Python Preferences.
  • Streamlined the Python Preferences and menu items related to the Python Editor with clearer naming and the removal of irrelevant settings.
  • Simplified the Python settings in the Project Properties dialog to a plain selection between Jython or one of the configured Python 3 environments.
  • A project now tracks its Python environment and packages in a pyproject.toml file in the project root folder, and updates automatically. On project import, this file is read and the environment is created accordingly, allowing you to share and run Python scripts with zero setup.
  • Introduced a new storage location for environments (venvs) managed by CityEngine. They are now stored at <workspace>/.venvs . This location holds the built-in environment as well as any environments created in the Preferences or at project import. Conda environments are created within the corresponding location of the Conda distribution.
  • Changed the name of the built-in environment to "Python 3.x.y" (with x.y being the detected/bundled Python distribution, which is 3.11.9 on Windows).
  • Redesigned the toolbar icons in the Python Console for readability and ordered them more logically.
  • Implemented various smaller improvements and bug fixes for the Python Console.

Streets

Street Designer

  • You can now control the curb radius for each corner at an intersection individually, giving you more precise control over intersection shapes allowing for more complex modeling. Turn the new Curb Radii button on and off to access the individual radii inputs. In the Viewport window, each corner is marked with a number label.
  • Improved lane selection in the Edit Lane tool when working at smaller scales. You can now select a lane with a single click even when the mouse pointer is hovering over the edge of a lane.
  • Improved tool tips in the Street Designer to make street configuration names easier to read. Long names now wrap inside the tool tip, and improved styling makes tool tips stand out more clearly from the background.
  • Reduced flickering in the Street Configuration section when resizing the Inspector window.
  • Improved street selection highlighting to make lead-selected street segments and nodes easier to recognize. Now, the whole selected object gets highlighted in the lead selection color and rather than just the segment line or node point.
  • The Scene Editor window now shows parent items of selected street entities in bold, so you can see where selected segments, nodes, lanes, and lot shapes belong in the street layer hierarchy even when parts of the tree are collapsed.
  • Fixed a bug in the Inspector window in which it displayed an outdated lane width after undo or redo.
  • Fixed a bug in which the UI would freeze when repeatedly applying the Grow streets tool and eventually terminated CityEngine.

Street editing

  • Added the Merge Nodes tool to the street editing tools. You can now select nodes by clicking or dragging and merge them into an existing node, a street segment, or any location in the Viewport window, with preview lines and snapping capabilities for more precise street cleanup and editing.
  • Added a dedicated Remove Nodes tool to the street editing tools. Remove nodes with a click or by dragging over an area, making street cleanup faster while helping preserve the overall street layout and curves.
  • Added the new Street editing tools in the toolbar next to the Street Designer tools. This new tool groups the Edit Streets/Curves, Merge Nodes, and Remove Nodes tools together, simplifying related street editing workflows.
  • You can now merge street nodes directly in the Edit Streets/Curves tool with the yellow disc or the newly added orange ball handle by snapping them to other nodes or segments. You no longer have to switch to the Transform Move tool.
  • Improved the handle scaling in the Edit Streets/Curves tool on HiDPI displays. Handles now scale correctly according to the display scaling factor, consistent with other tool handles.
  • Fixed a bug in which undo after changing the principle street handles with the Edit Streets/Curves tool failed with an error.
  • Improved undo/redo for street editing so blocks remain stable across editing operations. This keeps selections and follow-up edits on blocks and lots working as expected after undoing and redoing changes.

Street geometry

  • Reduced the default precision used for street nodes from 0.5 to 0.4 in street creation tools and in streets imported from OSM, DXF, SHP, or FileGDB. This reduces generated geometry and file sizes while preserving the visual quality of streets.
  • Improved the robustness of street and node geometry generation.
  • Street segment center lines now follow the street geometry exactly. This gives you a more reliable visual reference and keeps the line used by lane editing tools consistent with what you see in the Viewport window.

Tools

  • The Transform Move and Edit Streets/Curves tools now let you snap objects to terrain when dragging them with the orange ball. This allows to align objects such as shapes and streets to the terrain much quicker.
  • Fixed a bug in which isolated lots caused all lots in a block to reappear when generating models or using handles.

Inspector

  • Improved the Assign Rule File dialog box to open directly in the folder of the currently assigned rule, reducing unnecessary navigation.
  • Fixed a bug in which you had to click Browse twice to open the Browse dialog box.
  • Fixed a bug in the Rules section of the Inspector window that prevented updating depending attributes when the Visual CGA Editor, Model Hierarchy, or the Local Edits tool were in use.
  • Fixed a bug in the Rules section of the Inspector window in which rule attributes from dynamic imports had a wrong used/unused state (grayed-out) in the Inspector window.

UI miscellaneous

  • Clarified wording in the downgrade ce.lib and ESRI.lib dialog boxes.
  • Refreshed the Offline CGA Reference with a modern look for improved readability.
  • Fixed a bug in which the asset preview didn't frame the asset correctly.

Rendering

Improved the quality of the wireframe rendering. This change is most noticeable on wireframes on transparent models and the scene grid in dark theme.

Urban integration

Improved the Urban Integration UX so that the Import as new scene option is not disabled for the owner of outdated ArcGIS Urban plans. Now, when the import is initiated in CityEngine, the ArcGIS Urban plan gets updated during the import accompanied with the "This ArcGIS Urban plan is being updated, please wait..." progress message.

Import and export

  • When importing street graphs from GDB, SHP, or DXF, street lanes with sensible default widths are now created. If there are street or sidewalk width attributes available, they are used to set the widths of the created lanes.
  • Fixed a bug in which extra fields were showing up in Graph and Shape export dialogs.
  • Fixed a bug in which wrong UVs were set when choosing to merge meshes by material.

Texture

  • Introduced fallback behavior for textures with no file extension or an extension that does not match the contents to load all supported textures.
  • Fixed a bug in which certain grayscale PNGs could not be read.

Visual CGA Editor

The Visual CGA Editor got a new resizable sidebar for browsing and adding nodes, replacing the old Add node dialog. It comes with the following features:

  • The Node Browser opens on the left side of the Visual CGA Editor window and can be resized horizontally. Access it using the new dedicated button in the toolbar, by pressing A or by double clicking on the canvas as you did previously.
  • In the Home view, click the different categories of ESRI.lib, Project, and Built-In, to see the nodes. You can switch between List and Grid view. Use the new Navigation bar to move backward and forward between folders.
  • When clicking a node, a Description view is opened providing information about the component, expected input shapes, it's attributes and extensions.
  • The Search view now shows all available nodes directly when activated. It also allows for more advanced filtering making it possible to search only for certain input shapes, attributes or extensions. Activate it by clicking on the search button on the top right of the Node Browser or pressing S.
  • Components can be added to the Canvas through the +Add button or drag-and-drop actions. Selected components can be replaced using the Replace button.

The Visual CGA Editor now auto-reloads outdated components when opening a VCGA design. All valid connections and user-set attributes in the mini-inspector are kept. If that is not possible the component node is still marked as outdated in red color and needs to be reloaded manually, ensuring that broken connections will be noticed.

General improvements and bug fixes:

  • The description of a component node now includes the description of all attributes and extensions.
  • The mini-inspector for attribute slots now shows the attribute name instead of the description.
  • Added support for the @Order annotation in the annotation editor of extension nodes.
  • Fixed a bug in the mini-inspector in which the range step sizes for the slider got interpreted wrongly.
  • Fixed a bug in the annotation editor that lead to wrong "restricted" range parameters written to exported CGA rules.
  • Fixed a bug in the annotation editor that prevented triggering auto-saving the VCGA Design after the Description got modified.
  • Fixed a bug in the annotation editor that caused missing descriptions.
  • Fixed a bug in which replacing nodes behaved differently than adding nodes.

CGA Editor

  • Improved and redesigned code completion to automatically suggest relevant operations and functions as you type. Each suggestion shows the documentation from the CGA Reference. Automatic suggestions can also be disabled and code completion can still be activated using Ctrl+Space.
  • Analyzing existing code is easier now: Hover the mouse over operations and functions to read the documentation in a pop-up directly in the editor. Further, a new command in the context menu lets you jump to the corresponding section in the CGA Reference window.
  • Improved code readability with a new default font and increased line spacing.
  • Above mentioned new features can be customized or disabled in the new CGA Editor preferences.
  • Improved auto indentation after pressing Enter.
  • Cleaned up the context menu.
  • Fixed available pages in the filtered Preferences view when called through the context menu.
  • Fixed the Show Definition command in the context menu in certain cases.
  • Fixed the Select Shapes command in the context menu (when in Inspect model mode in the Model Hierarchy).

CGA

  • Imroved the performance when generating large scenes with many shapes and materials.
  • Rule package (RPK) larger than 2GB are supported now.
  • Selector scatterMean of the scatter operation now supports usage of sel() function.
  • A warning is now displayed when a deprecated selector is used.
  • Improved robustness of 3D Boolean operations and fixed unwanted collinear points and missing "bool.cut" auto tag on edges in rare cases.
  • The random number behavior in dynamic imports is now consistent with static imports. For example, changing unrelated code or overriding an attribute does not lead to different random values.
  • Geometry tracking is now preserved when using inline(append) inside modify or inline(recompose), enabling reconnection of edited geometries if the inlined rule leads to a single leaf shape.
  • Fixed an out-of-memory error in the modify operation when shapes with uv coordinates were split recursively.
  • Fixed a bug in the r operation where selector scopeCenter did not correctly preserve the scope center.

For a more detailed list of changes, see the CGA Changelog.

ESRI.lib

  • Architecture Components
    • Redesigned window components. Windows are now created using the workflow: Structure > Frame > Partitioning > Operation > Panel.
    • Added railing components to create railings on windows.
    • Added opening components to create arched or round openings.
    • Added initial set of balcony components.
    • Implemented technical updates in massing models.
    • Added thumbnails for each component (for preview in Visual CGA editor)

  • Street Rules
    • Curbzone/Bay_Lane.cga: A bay that pulls into the sidewalk, intended for bus stops.
    • Curbzone/Bulb_Lane.cga: A bulb that extends from the sidewalk into the street, can be used for bus stops or narrowings.
    • Curbzone/Transit_Shelter_Lane.cga: Bus shelters on a sidewalk.
    • Crosswalk/Pedestrian_Island_Lane.cga: A pedestrian island with different crossing types.
    • Crosswalk/Zebra_Crosswalk_Lane.cga: A zebra crosswalk.
    • Transition/Rounded_Ending_Lane.cga: Creates round elements at the end of a segment (intended for segments joining into an intersection).
    • Added variants of street configurations Downtown_MajorSt_4VL_39m and Simple_Street_Generic_2VL_17.20m that contain bus stops.

  • Other changes
    • PlantLoader.cga: Added start and extension keywords
    • Various bugfixes

Tutorials, content, and documentation

Tutorials

Updated Essentials: Work with GIS tutorial with adapted Street Designer workflows and refined images and content. Also, we provided new tips for editing imported street networks.

Content

  • The Contemporary Architecture Park Example now uses the new window components provided by the ESRI.lib.
  • Updated the VCGA Playground Example so the Simple_Building uses the new window and balcony components from the ESRI.lib.
  • Updated the CityEngine Tour CGA rules to fix the wrong floor count and adjust the gap between upper floor volumes.
  • Replaced the Street_Modern_Standard.cga rule in the Essentials: Work with GIS tutorial with a street configuration and provided updated UI screenshots throughout.

Documentation

  • Based on the new Street Editing tools, restructured the editing streets documentation with new pages featuring updated tables.
  • Simplified the graphs pages to be more clear about the relationships between parent objects (segments, nodes, blocks) and their children shapes (lanes, node shapes, and lots).

System

  • Removed support for single-use and concurrent-use license types which was based on the also removed Flexera FlexNet licensing system.
  • Removed the ArcGIS Administrator from the CityEngine installation on Windows and Linux. With the removal of the single-use and concurrent-use licensing types, this tool is not necessary anymore
  • Replaced the CityEngine installer on Linux with a standard RPM package for our supported (Redhat-based) Linux distributions. You can now install CityEngine by double-clicking the RPM (and use "Gnome Software" to install CityEngine) or run a single "sudo dnf install" command. See Installing CityEngine on LInux for details.
  • Added support for Redhat Enterprise Linux 10 and compatible distributions, such as Alma Linux 10 or Rocky Linux 10. This includes support for the Wayland display protocol.
  • Added support for self-signed Portal certificates.
  • Improved the error messages in case of problems when authenticating via browser.
  • Fixed a bug in which the ArcGIS Sign-In page for CityEngine would fail to load due to an invalid chromium certificate. Certificates are now verified before the sign-in is prompted.
  • CityEngine now fetches the list of external URLs for documentation and example and tutorial projects via https.

Updated 3rd party libraries

  • Updated the bundled C Runtimes on Windows to MSVC 14.44.
  • Removed org.apache.commons-text_1.8.0.jar (fixes CVE-2022-42889, CVE-2025-46295).
  • Updated libxml2 to version 2.15.1.
  • Updated libjpeg-turbo to version 3.1.2.
  • Updated libpng to version 1.6.5.
  • Updated tbb(usd) to version 2021.10.
  • Updated libtiff to version 4.7.1.
  • Updated zlib to version 1.3.2.