シェーディング ノード プラグインを分析する

Maya のシェーディング ノード プラグインには、ヘッダ ファイル <maya/MPxNode.h> が含まれており、クラス MPxNode から派生します。このコマンドにはメソッドが豊富にありますが、実用的なシェーディング ノードの作成で実際に必要となるのは少数です。

コンストラクタ

新しいクラス自体の要素を初期化します。

デストラクタ

クラスで作成されたものをすべて削除します。

クリエータ

このスタティックなメソッドは、新しいクラス(MPxNode から派生します)のインスタンスを実際に作成する役割を担います。新しいオブジェクトを登録する場合、実際には creator() メソッドを登録することにより、Maya がこのメソッドを呼び出して、オブジェクトの新しいインスタンスを割り当てられるようにします。事実上すべてのケースで以下のようになります。

void* NodeClassName::creator()
{
     return new NodeClassName;
}

initializePlugin/uninitializePlugin

前者のメソッドは、プラグインがロードされるときにコールされます。MFnPlugin クラスのインスタンスを作成し(ルーチンに渡された MObject で初期化)、そのクラス内で register メソッドを呼び出して機能を Maya に通知することが目的です。

重要: initializePlugin()uninitializePlugin() の両方がすべてのプラグインに存在する必要があります。両方またはどちらか一方がなければ、プラグインはロードされません。

初期化

新しいノードのすべてのアトリビュートは、派生元クラスのスタティック MObject メンバとして宣言されます。initialize メソッドは MFnAttribute を呼び出して、アトリビュートの型情報を実際に提供します。デフォルト値や範囲の設定も行います。creator 関数と同様に、これはクラスのスタティック メソッドで、Maya によって 1 回だけコールされます。

ID 文字列

ノードの必須アトリビュートのうちの 1 つは、MTypeID 型にする必要があります。これは Maya の内部 IFF フラグにマッピングし、一意である必要があります。このアトリビュートの値は、MTypeID コンストラクタ内で設定されます。

ノードをローカルでテストする場合は、0x00000000 から 0x0007ffff までの識別子を使用できますが、永続的な目的でノードを使用する場合は、世界で固有な識別子を http://mayaid.autodesk.io/ から取得してください。ユーザごとに独自で管理できる、固有の範囲が割り当てられます。

compute メソッド

これは、内部ディペンデンシー ノードの compute メソッドに似ています。データ ハンドルをデータ ブロックに渡して、要求した出力アトリビュートの新しい値を計算するために、データ ブロックから入力アトリビュートを抽出する役割があります。