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

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 までの識別子を使用できますが、永続的な目的でノードを使用する場合は、世界で固有な識別子を Autodesk サポートから取得してください。独自に管理できる、固有の範囲が割り当てられます。

compute メソッド

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