MUIDrawManager クラスを使用すると、API ユーザは、ライン、円、円弧、アイコン、テキストなどの UI の基本要素を簡単に描画できます。
以前の API ではいわゆる直接モード描画が許可されていましたが、MUIDrawManager では保持モード描画に近い、別のタイプのインタラクションをエクスポーズします。ロジックは、「描画可能」リストに「描画可能項目」を入れるための待ち行列の項目で構成されています。
各描画可能項目では、描画項目のタイプに基づいて自動的に適切なシェーダ インスタンスとジオメトリが使用されます。たとえば、テキストには適切な「テキスト シェーダ」があります。この情報は、簡素化のためユーザーには表示されません。
マネージャが各描画可能項目をチェックし、レンダー パイプライン内でさまざまなタイミングで描画されるリストに描画可能項目を配置します。現在、リストへの配置に対するコントロールは、MUIDrawManager でエクスポーズされていません。MUIDrawManager のユーザは、描画可能項目が引き出されるリストによって異なる明確なプロパティがあること、および通常、MUIDrawManager が使用されるインタフェースがリストの配置を決定することを認識する必要があります。たとえば、マニピュレータ インタフェースを介して提供されるマネージャから待ち行列に入れられた描画可能項目は、描画可能項目が深度テストされず、深度にも書き込まれないことを意味します。
MUIDrawManager は、任意の時間または任意の場所でアクセスできるように設計されていません。したがって、インタフェースへのアクセスは、さまざまな API インタフェースの少数のメソッドに制限されています。すべてのデータおよびコンテキスト情報の管理は、マネージャによって準備され、必要に応じてコール側に渡されます。コール側に渡される可能性がある情報には、DAG パス、パス情報、ビュー情報などがあります。たとえば、ヘッドアップ ディスプレイ要素などのいくつかの描画可能項目は、ビューポートの四角形に対してスケーリングする必要がある場合があります。
MUIDrawManager はレンダラが所有し、明示的に構成することはできません。
現在 MUIDrawManager をサポートしているのは次のインタフェースです。
MPxDrawOverride および MPxGeometryOverride には、MUIDrawManager を使用するためにオーバーライドできる署名と同じメソッドがあります。
メソッド hasUIDrawables() をオーバーライドして true を返し、ユーザが addUIDrawables メソッドを使用して描画可能項目の追加を希望していることを示すことができます。false 値は、addUIDrawables() のコールをスキップすることを意味します。
メソッド addUIDrawables() は、MUIDrawManager へのアクセスを許可する主要なメソッドです。ここで待ち行列に入れられた描画可能項目は、パイプライン内の適切なレンダー項目リストにフィルタまたはバケット化できる追加のレンダー項目と考えることができます。
MPxManipContainer および MPxManipulatorNode マニピュレータの場合は、2 つのオーバーライド メソッドが MUIDrawManager とのインタラクションを提供します。
これらのメソッドは、現在のレンダラがビューポート 2.0 である場合にのみコールされます。
preDrawUI() は常に drawUI() の前にコールされます。preDrawUI() を使用して、ユーザは描画データの準備を実行することができます。次に、drawUI() は、MUIDrawManager に渡された値を使用して、描画データで描画します。待ち行列に入れられた描画可能項目は、シーンの DAG オブジェクトの描画の後、および HUD (ヘッズアップディスプレイ)の描画の前に、レンダーされます。
ツール コンテキストで、MPxContext は次のメソッドを使用できます。
これらのメソッドは、現在のレンダラがビューポート 2.0 である場合にのみコールされます。
これらは doPress、doRelease、doDrag、doHold および doEnterRegion のビューポート 2.0 バージョンとみなすことができます。プラグインは、これらの関数をオーバーライドして既定のビューポートに同じ動作を実装できます。
MUIDrawManager は、レンダーのオーバーライドにも使用することができます。MUserRenderOperation および MHUDRender の場合は、次の 2 つのメソッドを使用できます。
MSceneRender の場合は、次の 3 つの関数を使用できます。
これらの関数をオーバーライドして、ユーザ、HUD、プリシーン、ポストシーンのレンダー操作中に描画する描画可能項目を定義します。
前述したように、MUIDrawManager は、保持モードの描画を持つものとみなすことができます。そのため、指定された状態が設定された後に待ち行列に入れられた描画可能項目に適用される特定の状態を設定できます。
ラインの表示アトリビュートをコントロールするために、可能なライン状態コントロールに、幅とラインのスタイルの設定を含めます。
定義済みのライン スタイルのセットからライン スタイルを設定します。これらには、ソリッド、短い点線、短い破線、破線、点線が含まれます。さらにコントロールを強化するために、次のメソッドを使用できます。
プリミティブ ペイント スタイルをコントロールするには、setPaintStyle() を使用して、フラットシェード、点線、またはシェード描画の適用を許可します。シェード描画では、内部の固定マテリアルを使用します。
テキストをコントロールするには、サイズを保持モード状態(setFontSize())として設定します。
MUIDrawManager は、3D および 2D 両方の描画可能インタフェースをサポートし、2D インタフェースは通常メソッドの名前に「2d」を付けて示されます。たとえば、line() は 3D 描画可能インタフェース用で、line2d() は 2D 描画可能インタフェース用です。
2D 描画可能インタフェースの場合は、3D の位置またはベクトルの X および Y コンポーネントのみ使用され、描画の単位はスクリーン ピクセルです。