User guide
199
current Ops in the Op Tree from a previous run. If any changes have been made, those Ops are reconfigured/dirtied,
and a re-cook triggered, if appropriate.
Lets take a look at the signature:
def myBuildOpChainFunction( node, interface )
• node - is an instance of the node in the node graph
• interface - is an instance of the NodeTypeBuilder.BuildChainInterface
Your code, ultimately, makes a series of calls to the interface to define the needed Ops, most likely using parameters
of the supplied node. The easiest way to see how to put this together is to take a look at some of the included
examples.
Examples of NodeBuilderType
RegisterMesserNode.py
This example Python script can be found at plugins/Src/Ops/Messer/RegisterMesserNode.py and shows how
to register a simple CEL-matched Op that "messes up" vertices at the locations it runs at. This is most similar to an
AMP in Katana 1.x versions.
SubDividedSpaceOp.py
This example Python script can be found at plugins/Src/Ops/SubDividedSpace/SubDividedSpaceOp.py and
shows how to register an Op to run at a specific location within the scene graph. The Op generates a hierarchy of
child locations underneath it. This is most similar to an SGG in Katana 1.x versions.
How to Install Scripts that Use the NodeTypeBuilder
NOTE: There is no requirement that code using NodeTypeBuilder runs at startup. It can be run at any time
in the Python tab but, at present, it's not possible to re-register a type if it has already been registered.
WARNING: If you don’t run the code again in a new Katana instance before opening a file with these nodes
in, they are replaced with Error nodes.
25 NODETYPEBUILDER | EXAMPLES OF NODEBUILDERTYPE