カスタム ディペンデンシー グラフ ノードを作成するには、このページに記載されているベース ノード クラスから派生する新しいクラスを作成する必要があります。作成するノードの目的に応じて、これらのオプションのいずれかを開始点として選択することができます。
MPxNode は、他のすべてのディペンデンシー グラフ ノードのベース クラスです。独自のノード クラスに実装する必要のある MPxNode::compute() メソッドなど、すべてのノードに共通する汎用インタフェースを定義します。
Maya API には、MPxNode から派生するけれども、特定の機能領域(下記参照)での使用に特化した他のいくつかのベース クラスがあります。それぞれの親クラスでは、一連のアトリビュートと、多くの場合は追加されたクラス メソッドを事前定義します。シーン内でカスタム ノード クラスのインスタンスを使用すると、Maya は、インスタンスの派生元となるベース クラスを認識します。同じ種類の他のビルトイン ノードを処理する場合と同じ方法で、カスタム ノードを自動的に処理し、必要なアトリビュートおよびメソッドに自動的に接続します。たとえば、MPxLocator クラスから派生するあらゆるロケータ ノードには、ビューポートで選択されるかどうかに応じて、異なるカラーで自分自身を描画するように動作が組み込まれています。サブクラスに実装する compute() メソッドは、必要に応じた事前定義済みアトリビュートと、さらにノード クラスの特別な目的に応じて追加選択するあらゆるカスタム アトリビュートを使用可能です。
各種サブクラスには、MPxNode から継承された compute() メソッドの代わりに、またはそれに加えて、実装する必要のある仮想メソッドの異なるセットがあることに注意してください。詳細については、クラスの説明、例、およびその他のドキュメントを参照してください。
MPxLocatorNode 親クラスは DAG ノードで、これを使用すると、Maya シーン内で 3D のグラフィカル要素を描画できます。要素はシーン内での位置に関連しており、標準の Maya マニピュレータを使用して操作できます。
このクラスは、空間内での位置を持つが明確な形のない構成要素の定義に使用できます。新しい種類のライト ソース、その他の構成要素の動作の方向ポイント、まだ作成されていないシェイプの作成場所などです。ロケータで描画されるグラフィカル要素はレンダーされません。MPxLocator クラス自体は既定グラフィックを描画しますが、より特化した描画を実行するためのサブクラス内で実装可能な draw() メソッドが提供されています。
MPxGeometryFilter クラスでは、入力ジオメトリ シェイプを取って変形できます。Maya では、デフォメーションの実行に特殊なプロトコルが必要で、ユーザによる実装が可能な特殊メソッドをいくつか提供しています。
最初は deform() メソッドです。実際のデフォメーションは、デフォーマ ノードの compute() メソッド内で実行されず、deform() メソッドをコールする内部メカニズムを通して実行されます。
accessoryAttribute() と accessoryNodeSetup() の 2 つのメソッドも、親クラスで定義します。アクセサリは、選択および操作することでデフォメーションに作用するジオメトリ シェイプです。アクセサリはワイヤフレーム ラインのセット、NURBS カーブのセット、その他希望するどんなジオメトリでも構いません。これでデフォーマの関数を直感的に伝達し、有用なデフォメーションに影響を与えます。
デフォーマのアクセサリは必須ではありません。デフォーマは、MPxGeometryFilter クラスの定義済み入力アトリビュートと、サブクラス用に定義したその他のアトリビュートに基づいて単独で動作可能です。この場合、2 つのアクセサリ メソッドは実装しないでください。
「デフォーマ ノードを作成する」も参照してください。
MPxBlendShape クラスは、入力ターゲットおよびウェイトを処理できるように MPxGeometryFilter を特殊化します。Maya は、blendShape ビルトイン ノードなどのクラスから派生するカスタム ノードを扱いします。
MPxSkinCluster クラスは、頂点単位のスキン ウェイトを処理できるように MPxGeometryFilter を特殊化します。Maya は、skinCluster ビルトイン ノードなどのクラスから派生するカスタム ノードを扱いします。
IK (Inverse Kinematics)には、ゴールとコンストレイントのセットに基づいてリジッド ボディのスケルトンをアニメートするアルゴリズムのクラスが記述されています。IK ソルバは、ゴールとコンストレイントを満たすスケルトンの回転とオフセットのセットを探す、数学的なプロシージャです。
ソルバは、特定ジョイントの動きを最小限に抑えること、または特定ジョイントの角度を特定の範囲で維持することなど、さまざまな種類のスケルトンや特定方法での動きに合わせて調整できます。Maya では、さまざまな状況で使用できるソルバのセットが定義されています。
MPxIkSolverNode では、独自のソルバを作成し、Maya で構築したスケルトンで使用できます。MPxDeformerNode クラスと同じように、ノードの実際の計算は、compute() メソッドではなく doSolve() メソッドで実行されます。新しいソルバのサブクラス化では、その他のメソッドも定義する必要があります。このメソッドについては、MPxIkSolverNode のリファレンスを参照してください。
MPxFieldNode クラスでは、シーン内のその他のジオメトリに影響する、独自のダイナミック フィールドを定義できます。このノードは、通常のディペンデンシー グラフの評価に関するルールに従い、ノードの作業は compute() メソッド内で実行されます。
エミッタは、Maya シーンでパーティクルを放射するノードです。同じ方向に放射する、またはゆっくり放射する、あるいはランダムに球のサーフェスから放射するというように、エミッタはさまざまな方法でパーティクルを放射します。一度パーティクルを放射すると、エミッタ ノードでパーティクルを制御することはできなくなります。MPxEmitterNode クラスでは、パーティクルの放射方法を定義できます。このノードは、通常のディペンデンシー グラフの評価に関するルールに従い、ノードの作業は compute() メソッド内で実行されます。
MPxFluidEmitterNode は MPxEmitterNode から派生しており、これを使用すると、流体エミッタを表すディペンデンシー グラフ ノードの作成と操作が可能になります。これは、最上位レベルのエミッタ ノードの関数セットです。これを使うと、すべての種類の流体エミッタに共通のアトリビュートを操作できます。
スプリングは、質量のある 2 つのエンド ポイント間で相互に作用する力です。Maya では、スプリングの従来の数学的なモデルに従った、既定のスプリングの力が定義されています。MPxSpringNode からサブクラス化すると、シーン内の 2 点間に力を適用する動作を定義できます。定義済みアトリビュートが、すべての標準スプリング定数と、エンド ポイントの位置と質量が提供します。ノードでの作業は、compute() メソッドではなく applySpringLaw() メソッドを使用して行います。
MPxObjectSet クラスは、選択可能/操作可能なコンポーネントを持つことができます。このクラスを使用して、Maya に含まれる objectSet ノードと似た動作をする新しい種類のセットを Maya 内に実装することができます。
MPxHwShaderNode は、ユーザ定義のハードウェア シェーダの作成を可能にします。ハードウェア シェーダとは、任意の数の入力ジオメトリを受け取り、それらを変形して、出力ジオメトリ アトリビュートに出力するノードです。「 ハードウェア シェーディング ノードを作成する」も参照してください。
MPxTransform は、ユーザ定義のトランスフォーム ノードの作成を可能にします。ユーザ定義のトランスフォーム ノードは、新しい変換タイプを導入したり、変換順序を変更したりすることができます。また、標準的な Maya トランスフォーム ノードの拡張としてデザインされ、通常のトランスフォーム アトリビュートをすべて含んでいます。リミットの強制とアトリビュートのロックのような標準的な動作はこのクラスによって管理されますが、派生クラスでオーバーライドすることができます。これはノードではありませんが、MPxTransformationMatrix クラスは MPxTransform と連動して Maya にカスタム変換マトリクスを追加するために使用されます。
「カスタム トランスフォーム ノードを作成する」も参照してください。
MPxImagePlane を使用すると、新しいタイプのイメージ プレーン ノードの作成が可能になります。このノードへのイメージ プレーンまたは動作の変更における非標準イメージ データは、このクラスを使用して修正することができます。
MPxParticleAttributeMapperNode は、すべてのユーザ定義済みの、パーティクル単位のアトリビュート マップ ノードの親クラスです。このクラスを使用すると、テクスチャ ノードからパーティクルのカラーリングのためにパーティクルが一般的に使用する、新しい「arrayMapper」ノードの動作をプラグインから定義できます。
MPxConstraint は、すべてのユーザ定義コンストレイント ノードの親クラスです。このクラスは MPxConstraintCommand と連携して、Maya の既定コンストレイント機能を提供します。
MPxManipulatorNode はマニピュレータのベース クラスで、Maya ビューポート内で自身の視覚的表現を作成し、ビューポート内で直接操作してユーザからの入力を受け入れるノード タイプです。Maya にはいくつかの組み込みタイプがありますが、新しいタイプのマニピュレータを作成するには、MPxManipulatorNode から派生する新しいクラスを作成し、マニピュレータの描画方法およびマウス イベントに対する反応方法を決める仮想メソッドを記述します。
MPxManipContainer クラスはアグリゲータのベース インタフェースを提供します。このアグリゲータは、マニピュレータ ノードの 1 つまたは複数のベース タイプにより記録された入力を解釈し、他に接続されたノードのアトリビュートを変更することでその入力を適用します。ビューポート内のカスタム マニピュレータを使用してユーザ入力を確定する必要があるツールを作成する場合は、MPxManipContainer から派生する新しいクラスを作成することができます。
プラグインのカスタム マニピュレータの設定に関する詳細については、「マニピュレータ」を参照してください。
新しい種類のシェイプのプリミティブを作成する必要がある場合は、MPxSurfaceShape または MPxComponentShape から派生する新しいクラスを作成する必要があります。このクラスは、シーン階層またはディペンデンシー グラフ内でジオメトリのインスタンスを表すために使用されます。また、他の複数の関連クラスもあり、図面や選択などをコントロールするために設定する必要があります。カスタム形状の作成に関する詳細については、「シェイプ」を参照してください。
これはシーン アセンブリ ノード用のベース クラスです。Maya のシーン アセンブリ システムを拡張する必要がある場合は、MPxAssembly から新しいクラスを派生させることができます。詳細については、クラスの説明を参照してください。
Maya は、cameraSet ビルトイン ノードなどのクラスから派生するカスタム ノードを扱いします。Maya のステレオ表示用のカメラ レイヤの処理方法をカスタマイズする必要がある場合は、MPxCameraSet から新しいクラスを派生させることができます。
Maya では、motionPath ビルトイン ノードなどのクラスから派生するカスタム ノードを扱いします。新しい位置と方向値を計算して、パスに沿って移動するアニメーション オブジェクトに適用するために、Maya の入力アニメーション カーブの評価方法をカスタマイズする必要がある場合は、MPxMotionPathNode から新しいクラスを派生させることができます。詳細については、クラスの説明および motionPathNode/motionPathNode.cpp の例を参照してください。
これは、メッシュのカスタム フェース三角形分割アルゴリズムを定義するノードのベース クラスです。May が任意のメッシュ フェースから三角形を生成する方法を変更する必要がある場合は、MPxPolyTrg から新しいクラスを派生させることができます。詳細については、クラスの説明を参照してください。
MPxThreadedDeviceNode は、ノードの作成時に二次スレッドを開始し、デバイスからデータを取得するために二次スレッドを使用するノードのベース クラスです。これにより、Maya が再生モードでない場合でも、Maya プラグが作動するように、デバイスから入力できるようになります。詳細については、クラスの説明および抽象的な threadedDevice ビルトイン ノードを参照してください。
MPxClientDeviceNode は、TCP ソケットから受信するデータなど、クライアントとして機能するネットワーク デバイスと連携できるように MPxThreadedDeviceNode を特殊化します。詳細については、クラスの説明および抽象的な clientDevice ビルトイン ノードを参照してください。