User guide
76
be used. Under each of these locations you have separate branch of the hierarchy that declares the actual geometry
used for that LOD representation of the asset.
The most common metadata used to determine which level of detail to use are tags or weights. Tags allow each level
of detail to be given a 'tag' name with a string. Selection of which level of detail to use can be done using this tag
name, such as select the level of detail called 'high' or 'boundingVolume'.
Weights allow a floating point value to be assigned to each level of detail. Selection can then be done by choosing the
closest level of detail to a given weight value. This allows sparse population of levels of detail, for example not every
asset might have a 'medium' level of detail, but if you select them by weight then the most appropriate LOD from
whatever representations exist can be selected.
LodSelect can be used to selection of which LOD to use using either tags or weight values. This uses a CEL expression
to specify the LOD Groups you want to do the selection on.
Some renderers, such a Pixar's RenderMan, have features to handle multiple LODs themselves. Selection of which
LOD to use, and potential blending between the LODs as they transition, is done at render-time. This is specified by
having range data associated with each LOD that describes the range of distances from camera to use that LOD for,
and the transition range for any blending. LOD range data can be set up using LodGroupCreate or LodValuesAssign
nodes.
Alembic and Other Input Data Formats
It is potentially possible to bring in 3D scene data from any source. However, due to the way that filters can get
called recursively on-demand it is best to work with formats that can be efficiently accessed in this manner. This is
one of the reasons that we recommend Alembic as being ideally suited for delivering assets to Katana.
If you want to write a custom plug-in to read in data from a new source, such as using an in-house geometry caching
format, you can write a Scene Graph Generator plug-in. This is a C++ API that allows you to create new locations in
the scene graph hierarchy and set attribute value. For more details about the Scene Graph Generator API, and the
associated Attribute Modifier API (for C++ plug-ins to modify attributes on existing scene graph locations) please
look at sections 12.1 and 12.2.
10 STRUCTURED SCENE GRAPH DATA | ALEMBIC AND OTHER INPUT DATA FORMATS