Model export application notes

Note #1: Format Recommendations

Please note that some of the listed tools require additional plugins to be able to load all formats.

ToolFormatMandatory Options

ArcGIS Earth

KML

Autodesk Max

OBJ, FBX

(for obj, enable import of smoothing groups in max)

Autodesk Maya

FBX, ABC, OBJ

(Maya cannot import Alembic materials out-of-the-box.)

Autodesk MotionBuilder

OBJ, FBX

Blender

OBJ, FBX, ABC

- Multi-Texturing

Cinema 4D

OBJ, DAE

- Multi-Texturing

Deep Exploration

OBJ, FBX, DAE

SideEffects Houdini

Alembic

The Foundry Katana

Alembic

Lightwave

OBJ

Polytrans

OBJ, FBX, DAE

e-on Vue

VOB, OBJ

Note #2: Working with Expensive Assets

If you work with expensive (i.e., large) assets, it is of advantage to create simplified proxy assets and switch between them with a global LOD (Level of Detail) attribute. To avoid scattering the LOD attribute all over the rules, it is useful to put the conditions into separate "asset loader" rules:

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

If you plan to create large models, it is of great advantage to implement global CGA attributes into your rule sets that allow to selectively block the generation of polygon-intensive model features. For example, one could replace some high-polygon greek columns with simple cuboids by using an attribute LOD, together with a corresponding condition in the CGA rules.

Application Example

Let's assume you want to render a large scene with Renderman and you have a CityEngine scene ready with a LOD switch. By exporting the scene with LOD = 0 to a single obj file (without any textures) and importing it, for example, into Maya, you are able to quickly setup the lights and camera without overburdening Maya with heavy geometry. Once the environment is ready you can go back to CityEngine and export the whole scene with LOD = 1 to RIB files and link them to the render setup.

Implementation Example

Below you find a modified version of the Parthenon temple shape grammar example. Note the usage of the LOD attribute:

...

# ---------------------- 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, ~90k polygons

The temple with LOD = High, ~675k polygons