MPxNode クラスと派生クラス
 
 
 

MPxNode クラスは、機能が特定されたほかの MPx クラスを定義する元となる親クラスです。これらの派生クラスは、ユーザのクラスを Maya に統合するために必要な個々の機能に対応した機能を持っています。たとえば MPxLocator クラスは、選択されているかどうかによって自分自身の描画色を変える必要があることを認識しています。サブクラスがシーン内で使用された場合、それぞれの親クラスは Maya が認識し、自動的にコネクトすることが可能なアトリビュートのセットを定義しています。サブクラスで定義する compute() メソッドでは、このアトリビュートを必要に応じて使用できます。定義済みアトリビュートのリストと説明については、さまざまな MPx 親クラスのマニュアル ページを参照してください。

MPxManipContainer クラス(第 7 章「マニピュレータ」を参照)と MPxSurfaceShape クラス(第 8 章「シェイプ」を参照)は複雑なクラスで、より詳しい説明が必要です。

MPxLocatorNode

この親クラスは DAG ノードで、これを使用すると、Maya シーン内で 3D のグラフィカル エレメントを描画できます。エレメントはシーン内での位置に関連しており、標準の Maya マニピュレータを使用して操作できます。

このクラスは、空間内での位置を持つが明確な形のない構成要素の定義に使用できます。新しい種類のライト ソース、その他の構成要素の動作の方向ポイント、まだ作成されていないシェイプの作成場所などです。ロケータで描画されるグラフィカル エレメントはレンダーされません。MPxLocator クラス自体はデフォルト グラフィックを描画しますが、より特化した描画を実行するためのサブクラス内で実装可能な draw() メソッドが提供されています。

MPxDeformerNode

このクラスでは、入力ジオメトリ シェイプを取ってデフォームできます。Maya では、デフォメーションの実行に特殊なプロトコルが必要で、ユーザによる実装が可能な特殊メソッドをいくつか提供しています。

最初はdeform() メソッドです。実際のデフォメーションは、デフォーマ ノードの compute() メソッド内で実行されず、deform() メソッドをコールする内部メカニズムを通して実行されます。

accessoryAttribute() と accessoryNodeSetup() の 2 つのメソッドも、親クラスで定義します。アクセサリは、選択および操作することでデフォメーションに作用するジオメトリ シェイプです。アクセサリはワイヤフレーム ラインのセット、NURBS カーブのセット、その他希望するどんなジオメトリでも構いません。これでデフォーマの関数を直感的に伝達し、有用なデフォメーションに影響を与えます。

デフォーマのアクセサリは必須ではありません。デフォーマは、MPxDeformerNode クラスの定義済み入力アトリビュート、およびサブクラス用に定義したその他のアトリビュートに基づいて単独で動作可能です。この場合、2 つのアクセサリ メソッドは実装しないでください。

MPxIkSolverNode

IK(Inverse Kinematics)には、ゴールとコンストレインのセットに基づいてリジッド ボディのスケルトンをアニメートするアルゴリズムのクラスが記述されています。IK ソルバは、ゴールとコンストレインを満たすスケルトンの回転とオフセットのセットを探す、数学的なプロシージャです。

ソルバは、特定ジョイントの動きを最小限に抑えること、または特定ジョイントの角度を特定の範囲で維持することなど、さまざまな種類のスケルトンや特定方法での動きに合わせて調整できます。Maya では、さまざまな状況で使用できるソルバのセットが定義されています。

MPxIkSolverNode では、独自のソルバを作成し、Maya で構築したスケルトンで使用できます。MPxDeformerNode クラスと同じように、ノードの実際の計算は、compute() メソッドではなく doSolve() メソッドで実行されます。新しいソルバのサブクラス化では、その他のメソッドも定義する必要があります。このメソッドについては、MPxIkSolverNode のマニュアル ページを参照してください。

MPxFieldNode

このクラスでは、シーン内のその他のジオメトリに影響する、独自のダイナミック フィールドを定義できます。このノードは、通常のディペンデンシー グラフの評価に関するルールに従い、ノードの作業は compute() メソッド内で実行されます。

MPxEmitterNode

エミッタは、Maya シーンでパーティクルを放射するノードです。同じ方向に放射する、またはゆっくり放射する、あるいはランダムに球体のサーフェスから放射するというように、エミッタはさまざまな方法でパーティクルを放射します。一度パーティクルを放射すると、エミッタ ノードでパーティクルを制御することはできなくなります。MPxEmitterNode クラスでは、パーティクルの放射方法を定義できます。このノードは、通常のディペンデンシー グラフの評価に関するルールに従い、ノードの作業は compute() メソッド内で実行されます。

MPxSpringNode

スプリングは、質量のある 2 つのエンド ポイント間で相互に作用する力です。Maya では、スプリングの従来の数学的なモデルに従った、デフォルトのスプリングの力が定義されています。MPxSpringNode からサブクラス化すると、シーン内の 2 点間に力を適用する動作を定義できます。定義済みアトリビュートでは、すべての標準スプリング定数、およびエンド ポイントの位置と質量が提供します。ノードでの作業は、compute() メソッドではなく applySpringLaw() メソッドを使用して行います。

MPxObjectSet

このクラスは、選択可能/操作可能なコンポーネントを持つことができます。このクラスを使用して、Maya に含まれる objectSet ノードと似た動作をする新しい種類のセットを Maya 内に実装することができます。

MPxHwShaderNode

MPxHwShaderNode は、ユーザ定義のハードウェア シェーダの作成を可能にします。ハードウェア シェーダとは、任意の数の入力ジオメトリを受け取り、それらを変形して、出力ジオメトリ アトリビュートに出力するノードです。

MPxTransform

MPxTransform は、ユーザ定義のトランスフォーム ノードの作成を可能にします。ユーザ定義のトランスフォーム ノードは、新しい変換タイプを導入したり、変換順序を変更したりすることができます。また、標準的な Maya トランスフォーム ノードの拡張としてデザインされ、通常のトランスフォーム アトリビュートをすべて含んでいます。リミットの強制とアトリビュートのロックのような標準的な動作はこのクラスによって管理されますが、派生クラスでオーバーライドすることができます。これはノードではありませんが、MPxTransformationMatrix クラスは MPxTransform と連動して Maya にカスタム変換マトリクスを追加するために使用されます。

MPxFluidEmitterNode

MPxFluidEmitterNode を使用すると、エミッタを表すディペンデンシー グラフ ノードの作成と操作が可能になります。これは、最上位レベルのエミッタ ノードの関数セットです。これを使うと、すべての種類のエミッタに共通のアトリビュートを操作できます。

MPxImagePlane

MPxImagePlane を使用すると、新しいタイプのイメージ プレーン ノードの作成が可能になります。このノードへのイメージ プレーンまたは動作の変更における非標準イメージ データは、このクラスを使用して修正することができます。

MPxParticleAttributeMappingNode

MPxParticleAttributeMapperNode は、すべてのユーザ定義済みの、パーティクル単位のアトリビュート マップ ノードの親クラスです。このクラスを使用すると、テクスチャ ノードからパーティクルのカラーリングのためにパーティクルが一般的に使用する、新しい「arrayMapper」ノードの動作をプラグインから定義できます。

MPxConstraint

MPxConstraint は、すべてのユーザ定義コンストレイン ノードのペアレント クラスです。このクラスは MPxConstraintCommand と連携して、Maya のデフォルト コンストレイン機能を提供します。