レンダリングおよびライティング API の新機能

void mesh( Primitive mode, const MFloatPointArray& position, const MFloatVectorArray* normal = NULL, const MColorArray* color = NULL, const MUintArray* index = NULL, const MFloatPointArray* texcoord = NULL );

MPxSelectionContext からクラスを取得するときにこれらの関数をオーバーライドして、ボタンを押す、またはボタンを放すといったマウス イベントを処理できるようになりました。

旧式の既定ビューポートとビューポート 2.0 の両方でプラグインを正しく動作させる場合は、MPxSelectionContext の旧式の実装を変更しないで維持することができますが、ビューポート 2.0 の実装はオーバーライドする必要があります。

詳細については、開発キットのサンプル moveTool を参照してください。

シェーディング

シェーダ フラグメントを検証するには、最終エフェクト ソースから生成されたシェーダ インスタンスをコンパイルして、バインドします。フラグメント デバッグ コードのパスを有効にするには、MAYA_CUSTOMSPRITESHADER_DEBUG_FRAGMENTS = 1 環境変数を設定します。Maya スクリプト エディタ(Script Editor)にシェーダ コンパイルに関するエラーまたは警告が表示されることがあります。エラーまたは警告が表示された場合は、XML でフラグメントを変更します。更新が完了したら、Maya を再起動してシーンをリロードし、修正内容をテストします。

詳細については、customSpriteShader/customSpriteShader.cpp サンプル プラグインを参照してください。

このプラグインは MShaderInstance::addInputFragment() を使用してフラグメント グラフからシェーダ インスタンスを作成することにより、ジオメトリ シェーダ フラグメントを接続します。フラグメント グラフの接続、プロパティ、値、および出力は、XML スキーマで拒否されます。

付属の customFileTextureOutputColor.xml ファイルに入力テクスチャのカラー管理の実装も含まれています。このファイルには、sRGB 空間またはリニア空間のテクスチャ カラーを Maya で変換する方法が記述されています。具体的なニーズに応じて、既存の MShaderInstance::createShaderInstanceWithColorManagementFragment() インタフェースを使用するか、customFileTextureOutputColor.xml を参照してカラー管理のカスタム実装を行うこともできます。MPxShaderOverride::isTransparent() 仮想メソッドは透明度通知を処理します。

シェーダ フラグメントをデバッグするために、新しい MShaderInstance::writeEffectSourceToFile() インタフェースを使用してシェーダ インスタンスの最終エフェクト ソースがディスクに書き込まれます。バインド中に、または MShaderManager::getLastError()使用して照会しているときに、Maya スクリプト エディタ(Script Editor)にシェーダ コンパイル エラーが表示されることがあります。

customSpriteShader プラグインはビューポート 2.0 の OpenGL コア プロファイル モード、OpenGL モード、および DirectX 11 モードをすべてサポートしています。

シェーダからカメラのニア クリップ プレーンおよびファー クリップ プレーンを照会する

均一パラメータまたはセマンティック パラメータを使用して、シェーダからカメラのニア クリップ プレーンおよびファー クリップ プレーンにアクセスして、照会できるようになりました。ファイルまたはバッファから生成されたエフェクトに対する MUniformParameter クラスの DataSemantic 列挙子に、セマンティックを使用する新しいパラメータが追加されました。これらの均一パラメータを使用すると、MPxShaderOverride クラスで作成された完全なエフェクト内のニア クリップ プレーンおよびファー クリップ プレーンにアクセスすることができます。

シェーダ フラグメントの場合、セマンティック nearClipPlane および farClipPlane を使用するパラメータはビューポート 2.0 によって自動的に更新されます。

描画

これらの更新は、プラグインのソース コードを変更または再コンパイルしなくても利用できます。

新しい関数は次のとおりです。

rawfootPrintNode プラグインの例が更新されて、新しい関数の使用法が示されるようになりました。

C++ および Python 用の新しい customImagePlane/customImagePlane.cpp のサンプルは、新しい MPxImagePlaneOverride クラスの使用方法を示します。内容は次のとおりです。

引き続き、MPxImagePlane::loadImageMap() を使用して深度マップを更新する必要があることに注意してください。

Error: line 0: Failed to create evaluator for "drawdb/geometry/apiMesh" classification because the current drawing API isn't supported.

一般

この更新は Maya 内部の変更と一致していて、int 型の上限である 2^31 より大きいテクスチャ サイズを使用できるようになりました。この変更により既存のコードが破棄されるため、プラグインを更新および再コンパイルする必要があることに注意してください。

このパラメータの変更に伴い、次のサンプル プラグインが更新されました。

const MFrameContext* getFrameContext() const;

たとえば、以前の実装では、レンダー ターゲットをリリースする際に、次の呼び出しを行う必要がありました。

targetManager->releaseRenderTarget((MHWRender::MRenderTarget*)colorTarget);

この呼び出しは次のように簡略化されました。

targetManager->releaseRenderTarget(colorTarget);.

MGeometry の名前を MGeometryLegacy に変更しました

MGeometryRequirements の名前を MGeometryRequirementsLegacy に変更しました

MRenderTarget の名前を MRenderTargetLegacy に変更しました

OpenMaya ネームスペースの詳細については、「Maya API に対する重要な更新」を参照してください。