ディペンデンシー グラフ プラグイン

このセクションでは、ディペンデンシー グラフ(DG)について紹介します。さらに、Maya API を拡張して統合するプラグインを記述するために、Maya API を使用する方法についても説明します。

ディペンデンシー グラフは Maya の中核です。適用した操作と順番が記録された、シーンのコンストラクション ヒストリが保持されています。グラフは一連の相互接続されたノードで構成されており、各ノードは単一の操作または単一の計算セットをカプセル化しています。各ノードは、明確に定義された特定の入力データ セットを受け取り、そのデータに基づいて計算を実行し、1 つまたは複数の出力値を生成します。ノード、接続、およびディペンデンシー グラフの仕組みに関する背景情報については、「ディペンデンシー グラフについて」を参照してください。

Maya API を使用して、受信データに基づいてカスタム操作を実行する、独自のカスタム ディペンデンシー グラフ ノードを作成できます。記述する各種ノードは、基本的な MPxNode クラスから派生するクラスによって表され、ディペンデンシーに接続するために必要なメイン インタフェースを提供します。また、Maya API は、MPxNode から派生する他の複数のベース クラスも提供しますが、このクラスは異なる用途に対する動作に特化しています。たとえば、カスタム デフォーマを実装するために、MPxNode の代わりに MPxDeformerNode からカスタム ノード クラスを派生することができます。Maya は、カスタム ノードが組み込みタイプのデフォーマを処理するときと同じ方法で、カスタム ノードを処理します。これらのベース クラスの説明については、「ベース ディペンデンシー ノード クラス」を参照してください。

すべてのノード クラスは、いくつかのアトリビュートを設定する必要があります。アトリビュートでは、ノードが受け取る入力データのタイプおよびノードが生成する出力データのタイプを定義します。詳細については、「アトリビュートとプラグ」および「複雑なダイナミック アトリビュート」を参照してください。

各ディペンデンシー グラフ ノードの主な処理は、通常、その仮想 compute() メソッド内で実行され、使用するカスタム クラスに実装する必要があります。実装を記述する場合の注意点については、「ディペンデンシー グラフ ノードに compute()メソッドを実装する」を参照してください。Maya は、専用データ ブロック内の各ノードに関連するデータをすべて保持し、ノードの出力値を再計算する必要があるたびにこのメソッドに渡します。ハンドルを使用して、このブロックから入力データを読み込み、出力データをブロックに書き込みます。詳細については、「データ ブロックを使用する」を参照してください。

新しいタイプのディペンデンシー グラフ ノードを定義するプラグインの操作例については、「ディペンデンシー ノードの基本例」および「より複雑なディペンデンシー グラフの例」を参照してください。

  • ディペンデンシー ノードの基本例

    次の例では、基本的な MPxNode 親クラスから派生する単純なカスタム ディペンデンシー グラフ ノードについて説明します。単一の浮動小数値を入力値として取り、この数値の正弦値を計算し、結果を出力します。

  • ディペンデンシー グラフについて

    このページでは、ディペンデンシー グラフの仕組みを簡単に説明します。

  • ベース ディペンデンシー ノード クラス

    カスタム ディペンデンシー グラフ ノードを作成するには、このページに記載されているベース ノード クラスから派生する新しいクラスを作成する必要があります。作成するノードの目的に応じて、これらのオプションのいずれかを開始点として選択することができます。

  • アトリビュートとプラグ

    このページでは、単純なスタティック アトリビュートおよびプラグの処理方法について説明します。

  • 複雑なダイナミック アトリビュート

    アトリビュートとプラグで説明されている、単純なスタティック アトリビュートに加えて、カスタム ノード クラスに複数のデータ値で構成される複雑なアトリビュートを使用することができます。これらは、同じ種類のデータのインスタンスを複数含む配列、または複数の異なる種類のデータで構成される複合になる場合があります。さらに、ダイナミック アトリビュートを使用すると、ノードからアトリビュートをオンザフライで追加および削除できます。

  • ディペンデンシー グラフ ノードに compute()メソッドを実装する

    このトピックでは、カスタム ディペンデンシー ノード クラスに対して MPxNode::compute() メソッドを実装する場合に注意すべきいくつかの原理について紹介します。

  • データ ブロックを使用する

    Maya がディペンデンシー グラフ ノードの compute() メソッドを呼び出す場合、入力と出力のすべてのアトリビュートの値を保存する MDataBlock オブジェクトを渡します。このページでは、MPxNode::compute() 実装による、このデータ ブロックでの属性値の読み取りと書き込みの方法について説明します。

  • より複雑なディペンデンシー グラフの例

    このページでは、ディペンデンシー グラフ ノード プラグインの少し複雑な例を紹介しています。