Developer Reference

OmniGraph development can be done by users with a wide variety of programming proficiency. A basic familiarity with the Python scripting language is enough to get you started. If you know how to create optimized CUDA code for high throughput machine learning data analysis we’ve got you covered there too.

You can start off with some basic Naming Conventions that let you easily recognize the various pieces of OmniGraph.

While you are free to set up your extension in any way you wish, if you follow the Directory Structure then some LUA utilities will help keep your premake5.lua file small.

Working In Python

OmniGraph supports development of nodes implemented in Python, Commands that modify the graph in an undoable way, Python bindings to our C++ ABI, and a general Python scripting API. See the details in the Python Nodes and Scripts page. See also the OGN Code Samples - Python for examples of how to access different types of data within a node.

Working In C++

OmniGraph supports development of nodes implemented in C++, as well as an extensive ABI for accessing data at the low level. See also the OGN Code Samples - C++ for examples of how to access different types of data within a node.

Implementation Details

The architecture and some of the basic components of OmniGraph can be see in the OmniGraph Architecture description.

OmniGraph uses USD as its persistent storage for compute parameters and results. The details of how this USD data corresponds to OmniGraph data can be seen in the OmniGraph and USD page.

All of the details regarding the .ogn format can be found in the Node Generator.

Having a node working is great - having it working fast and efficiently is even better. Have a look through the Performance Optimization Tips to see how to make your nodes work at maximum efficiency.

The Kit framework is based on modular extensions, which gives rise to a lot of similar but subtly different implementations as more and more extensions are created. As such it is nice to have some guidance on Best Practices for writing OmniGraph code to make it easier both to write and to read examples from others in order to accelerate development.

Action Graph

Action Graph is a type of OmniGraph with unique features that can be used in custom nodes. See Action Code Samples - C++ and Action Graph Code Samples - Python for code examples.

Compound Nodes

See Compound Nodes for details about compound nodes; specifically how they are represented in USD, and how to work with them using python.