[Omniverse] OmniGraphで独自ノードを作成

今回はOmniGraphで独自ノードを作成していきます。
独自ノードはExtension(Python)で用意することができます。
OmniGraphは調べ出すとかなり範囲が広いため、GitHubに情報をまとめることにしました。

以下がトップページになります。
https://github.com/ft-lab/OmniGraph

Action GraphとOmniGraphの違いは ?

以前、Action Graphについてブログに書いていましたがこれとOmniGraphの違いについて書いておきます。

https://docs.omniverse.nvidia.com/kit/docs/omni.graph.docs/latest/Glossary.html#term-Action-Graph
より、
"An Action Graph is an OmniGraph that triggers actions in response to a particular event."

訳すると"Action Graphは、特定のイベントに反応してアクションを起こすOmniGraph"
とのことです。
OmniGraphはOmniGraphはよりベース寄りのくくりとなりそうです。

ノードを開発する利点は ?

なぜノードを開発するのかというと、デフォルトで用意されている汎用的なノードのほか、
行いたい工程により機能をノードとして別途で追加できるようにしたいから、というのがあります。
これらのノードは"OmniGraph Node(OGN)"と呼ばれます。

機能の拡張ならExtensionを作ればいいのではと思うかもしれないですが、もっと小さな単位で機能を用意したいです。
例えば外部のハードウェアにシリアル通信する、という機能だけをノード(OGN)で開発し、
入力についてはOmniverse上のGraph上でつないで制御する、といったこともノードを用意した場合はGUI上でやりやすくなります。

float値の足し算を行うノードを作成

ここでは、チュートリアル的に足し算を行うノードを作る流れを書いています。
https://github.com/ft-lab/OmniGraph/blob/main/doc/CustomNode_python.md

"Node Description Editor" ( https://docs.omniverse.nvidia.com/prod_extensions/prod_extensions/ext_omnigraph/tutorials/deforming_text_create_node.html )
を使うことでひな型のExtensionを作ることができます。
これを拡張していくのが手っ取り早いかと思います。

慣れてくればOmniGraph用のExtensionを作成していきます。
https://github.com/ft-lab/OmniGraph/blob/main/doc/SimpleNode.md

詳しくはGitHub上をご参照くださいませ。
次回はのノードのInput/Outputの値がfloat固定ではなく、任意の型(int, float, double, Vector3など)がきた場合に対応できるようにします。