Model export application notes

Note #1: Format Recommendations

Format recommendations for various software and functionality are listed in the table below.

Note:
Some of the software and functionality listed require additional plug-ins to load all formats.

Software or functionalityFormatRequired options

ArcGIS Earth

KML

Autodesk Max

OBJ, FBX

For obj, enable import of smoothing groups in Max.

Autodesk Maya

FBX, ABC, OBJ

(ABC materials cannot be imported out of the box in Maya.)

Autodesk MotionBuilder

OBJ, FBX

Blender

OBJ, FBX, ABC

Multitexturing

Cinema 4D

OBJ, DAE

Multitexturing

Deep Exploration

OBJ, FBX, DAE

SideFX Houdini

ABC, USD

Foundry Katana

ABC, USD

Lightwave

OBJ

Polytrans

OBJ, FBX, DAE

e-on VUE

VOB, OBJ

Note #2: Working with Expensive Assets

If you work with large assets, you can create simplified proxy assets and switch between them with a global level of detail (LOD) attribute. To avoid scattering the LOD attribute over the rules, you can put the conditions into separate asset loader rules, as shown in the following sample code:

attr LOD = 0
...
Shaft -->
    s(diameter,’1,diameter) center(xz) color(shaftC) ShaftAsset 
    
ShaftAsset -->
	    case LOD == 0: primitiveCube()
	    else: i("path/to/expensive/asset.obj")
...

Note #3: Working with Large Models

To create large models, implement global CGA attributes into the rule sets so you can selectively block the generation of polygon-intensive model features. For example, you can replace high-polygon Greek columns with simple cuboids using an attribute LOD together with a corresponding condition in the CGA rules.

Application example

To render a large scene with Maya or Arnold when you have a CityEngine scene with an LOD switch, export the scene with LOD = 0 to a single .obj file (without textures) and import it. For example, if you import it into Maya, you can quickly set up the lights and camera without using heavy geometry. Once the environment is ready, you can go back to CityEngine and export the scene with LOD = 1 to USD format files and link them to the render setup.

Implementation example

An example of a modified version of the Parthenon temple shape grammar is shown below. The LOD attribute is used.

The temple with LOD = Low, or ~90k polygons

...

# ---------------------- model parameters ----------------------

@Group("Model Options", 0)
@Order(1)
@Enum("High","Low")
attr Level_of_Detail  = "Low"
const HighLOD         = Level_of_Detail == "High"

...

### Columns ###

...

ColumnTile --> 
    set(trim.vertical,false) 
    primitiveCube() s( Diameter ,’1, Diameter ) t(’-0.5,0,’-0.5) 
    color(Column_Color) 

    [ case HighLOD : Column
      else : Column. ]

Column --> ...	  
	  
...
The temple with LOD = Low, or ~90k polygons

The temple with LOD = High, or ~675k polygons

The temple with LOD = High, or ~675k polygons