DG ノードまたは DAG オブジェクトのアタッチメント モデルは、登録インタフェース MDrawRegistry によってサポートされています。レンダリング ループ オーバーライドのアタッチメント モデルは、「3.6 レンダリング ループ オーバーライド」のセクションで詳細に説明されています。
描画、シェーダ、シェーディング ノード、ジオメトリ、およびサブシーン オーバーライドでは、ノード分類文字列の使用によって関連付けが黙示的に提供されます。オーバーライド分類と Maya ノード/オブジェクト分類の一致により、この黙示的なリンクが形成されます。一致は、「サブ分類」の使用により、広範なものから特定のものへ階層的に実行されます。
“drawdb/<object classification>/[<sub-classification>]/<override classification>”
<sub-classification>: 分類の便利な追加レベルを提供します。オーバーライドのグループ化と管理に必要な場合があります。特に、サーフェス シェーダとして使用されるシェーディング ノード(Maya シェーディング エンジンに接続されている)は、「drawdb/shader/surface/」で始まる分類を使用する必要があります。DAG オーバーライドでは、sub-classification がオプションです。
一般的に、sub-classification が多く指定されると、特定のエントリ ポイントに関連付けられたオブジェクト/ノードのタイプがより詳細になります。2 つの例を次に示します。
最初の分類文字列が使用された場合、より一般的な 2 番目の文字列の場合よりも少ないオブジェクト/ノードが一致します。
既存または新しいプラグイン ノード タイプの場合、プラグインの作成者は、オーバーライドおよびノード自体に対して適切な分類を使用し、正しい分類文字列一致(関連付け)が実行されるようにする必要があります。
図 35: 各オーバーライド タイプについて、分類は、分類で指定されたオブジェクトまたはノードを一致させます。
図 36: 分類の詳細度に応じて、異なる一致の結果を示す例です。“drawdb/geometry/parametricSurface/B-spline” DAG オブジェクト分類は、より一般的な “drawdb/geometry/parametricSurface” 文字列ではなく、まったく同じ分類文字列を使用してオーバーライドにより厳密に一致させます。最も近い一致の分類が使用されます。
getClassification コマンド マニュアルには、ビューポート 2.0 によって認識される分類の一覧が含まれています。
たとえば、rockingTransform プラグインの場合、コードは次のようになります。
// Classify the node as a transform. This causes Viewport // 2.0 to treat the node the same way it treats a regular // transform node. const MString classification = "drawdb/geometry/transform"; status = plugin.registerTransform("rockingTransform", rockingTransformNode::id, &rockingTransformNode::creator, &rockingTransformNode::initialize, &rockingTransformMatrix::creator, rockingTransformMatrix::id, &classification);
これが実行されないと、他の drawdb 分類が指定されていない場合に、registerTransform() によって自動的に drawdb/geometry/transform 分類が追加されます。
登録インタフェースを介して、新しい表示フィルタ タイプをプラグイン オブジェクトに追加できます。使用した分類文字列が描画オーバーライドの登録に使用した分類文字列に一致する場合は、可視性チェックが実行されるときにオーバーライドがフィルタ アウトされる可能性があります。フィルタの UI 名は、3D ビューポートとバッチ レンダリングの表示フィルタ インタフェースのオプションとして表示されます。
MFnPlugin::registerDisplayFilter() は、新しい表示フィルタ タイプを登録するインタフェースです。gpuCache SDK プラグインには、その使用法を例示するコードが含まれます。