User guide

179
From a technical perspective, you can interact with the Runtime through a C++ or Python interface, which provides a
great deal of flexibility in how you configure your OpTree and listen to scene graph updates.
Interface Languages Available
Ops C++ and Lua (with OpScript)
Client Configuration C++ and Python
OpTree Configuration C++ and Python
Ops
A Katana Geolib3 Op is the lowest level scene graph processing unit”, responsible for building or processing scene
graph data on demand. All scene graph loading/processing functionality internal to Katana is implemented using the
same Op API available for your own custom development. Conceptually, Ops are a super-set of the old geometry
APIs in Katana, including Scene Graph Generators and Attribute Modifiers.
Examples of what Ops can do include:
Setting attributes
Creating child scene graph locations
Deleting child scene graph locations
Getting attributes from the incoming scene graph
Getting the available Op arguments.
Rules for Ops include:
The OpTree defines the connectivity for what an Op sees as its input.
Each Op is responsible for registering a stateless function, which is called on demand at all locations on the input
scene graph. This function is also referred to, later on, as the Cook function.
For Ops that do not have an input, the function is called at the root location giving them the opportunity to
construct a more complex scene graph.
From the perspective of an Op implementer, the incoming scene is immutable. Only the output scene can be
modified.
Although an Op can run on many different locations, it's called separately for each location. Each time an Op is
called, the result is a single scene graph location - the 'output location'.
Ops are expected in their implementation to do the minimum amount of work necessary to produce the specified
scene graph location, in order to be a “good citizen” in a deferred processing system.
Roughly speaking, when a downstream client is evaluated, all upstream Ops in the OpTree are run over all scene
graph locations that exist (and are expanded) in the incoming tree. While there are more sophisticated API calls to
24 OP API | CORE CONCEPTS WITH GEOLIB3