Developer Kit サンプル

footPrintNode

footPrintNode プラグインは MPxLocatorNode の使用方法の一例です。これは MPxDrawOverride を使用する例とともに簡単なビューポート 2.0 実装を提供するように更新されました。 すべての描画モードがサポートされるとは限りませんが、MPxDrawOverride がどのように使用されるのかを知ることができます。

apiMeshShape

apiMeshShape プラグインは MPxSurfaceShape を使用してカスタム Maya シェイプを実装する方法の一例です。更新により、これには、MPxGeometryOverride を使用して頂点データ、インデックス データおよびカスタムのレンダリング アイテムをビューポート 2.0 に提供し、任意のシェーダ アサインメントによるカスタムの Maya シェイプを描画する方法が含まれています。

apiMeshShape プラグインには MPxSubSceneOverride インタフェースの実装例も含まれています。この実装は既定で無効になっていますが、プラグインを修正し、リビルドすることによってアクティブ化できます。

gpuCache

gpuCache プラグインでは、不透明なシーンのキャッシュ ノードを実装するために、MPxSurfaceShape インタフェースを使用しています。このノードでは、Maya の他の部分には認識されておらず、このノードをルートとする、複雑なサブシーンを効率的に保存および表示できます。このプラグインでは、環境変数 MAYA_GPUCACHE_VP2_OVERRIDE_API を使用して選択できる 2 つの異なるビューポート 2.0 実装を定義しています。実装は、各インタフェース(MPxDrawOverride および MPxSubSceneOverride)に 1 つです。この環境変数の詳細については、『Maya ユーザ ガイド』の「Rendering variables」を参照してください。

hwPhongShader

hwPhongShaderMPxHwShaderNode を使用してカスタムのハードウェア シェーダを実装する場合のサンプルです。 更新により、これには、MPxShaderOverride を使用してビューポート 2.0 のための完全なカスタム シェーディング効果を実装する方法が含まれています。プライマリ モードでは、単純な drawGeometry インタフェースを使用して、ビューポート 2.0 でシェーダを設定した後にジオメトリ図面を処理できるようにします。 また、カスタムのバインドと描画を実行するために MGeometry インタフェースを介して実際のジオメトリ リソース ハンドルを問い合わせる代替の方法を示す実装も含まれています。

cgFx

Maya の CgFX プラグインは、MPxShaderOverride インタフェースを介してビューポート 2.0 をサポートするように更新されています。上の hwPhongShader とは異なり、これは、新しい API を使用して高速で興味をひくカスタム シェーディングを生成するための複雑な処理をともなうサンプルです。プラグインは、カスタムの CgFX ファイルシェーダをレンダリングする際に、状態を設定して保持するために大量の MDrawContext を使用します。

dx11Shader

このプラグインは、ビューポート 2.0 で DirectX 11 をサポートするために、MPxHardwareShader インタフェースを使用して、Maya シェーディング ノードを定義します。CgFX プラグイン同様、ノードのアトリビュートは、シェーダ エフェクト ファイルに基づいて動的に作成されます(この場合での違いは Cg エフェクトではなく HLSL エフェクトである点です)。また、CgFX プラグインと同様に、このノードは、MPxShaderOverride インタフェースを使用してビューポート 2.0 でサポートされており、このインタフェースの全機能を示す、もう 1 つの非常に優れた重要な例になっています。このプラグインは、ハードウェア ディスプレイスメントやテッセレーションなどのエフェクトを得るために、シェーディングとジオメトリを高度に操作する例を示します。

MPxShadingNodeOverride の使用例

プラグイン brickShadercheckerShaderfileTexturecontrastShadergammaShader、および mixtureShader は、いずれも、そのプラグインによって定義されているソフトウェア シェーディング ノードのビューポート 2.0 サポートを提供するために、MPxShadingNodeOverride を実装しています。この 6 つのプラグインが合わさって、このインタフェースの機能の概要がわかりやすく示されています。

MPxSurfaceShadingNodeOverride の使用例

プラグイン lambertShaderphongShader、および depthShader は、いずれも、そのプラグインで定義されているソフトウェア サーフェス シェーディング ノードのビューポート 2.0 のサポートを提供するために、MPxSurfaceShadingNodeOverride を実装しています。この 3 つのプラグインが合わさって、このインタフェースの全機能の概要が示されており、ベース クラス MPxShadingNodeOverride の備えている機能の一部を示す優れた例になっています。

viewRenderOverride

viewRenderOverride プラグインは、ビューポート図面をオーバーライドして標準の描画上にさまざまなエフェクトを生成する場合のサンプルです。これは、次のような新しい API クラスを数多く使用します。MRendererMRenderOverrideMRenderOperation (およびいくつかの導出クラス)、MCameraOverride、および MRenderTarget