Export ABC (Alembic)

The Alembic exporter efficiently exports geometry and meta-data (materials, CGA reports, object attributes, ...) into Alembic .abc files. Alembic is an open, high-performance interchange framework designed for VFX content production pipelines. See https://github.com/alembic/alembic for more details.

Use cases

The CityEngine Alembic exporter has been designed with these goals in mind:

  • Focus on compatibility with established tools like Side Effects Houdini/Mantra, Autodesk Maya, The Foundry Katana, Pixar Renderman, Solidangle Arnold, ChaosGroup VRay.
  • Export of very large models with complex rules while retaining shape granularity (no merging of geometry). This allows for edits (e.g. move, scale) on individual objects (e.g. buildings) in downstream tools without having to re-export the whole scene.
  • Preservation of instances, i.e. inserted assets not touched by CGA operations are exported as separate nodes. This allows for limited editing (translate/scale) of these assets in downstream tools.
  • Direct export of all material properties and CGA report values on each mesh. This allows the customization of materials using CGA reports in downstream tools.

Export options

The Alembic exporter shares most export options with the other formats, see general export options for details. The only exception is the file name. As Alembic efficiently handles large files (multi GB), the exporter will always write a single file per run.

Alembic node hierarchy created by CityEngine

Alembic node hierarchy in CityEngine
Alembic node hierarchy in CityEngine

Mappings from Alembic entities to CityEngine entities (refers to figure above, from top left to bottom right):

  • The "c_0_0, ..." transform nodes are cells of a sparse grid derived from the exported scene. The cell size is adjustable in the export wizard.
  • The "Shape 1, Shape 2, ..." transform nodes are created from CityEngine scene objects ("initial shapes"). The transformation stores the translation defined by the global/local offset options.
  • The "CityEngine" property node is unique and receives the current user name and CityEngine version.
  • The "ceObjectAttributes" and "ceRuleAttributes" property nodes are attached to the shape node and receive the object attribute values and rule attribute values of the corresponding shape.
  • The "Leaf Shape 1, Leaf Shape 2, ..." transformation nodes are created to hold the geometry output of CGA leaf shapes. For uncached meshes (i.e. geometry purely created by CGA) one such node is created with the CGA leaf shape name. For instanced assets, one transform node is created for each mesh.
  • The "Points 1, ..." nodes receive all single vertex geometries from a shape (e.g. generated by scatter() or comp(v)). One points node for each unique material/report combination will be created. Note: only reports will be attached as user properties.
  • The "Mesh 1, Mesh 2, ..." nodes are created for each set of polygons with the same instance transformation (or none, in case of uncached geometry) and the same material and CGA report values. The unique material/report combination is useful to customize materials with report values.
  • The "P" (points), "N" (normals) and "uv0" (first texture coordinate set) store the actual polygonal geometry.
  • The ".userProperties" property node is used to store CGA materials and reports per mesh or points node.
  • The ".arbGeomParams" property node is used to store additional texture coordinate sets (Alembic only supports one set on the mesh itself).
  • The "Preview Material" node is of type AbcMaterial and stores the current material properties in the (experimental) Alembic Preview Material v2.1 schema.

In this topic
  1. Use cases
  2. Export options