User guide
7 Scene Attributes and
Hierarchy
A key principle to working with Katana is that it doesn't matter where scene graph data comes from, all that matters
is what the attribute values are. For example geometry and transforms can come from external files such as Alembic,
but can also be created by internal nodes, or even AttributeScripts that use Python to set attribute values directly.
In principle you could create any scene with just a combination of LocationCreate and AttributeScript nodes, though
you'd probably have to be a bit crazy to set your scenes up that way!
The only data handed down the tree from one filter to the next is the scene graph data provided by iterators, such
as:
• 3D transforms, such as translate, rotate, scale, or 4x4 homogeneous transformation matrices.
• Camera data, such as projection type, field of view, and screen projection window.
• Geometry data, such as vertex lists.
• Parameter values to be passed to shaders.
• Nodes and connections for a material specified using a network.
As all data is represented by attributes in the Scene Graph, any additional data needed by the renderer, or any data
needed by other, downstream, Katana nodes, must also be stored as attributes. Examples include:
• Lists of available lights and cameras.
• Render global settings such as which camera to use, which renderer to use, image resolution, and the shutter open
and close times.
• Per object settings such as visibility flags.
• Definitions of what renderer outputs (AOVs) are available.
NOTE: When constructing attributes, nodes, or scene graph locations of your own, ensure that you adhere
to Katana's naming rules.
• For nodes, this includes using only alphanumeric characters and underscores, and beginning the name
with an alphabetic character or an underscore. This is enforced at the API level.
• For ports, this includes using only alphanumeric characters, underscores, and dots, and beginning the
name with an alphabetic character or an underscore. This is enforced at the API level.
• For scene graph locations, this includes using only alphanumeric characters, underscores, and dots, but
unlike with ports and nodes, you can begin the name of the scene graph location with any valid character.
This is not enforced at the API level.