Visit My Esri to upgrade to CityEngine 2020.0. Are you new to CityEngine? Try it now with a fully functional free trial version.
Interactive design tools
Push Pull Tool
- The push pull functionality is now a separate tool. This simplifies the UX of the drawing tools and improves the discoverability of push pull. Therefore, we reassigned the shortcut when you toggle between parallel projection view and planar drawing mode to (D+P), while (P) now enables the Push Pull Tool.
- Moved the numeric input field for the Push Pull Tool to the new Tool Options window.
- Fixed a bug in which a shape disappeared unexpectedly while creating an extrusion.
- Fixed various bugs in the Push Pull Tool for a more intuitive user experience.
Snapping
- In order to declutter the snapping visuals, the mouse pointer now provides a visual feedback when snapping occurs.
- You can now specify in detail which features you want the pointer to snap to in the new Tool Options window of the drawing tools.
- It is now possible to snap to locked objects. You can toggle this feature in the Tool Options window.
- Enhanced the visualization of snapping to vertices, edges, and faces as well as parallel and perpendicular snapping.
- Added fade outs in order to improve the visibility of edge snaps.
- Implemented the new snapping visuals for the street tools as well.
- You can now set the line width of snapping visuals, guides, and other decorations in the Viewport through the Preferences.
- Fixed a bug in which snapping with the rectangle tool did not work in all cases.
- Fixed a bug in which a hole was not created successfully when the shape was drawn using guides.
- Fixed a bug in which the estimation of the drawing plane failed while snapping to guides.
- Fixed various bugs in which unexpected snapping occurred to occluded shapes.
Guides
- Guides are now persisted in the scene. This also solved a bug in which guides were not preserved after closing all viewports and opening a new one.
- Guides are now undoable and the maximum number of guides in a scene is now 20.
- Enhanced the visualization of guide extensions.
- Added perpendicular snapping to guides.
Tool Options
- Added the new Tool Options window type for many tools in the toolbar. Tool features that were accessible only by shortcuts are now accessible through the UI.
- Numerical input fields in Tool Options indicate their measurement unit.
- Added Tool Options to the translate, rotate and scaling tools.
- Added Tool Options to the measurement and analysis tools.
- Added Tool Options to the drawing tools.
- Drawing tools now have options to control snapping targets on a finer grained level.
Viewport
- The Viewport rendering now uses a physically based lighting model for higher quality visualization.
- The Viewport rendering now handles all CGA material attributes connected to the "CityEnginePBRShader" (such as emissive, occlusion, roughness, and metallic maps).
- The Viewport rendering now handles the opacitymap.mode and opacitymap.cutoff CGA material attributes.
- Adjusted the default color of shapes.
- If a map layer is added to a scene, buildings do not cast shadows anymore onto an imaginary shadow plane when the map layer's visibility is turned off.
- CityEngine now prevents the assignment of arbitrary CGA rules to static models.
- Fixed a bug that sometimes prevented the selection of shape components (e.g. faces) when a (hidden) model was present.
- When assigning rules with drag-and-drop, CityEngine now highlights dynamic shapes when you hover over them.
- Fixed a bug in which framing a static model did not work consistently.
- Implemented a workaround for a bug with Intel graphics cards that resulted in a broken Viewport.
- Added a workaround for driver problems with AMD Navi GPUs (this also includes certain Apple devices). The workaround must be switched on manually, see this GeoNet blog post for more details.
Streets
- CityEngine now visualizes the first edge of selected dynamic shapes, such as street shapes and blocks. This improves the CGA authoring experience.
- Adjusted the default settings for Cleanup streets to give better results, especially in urban environments.
- Fixed a bug in which the rotation of street segments and curves caused unexpected results.
Miscellaneous
- The Select tool now has an option to turn off the selection highlight. This is useful when editing CGA attributes with the Inspector.
- The Viewport now visualizes vertices more clearly when drawing shapes.
- Fixed multiple bugs in which an “Error in mouse handler” was logged while using the polygonal drawing tool.
- Fixed a bug that prevented the user from setting the first edge of a hole.
- Fixed a bug in which undo/redo didn't work properly with the shape and hole creation.
- Fixed a bug in which shapes consisting of an arc and a straight segment failed to close.
- Fixed a bug that prevented the closing of a shape consisting of only one arc.
- Fixed a bug in which the streetWidth object attribute was added to newly created shapes unexpectedly.
- Tools now correctly handle the streetWidth object attribute for shapes with multiple faces.
Inspector
- Redesigned the combobox technically and visually. This results in a more responsive Inspector and better UI readability.
- Added a string-size limit to CGA reports.
- Improved the fallback values for missing connected attributes.
- Improved the performance of CGA attribute evaluation.
Array editing in the Inspector
- The Inspector now supports editing, inserting, and deleting CGA array attributes. @Enum and @Range annotations are also supported.
- The one-line representation of arrays now uses comma separators instead of semicolon to match the representation in CGA code.
- Fixed a bug that sometimes allowed connecting rule attributes to incompatible object array types.
ArcGIS Urban integration
- CityEngine now supports ArcGIS Urban Rule 1.1.0.
- CityEngine now supports the new ArcGIS Urban 2.0 data model with one primary feature layer and multiple design layers of the Plan or Projects types. Consequently, the Urban Model selection was removed from the CityEngine Preferences.
- When creating models on parcels, floors are now extruded by default.
- Added support for the existing buildings layer in Urban projects.
- Added icons for Plans and Projects to the ArcGIS Urban tab in the Navigator.
- The Navigator preview now displays metadata, such as owner name, and a preview image for Plans and Projects.
- Added a warning when opening scenes created with incompatible versions of ArcGIS Urban.
- Resolved an issue with the calculation of the FloorAreaPerDwellingUnit attribute for parcels with multiple buildings.
- Resolved an issue in which CityEngine failed to import edge orientations edited in ArcGIS Urban.
- CityEngine now displays an overlay with the default parcel attributes for parcels not assigned to a specific zone.
- Fixed a bug that caused overlays not being applied correctly.
- Fixed an import failure caused by inconsistent edge attribution.
Import and export of 3D data
Universal Scene Description (USD)
- Added a new exporter for Pixar's Universal Scene Description (USD) format.
Mobile Scene Layer Package Exporter (MSPK)
- Added a new exporter for Mobile Scene Layer Packages (MSPK).
Scene Layer Package Exporter (SLPK)
- Removed the unnecessary “Layer Enabled” export option.
- Improved the screen size estimation of scene elements resulting in a better user experience when zooming and panning in Scene Viewer.
- It is now possible to correctly write the emissive color factor of PBR materials.
- You can now correctly write the material.opacitymap CGA attribute.
- Fixed a problem with vertical coordinate systems in "us-foot".
- Fixed a bug in which the whole SLPK export could fail if a shape did not produce any geometry.
- Reduced the size of the exported SLPK by writing PBR textures only when necessary and by better optimizing texture atlas sizes.
- You can now correctly set the "opacity mode" flag for nodes that contain a mix of transparent and opaque objects.
- Fixed a bug that caused materials to set the alpha mode to "opaque" instead of "blend".
- Normal maps now use better default values to prevent artifacts.
- Fixed a bug in degenerated uv coordinates handling that caused nodes to not load in Scene Viewer.
- Fixed a crash with models that contained uv coordinates on only some of the faces.
- Fixed a bug in which writing float CGA Reports caused invalid SLPK files.
Unreal Engine exporter (Datasmith)
- Updated the Unreal Engine Datasmith exporter to Unreal Engine 4.24. The Unreal exporter and the Datasmith library are no longer in beta status.
- Added support for generating texture atlases. This improves rendering performance in Unreal.
- Optimized textures by combining individual PBR maps into a single map; diffuse and opacity maps are also combined into one.
- Switched instances from the deprecated Unreal Foliage system to the new Hierarchical Instancing mechanism.
- The exporter now writes the full asset path to each exported instance for improved post-processing flexibility in the Unreal editor.
Autodesk FBX import and export
- Updated the underlying library to FBX 2019.
- Fixed a bug in which textures in subdirectories were not correctly imported.
- Fixed a bug in which a temporary directory was not correctly deleted.
glTF import and export
- Added support for the new material.opacitymap.cutoff CGA attribute.
Procedural modeling language (CGA)
Array support
Extensive support for arrays has been added to the language, user interface, and file import. This enables efficient data processing in minimal and elegant CGA code. In conjunction with the native support for CSV files and a dedicated support in the user interface, you can now decouple complex data from CGA code logic and intuitively control it in the Inspector.
Full array support in CGA
- Arrays may now be two-dimensional, in other words, consist of rows and columns. While 2D arrays can be created through the array initialization, they can also be imported from CSV tables through the newly introduced readTable functions.
- You can now create sequences of float values with the new colon operator.
- It is now possible to access array elements by index and boolean arrays, both in 1D and 2D. This allows for efficient creation of new arrays based on the data found in the indexed array.
- There is now an extensive set of operators for arrays, including element-wise logical, arithmetic, and relational operators. This is completed by type conversion functions which also allow for empty array creation and offers an efficient and concise way to manipulate, combine, and analyze data without the need for writing recursive functions.
Array support in the UI
- Similar to scalar attributes, you can use the @Enum and @Range annotations for array attributes to control the user interface in the Inspector.
- The @Enum annotation now allows dynamic definition of enumeration values by an array attribute. This allows for a flexible UI configured for specific data at runtime.
- All array features can also be used for layer attribute CGA code (restricted to 1D arrays). Furthermore, you can now map and sample object array attributes using the new getArrayObjectAttr functions.
- In order to prevent an accidental memory overflow, the size of arrays is limited. This maximum size can be configured in the Procedural Runtime Preferences.
CGA compiler
- Improved the performance of type validation, making rule editing more responsive, especially for rules with errors and many parameters.
- Improved the description of type mismatch errors in order to better pinpoint the source of errors.
- It is now possible to directly use conditional and stochastic functions and literals as parameters. Previously, this was not possible for some operations and operators.
- Fixed incorrect compilation errors that occurred for some recursive functions.
- Each import must now be stated separately. Previously, it was possible to set several imports and annotations after only one import keyword.
- Applied stricter rules for valid identifiers: successive dots and a digit after a dot are no longer allowed.
Miscellaneous
- The Viewport now renders all PBR material attributes.
- The envelope operation now supports array parameters that allow you to set heights and angles per edge.
- Added the new material.opacitymap.cutoff material attribute that allows you to control switching between opaque and transparent rendering when the opacity map is set to "mask" mode.
- Fixed a bug that caused blurry and discontinuous textures when using the setupProjection operation at very large world coordinate magnitudes or with very large offset values.
- The texture operation now resets the opacity map when an alpha channel isn't present in the texture.
- Improved the performance for initial shapes with many holes and vertices.
- Bugfixes for the CGA Problems view:
- Fixed the unknown rule error from listing twice.
- Fixed an exception that occurred after clicking on an entry.
- Bugfixes for layer attribute CGA code:
- Fixed a bug that caused a wrong reversed consideration of the probability in the p (probability) function and stochastic functions.
- Fixed a bug in which the find function incorrectly found overlapping occurrences of a search string.
- Nonnumeric string object attributes that are converted to float CGA attributes now yield "NaN" instead of 0.
- Fixed an exception in error marker handling in the Layer Attributes CGA Editor.
- Overhauled the syntax for all functions and operations in the CGA reference, and unified and simplified parameter names (also for code completion in the rule editor).
See the CGA changelog for a comprehensive list of changes and bugfixes.
Python scripting
- Updated the Python development environment in CityEngine to PyDev 4.5.
- Fixed a bug in which CityEngine stopped responding when a scene file is created in a startup script.
- Fixed a bug in which legal syntax was marked as an error in the Python editor.
- Removed an unnecessary security alert on Windows when opening the interactive Python console for the first time.
- You can now activate mini maps instead of the standard scroll bar in Preferences.
- The Python reference is now available online as well.
Python API:
- Improved the naming consistency of the setFilename and setOutputPath functions of the export setting classes.
- Added MSPKExportSettings to export Mobile Scene Packages.
- Added USDExportModelSettings to export Universal Scene Description files.
- Added the UnrealExportModelSettings.get/setUseTextureAtlas methods to control creation of texture atlases in contrast to individual texture files.
Documentation
- You can now download a PDF version of the manual. This is useful when working offline.
- The Python reference is online.
- Added an introduction to the asset and rule library ESRI.lib.
- Improved various sections in the manual, including street modeling, CGA attributes, graph drawing, and Get Map Data.
Esri.lib
- Added new metadata for plants (such as SoilPH) to the PlantLoader, and matching filters can now be used in its user interface.
- Added the ArcGIS Urban Rule 1.1.0 to Esri.lib.
- Updated Esri.lib and Webstyles to version 2020.0.
- The plant loader rule now reads metadata from a CSV file.
Miscellaneous
- Fixed a bug on Linux that caused problems with typing in browser-based dialogs such as Get Map Data, Named User and AGO sign in dialogs, and Dashboards.
- Fixed a bug in which shortcuts such as Cmd-Z stopped working under certain conditions on macOS.
- Fixed a bug in the chart creation dialog of the Dashboards on macOS (Catalina).
- Improved the quality of upscaled icons on HiDPI screens dramatically.
- Improved the Scene Editor:
- Adjusted colors of selected layers to improve consistency.
- When static models are imported, they are added to the top-most unlocked static model layer. This prevents the creation of unnecessary layers.
- Fixed various bugs in which pop-up windows were too small, resulting in content being cut off.
- Fixed a bug in which selecting a tool in the toolbar after startup resulted in unclear tool selection.
- Fixed a bug in the analysis tools in which interactive handles did not get removed from the Viewport after deletion and undo/redo.
- Fixed a bug in which the status of the Generate button in the toolbar was not correctly updated.
- Added missing translations in the status bar and Preferences.
- Updated 5 entries in the coordinate system database (3 for Norway NGO 1948 and 2 for Asia IGD05).
- Updated the CityEngine SDK to PRT 2.2 (CE 2020.0).
- Changed the full name of CityEngine from Esri CityEngine to ArcGIS CityEngine to better align with the ArcGIS product family.