API ガイド > シェイプ >

# シェイプを作成する

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

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

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

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

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

シェイプを段階的に作成することもよい考えです。まず、MPxSurfaceShape と MPxSurfaceShapeUI から派生させます。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 );
    }