Extension: omni.graph.docs-1.25.2

Documentation Generated: Apr 26, 2024

Changelog

Overview

Our Mission

To serve as a framework that democratizes and instills composability into computations in Omniverse and NVIDIA while ensuring performance, hyper-scalability, and seamless integration with USD.

What Is OmniGraph, and Why Do I Want It?

To a user, OmniGraph is a visual scripting language that provides the ability to implement actions and reactions in an otherwise static Omniverse world.

To a developer, OmniGraph is a framework that provides the ability to unify computation models that include such diverse approaches as traditional animation timelines, event driven state machines, inferencing algorithms with DNNs, NeRF scene generators, and training artificial intelligence algorithms.

To everyone, OmniGraph provides a scalable architecture where a description of a set of computations in graph form can perform well on an individual machine and make use of the full power of a multiple-node data center without changing the representation of the graph.

History has shown that the most flexible systems are also the most useful so OmniGraph has been architected from the ground up to provide a compute framework where clients can define their own functionality and have it interact with every other component as though they were built for each other. The framework is flexible enough to address all of the above range of use cases and more, as well as handling a large range of compute granularity. From a sub-millisecond math operation to an hours-long training session of a neural network the framework connects them all.

To find out more about the bits and pieces that comprise OmniGraph have a look at the Core Concepts. If you’ve been exposed to graph-based programs such as Maya, Houdini, 3D Studio Max, or Blender then a lot of the concepts will be very familiar.

Labyrinth OmniGraph

Sounds Great, How Do I Use It?

As you might suspect from the wide ranges of uses for OmniGraph there are an equally wide range of places for you to start depending on your expertise level and what you are trying to do. Here is a set of questions that will help you find your starting point:

I’m still not sure what this OmniGraph thing is

Have a look at the detailed Core Concepts for a better idea of the pieces involved, or watch the Getting Started Tutorials.

I’m a user running a Kit-based app and just want to use what’s already there

The User Interfaces guide will give you a good feel for how to find the OmniGraph features in the app. In particular, to create and wire up nodes in a graph you’ll be interested in the Visual Graph Editors. If you have a little bit of Python programming knowledge you can make use of the Script Node to write your own node behaviors without the need to write a full-blown node.

I’m a user with some Python knowledge and want to build a graph through scripts

We’ve provided a “one-stop” class that handles most of the operations you might want to perform with OmniGraph. The Controller Class amalgamates several different facets of OmniGraph manipulation in a single class, including topology changes, flexible object lookup, node structure changes, and attribute value reading and writing.

I’m a Python programmer and I’d like to write my own nodes

If you just want to try out some simple ideas to see how they work then you can write a node directly in the application by using the general Python script node. For script-based node creation, the AutoNode decorators let you quickly turn a class or function into a first-class node. Once you’re ready for something more serious you can move on to creating an entire Python node from start to finish.

I’m a C++ or CUDA programmer and I’d like to write my own nodes

As a C++ programmer we can assume you are familiar with the concept of a build system, compiler, and so forth so you won’t be daunted to know that you’ll have to use those in order to write your own node. The details specific to development of OmniGraph nodes in a Kit environment can be found in Creating C++ Nodes. If you really want to get down to the “bare metal” of C++ development then you can peruse through the details of our C++ ABI which all code, including the generated OmniGraph node code, uses in order to maximize compatibility across platforms and versions.

I’d like to know what the different options are for writing nodes

If you want a quick start to writing Python nodes you can start with AutoNode - Node Type Definition.

I have the basics - now I would like to see a bunch of nodes as examples

For instructional purposes the set of curated Walkthrough Tutorial Nodes that illustrate methods of accessing various types of OmniGraph data with accompanying explanations. If you just want to see what others have written you may find the online node library reference interesting.

I’ve heard about Action Graphs and want to know what they are

You can start with this Action Graph overview. There you will find some links to tutorials and demonstrations that use the Action Graph.

I’d like to look through the How-To guides to see what’s there

You can peruse through the current set of task-based instructions in the OmniGraph How-To Guide. Check back often as these will be updated regularly with new workflows.

Got any FAQs for me?

The OmniGraph How-To Guide contains very detailed instructions on specific tasks, but if you just have a simple question you can check the Frequently Asked Questions page to see if it is answered there. You can also try the search bar on this page if your question has a very specific term in it. Searching for a generic term like Attribute will get you so many results that you will have a hard time finding your answer, but something more specific like Hydra wil give much better results.