シェイプを作成する
 
 
 

シェイプ作成のゴールは、定義したジオメトリ クラスを取り、DAG オブジェクトの形式でそのジオメトリを Maya に統合することです。

ジオメトリ固有の情報は、ジオメトリ クラス内に維持してください。こうすると、ディペンデンシー グラフ データとしてジオメトリを表現しやすくなります。ジオメトリ固有の情報をジオメトリ クラス内に維持すると、ジオメトリ固有の描画情報を Maya の描画要求待ち行列に描画データとして渡す場合に描画を処理しやすくなります。

シェイプの作成を始める場所

ユーザ定義シェイプは、描画機能、選択機能、コンポーネント機能が加わるため、DG ノードより複雑です。コードを書き始める前に、まずシェイプ ノードの設計から始めるのがよいでしょう。シェイプ ノードの設計には、入出力アトリビュートの定義、およびアトリビュート間のリレーションシップ(関係、影響)の決定が含まれます。

最も単純なシェイプは、コンポーネントやジオメトリ データを含まないシェイプです。たとえば、入力半径、X ディビジョン、Y ディビジョンを取り、球体のジオメトリを計算して openGL で描画する球体シェイプです。

シェイプを段階的に作成することもよい考えです。まず、MPxSurfaceShapeMPxSurfaceShapeUI から派生させます。MPxSurfaceShape クラスの作成は、MPxNode クラスの作成と同じです。その他の仮想関数は、必要に応じてオーバーライドすることができます。

シェイプの登録と登録解除

Maya へのシェイプの登録は、DG ノードの登録に似ています。唯一の違いは、シェイプ ノードと同時に登録する必要がある、独立した UI クラスがあることです。シェイプの登録には、MFnPlugin::resgisterShape 関数を使用します。シェイプの登録解除は、ノードの登録解除とまったく同じです。以下はシェイプ登録の例です。

MStatus initializePlugin( MObject obj )
{
 MFnPlugin plugin( obj,"Autodesk","2.0", "Any");
 return plugin.registerShape( "yourShape", yourShape::id,
 &yourShape::creator,
 &yourShape::initialize,
 &yourShapeUI::creator );
}
MStatus uninitializePlugin( MObject obj )
{
 return plugin.deregisterNode( yourShape::id );
}