ビューポートでレンダー パスをコントロールするスクリプト フラグメントおよびフラグメント グラフを記述する

はじめに

Maya のビューポートは、次の 2 つの異なるタイプの一連のフラグメント(XML 形式でシリアル化されたスクリプト)を利用します。

Maya をインストールすると、一連のスクリプト フラグメントおよびフラグメント グラフの XML ファイルがインストール フォルダの bin/ScriptFragment サブフォルダに格納されます。

Maya 2020 以前のリリースでは、default.xml は、ビューティ パス(シーンとポスト エフェクト パスを含むが、シャドウ マップとさまざまな UI パスおよび HUD パスは除く)の既定の実装を定義するトップレベルのフラグメント グラフでした。このグラフによって、Maya_3d_Renderer.xml などのさまざまなフラグメントとフラグメント グラフが接続され、そこから、HoldOutPasses.xmlMaya_PostEffects.xml などのフラグメント グラフ、さらに mayaUIDrawPass.xmlMaya_SSAO.xml などのフラグメントとフラグメント グラフが順に接続されました(以下同様)。これらのグラフで参照されるフラグメントの一部は、ハードコードされた C++ プロシージャ フラグメントとして実装されます。

Maya の新しいバージョンでも、default.xml およびそのディペンデンシーは Maya に付属していますが、既定のビューティ パスの実装は再設計されていて、単一のスクリプト フラグメント グラフで示されることはなくなりました。

MRenderOverride プラグインでは、ビューティ パスは MSceneRender 操作で表されます。MSceneRender を構築する場合は、次のように、fragmentName パラメータを使用して、既定の Maya ビューティパスの実装をオーバーライドするカスタムのスクリプト フラグメントまたはフラグメント グラフの名前を指定することができます。

class FragmentRenderOverride(omr.MRenderOverride):

    def __init__(self, name):
        self.operatioIndex = 0
        self.operations =  [omr.MSceneRender("myRendererSameAsMaya", fragmentName=“customBeauty”),
                           omr.MHUDRender(),
                           omr.MPresentTarget("present")]

カスタム フラグメントを作成するときに、bin/ScriptFragment フォルダに含まれている XML ファイルをリファレンスとして使用できますが、Maya の破損を防ぐために、このフォルダ内のファイルを直接変更することはお勧めしません。

API クラスおよびインタフェース

フラグメント レンダラを作成するための API エントリ ポイントは次のとおりです。これらのインタフェースの使用例については、Developer Kit の viewRenderOverrideFromFragments プラグインおよび「フラグメント レンダラ サンプル プラグインを作成する」を参照してください。

フラグメントおよびフラグメント グラフ XML の定義

フラグメントの各部の説明

例については maya_DepthPrePass.xml を参照してください。

すべてのフラグメントは複合要素 fragment に含まれています。

<fragment  uiName="maya_DepthPrePass" name="maya_DepthPrePass" type="sceneEffect" class="ScriptFragment" version="1.0" feature_level="30" >

フラグメントの定義には次の要素も含まれています。

フラグメント グラフの各部の定義

上記のように、さまざまなフラグメントおよびフラグメント グラフを相互に接続して単一のフラグメント グラフを形成できます。

例については Maya_PostEffects.xml を参照してください。

すべてのフラグメントは次のように複合要素 fragment_graph に含まれています。

<fragment_graph  name="Maya_PostEffects" ref="Maya_PostEffects" class="FragmentGraph" version="1.0" feature_level="0" >

fragment_graph の定義には次の要素も含まれます。