The Omniverse Connector for CityEngine provides an uni-directional link to Omniverse Nucleus. On top of the basic export functionality, repeated exports with the same name will accumulate using USD composition techniques. This allows for convenient tweaking of an exported model (e.g. updating a single building in a large city) without having to re-run full exports (which are potentially time-consuming).
The Omniverse Connector is available through a CityEngine model exporter and behaves like the default USD exporter. The only difference is that the USD data is sent to Nucleus instead of to disk.
Sending Models to Omniverse¶
The typical steps to send a CityEngine scene to Omniverse are as follows:
In Cityengine, create layers and shapes and optionally assign CGA rules.
Select the desired layers, shapes and/or models.
Choose File -> Export Models… -> Omniverse Connector
Specify the desired Nucleus host name, path and export name, e.g.
The exported USD scene will be written to e.g.
In Omniverse Create or View, either open the
/Users/CityEngine/myName/myName_root.usdcfile directly or add it as sub-layer or reference to an existing scene.
Updating a prior export¶
To use the update functionality, first use Create or View to activate the “live mode” on the sub-layer or the layer which references the root USD file from CityEngine.
If the connector detects a prior export (e.g.
/Users/CityEngine/myCity/myCity_root.usdc) on Nucleus with the same name (e.g.
myCity), it will non-destructively layer the new models on top of the existing data and hide the outdated models. The data of each such iteration is placed in corresponding edit directories, e.g. /Users/CityEngine/myCity/edit_1/.
Note: to identify updated models between CityEngine and Omniverse, the connector concatenates the CityEngine
Shape Name and
ObjectID with an underscore
_ in between.
In above example, the resulting prim in Omniverse will be called
Export Option Reference¶
Nucleus Host: host name of the Nucleus server
Nucleus Path: path on Nucleus server to store the exported USD data
Base Name: used to create a new directory below
Models with Shape Fallback (Default): If model generation fails, it will export the start shape geometry.
Models: Ignore the shape, if the model generation fails.
Shapes: Only export the shape geometry.
Terrain Layers: control the export of terrain layers based on selection.
Simplify Terrain Meshes: If enabled, uses the CGA
reduceGeometryoperation to simplify the terrain geometry prior to export. This can take a long time, especially on higher resolution terrains.
Global Offset: Offset the exported geometry. The
centerbutton will compute an offset so that the combined bounding box will be centered around the origin. This is useful to de-georeference a scene to prevent floating point precision issues in Omniverse.
Up-Vector: Sets the stage up-vector and transforms the CityEngine models accordingly. This is useful to work with AEC content which is typically stored as z-Up.
Please also refer to the model export section in the CityEngine Manual .
Version 0.9.3 (Launcher Package 100.1.23)¶
Fixed MSI installer to include modified USD encoder for correct prim naming.
Set stage units to centimeters and scale CityEngine geometry accordingly (Omniverse currently only supports centimeters).
Add option to control “up” vector and transform CityEngine geometry accordingly.
Use “base name” to set default prim on root stage.
Removed the useless ‘browse’ button for the server path.
Removed option to configure the nucleus port (this value is hardcoded in Omniverse Nucleus).
Allow the “@” character in the Server Path (useful for certain authentication schemes).
Added input validation for the Nucleus host name (allowed characters are 0..9, a..z, A..Z, .-_).
Initial export functionality to Nucleus
Support partial updates by layering multiple exports with USD list edits
Layering multiple exports on top of each other in live mode currently only works if the CityEngine root prim is not moved in the USD tree.
Similarly, exporting multiple times with the same name from a CityEngine scene with multiple identical layer names does not work correctly.