Maya でのシェイプ

Maya でのシェイプは選択可能な DAG オブジェクトで、3D ビュー内に表示されます。メッシュ、NURBS サーフェス、NURBS カーブ、ロケータは、シェイプの例です。シェイプは、別のノードに接続可能なアトリビュートを持つディペンデンシー グラフ(DG)ノードでもあります。

シェイプは、ジオメトリのコンテナと考えることができます。このコンテナの役割は、ジオメトリをインタラクティブに表示して操作することです。

コントロール頂点(CV)の位置により形成され操作されるシェイプは、コントロール ポイント シェイプと呼ばれます。コントロール ポイントはシェイプのアトリビュートで、通常はポイントの配列です。コントロール ポイントはインタラクティブに操作可能で、コンポーネントと関連付けると、選択して操作できるようになります。

コンポーネントは 2 つの情報を含むオブジェクト(MObject)です。2 つの情報とは、コンポーネントのタイプと、インデックスの値か範囲です。例として、メッシュ頂点コンポーネントを挙げることができます。このコンポーネントはメッシュ シェイプの頂点アトリビュート(「pnts」)を表し、vtx[0] はメッシュの頂点0、vtx[0:7] はメッシュの最初の 8 個の頂点を表します。

NURBS サーフェスやメッシュなど、サーフェスを定義するシェイプでは、マテリアルのハードウェア表示とハードウェア ライティングがインタラクティブ ビューでサポートされており、ハードウェア レンダー バッファもサポートされています。

ユーザ定義シェイプ

ユーザ定義シェイプと、シェイプにコネクトするすべてのクラスを使用する目的は、DAG ノード(および DG ノード)として、または DG を介して渡されるデータとして定義する任意のジオメトリ タイプを「ラップ」することです。

クラス MPxSurfaceShape では、Maya API を使用してシェイプを作成できます。シェイプ(Shape)ノードの作成は、ディペンデンシー ノードの作成に似ています。実際、ユーザ定義シェイプ(MPxSurfaceShape)のベース クラスは MPxNode から派生しています。

MPxSurfaceShapeMPxNode の大きな違いは、コンポーネント処理関数、描画関数、選択関数が追加されていることです。オーバーライド可能な関数は 2 つのクラスに分割されています。DG ノード機能は MPxSurfaceShape にあり、描画関数と選択関数は MPxSurfaceShapeUI にあります。

ユーザ定義シェイプは、ポリゴン メッシュやスプライン ベース オブジェクトなど、コントロール ポイント ベースのシェイプに最適です。その他の種類のシェイプを作成できないということではありません。MPxSurfaceShape がコントロール ポイント ベースのシェイプの処理にすでにセットアップされているということです。

シェイプは、MFnPlugin::registersShape 関数を使用して登録します。この関数は registerNode に似ていますが、MPxSurfaceShapeUI クラスのクリエータ関数を指定する引数が追加されています。シェイプの登録解除は、MPxNode クラスの登録解除と同じように、MFnPlugin::deregisterNode を使用して実行します。