User guide
180
change which Op runs at child locations, substituting out your OpArgs, the Optype, or even calling into another Op
entirely, these can be ignored during your initial exposure to Op writing.
• An Op is evaluated from a starting location. This is usually the familiar “/root”, however, Geolib3 provides
mechanisms that allow you to redefine an Op’s starting location. The ability to change an Op’s starting location is
extremely powerful and allows you to write Ops than can work either relative to your start location or in a more
absolute manner.
Ops have two types of input:
1. Op Arguments - these are provided by the user to govern how the Op behaves when evaluated at a particular
scene graph location. When you instantiate an Op you provide a set of root location arguments, which are the
arguments the Op receives when run at its starting location. For instance, parameter values from nodes and
system args, such as the current frame time, are passed to Ops using Op Arguments.
2. Scene Graph Input(s) - locations and attributes that have been produced by other upstream Ops in the OpTree,
which are connected to the Op currently being evaluated, are available as input and query-able in a read-only
state.
The Runtime evaluates your Op at, potentially many, scene graph locations and it is up to you, the Op Writer, to
determine the action taken at any particular location. As an Op Writer, you have access to a rich API, whose
functionality can be broken down into three areas:
• Functions to interrogate the scene graph location the Op is currently being evaluated at.
• Functions to interrogate the state of the connected incoming scene graph.
• Functions to modify the output scene graph as a result of evaluating the Op at a given location. In addition to
changing the output scene graph, it is also possible for an Op to change, at evaluation time, what Op and
corresponding arguments are evaluated at child locations. It's also possible for an Op to arbitrarily execute other
Ops during its evaluation.
24 OP API | CORE CONCEPTS WITH GEOLIB3