Maya ビューポート 2.0 のホワイトペーパーは、http://www.autodesk.com/developmaya で参照できます。
このドキュメントは 2 つのパートに分かれています。1 つ目のパート『Viewport 2.0 API Porting Guide(英語)』は、ビューポート 2.0 の概要を示すとともに、旧式の既定ビューポートとビューポート 2.0 との違いについて説明します。2 つ目のパート『Viewport 2.0 API Porting Guide Details(英語)』は、より詳細な内容について触れており、推奨するインタフェースを指定し、一般的なタスク向けのサンプル コードを提供します。
ホワイトペーパー『Improving Performance with Parallel Evaluation(英語)』 は、http://www.autodesk.co.jp/maya-docs で参照できます。
シーンレベルのグラフの解析と並列化を使用して、アニメートされたシーンの再生や操作を改善する、新しい評価マネージャ機能を使用する方法の詳細については、このドキュメントを参照してください。さらに、プラグインでこれらの機能を活用するために実行できる API の拡張機能に関する情報、およびシーンのパフォーマンスを評価するためにプロファイラを使用する方法についてのガイドラインを提供します。
Maya 2016 Extension 2 と Maya 2016 には、バイナリ レベルで互換性はありません。
Maya 2016 Service Pack リリースを含む Maya 2016 または Maya 2016 Extension 1 に対してコンパイルされた C++ プラグインが、Maya 2016 Extension 2 で認識されるようにするには、プラグインをこのバージョンの Maya に対して再コンパイルする必要があります。
また、Maya 2016 Extension 2 向けにコンパイルされたプラグインを、Maya 2016、Maya 2016 Extension 1、またはいずれかの Maya 2016 Service Pack リリースでロードすると、ロードに失敗するか、予期しない動作を示します。
Maya 2016 および Maya 2016 Extension 1 の Maya API ガイドを入手するには、http://www.autodesk.com/me-sdk-docs-2016 を参照してください。
C++ API ヘッダー ファイルとライブラリが Maya インストールで使用できるようになりました。カスタム プラグインをコンパイルするために Maya Developer Kit をダウンロードする必要がなくなりました。ヘッダーとライブラリ ファイルは Maya インストールの次のフォルダにあります。
Windows および Linux:
Mac OS X:
開発キットは https://apps.exchange.autodesk.com/MAYA/ja/Home/Index の Autodesk Exchange からオンラインで入手できます。
http://mayaid.autodesk.io/ で Maya ノード ID ブロックまたは接線タイプ ID ブロックを登録できるようになりました。詳細については、http://www.autodesk.com/developmaya の「Tools & Documentation archives」セクションも参照してください。
次のセクションにジャンプします。
次のクラスとメソッドが Python API 2.0 に追加されました。
次の反復クラス:
MItDependencyGraph
サンプルの Python API バージョン 2.0 が、「例: シーンの作成」に追加され、その結果、「シーン グラフを照会する」の Python API 2.0 のサンプルが更新されました。
コンポーネントの選択用に追加されたインタフェース:
MPxDrawOverride.updateSelectionGranularity()
コンポーネントの選択を示すため、pyApiMeshShape Developer Kit サンプルが追加されました。
Python のサンプルは、Maya Developer Kit の plug-ins\scripted ディレクトリにあります。
次のクラスは、互換性のある要素のシーケンスで初期化できるようになりました。
MColorArray
たとえば、最初に各シーケンスに MPoint を作成しなくても、一連のシーケンス(リストとタプルを含む)で MPointArray を作成できるようになりました。
つまり、次のことができるようになりました。
pySeq = [[1,2,3],[4,5,6]] a = OpenMaya.MPointArray(pySeq)
次を実行する必要はなくなりました。
a = OpenMaya.MPointArray([OpenMaya.MPoint(i) for i in pySeq])
以下を実行することもできます。
adaptList = [ (-3.787, 0.05, 2), [189.3, 4.0, 4.01], om.MFloatPoint(0.0002, 16.35, -8.9), om.MVector(1, 2, 3), om.MPoint(-6.314, 2.09, 17.8) ] fpa = om.MFloatPointArray(adaptList) pa = om.MPointArray(fpa) ta = om.MTimeArray([0,4,8,15,17])
「ビューポート 2.0 の dx11Shader および glslShader プラグインでサポートされるセマンティックと注釈」および「ビューポート 2.0 でサポートされるシェーダ セマンティック」を参照してください。
M3dView
pointManip Developer Kit サンプルを参照してください。 pointManip をドラッグすると、選択したオブジェクトはマウスのレイと不透明オブジェクトの間の最も近い交差点に移動されます。これはスクリーンスペース位置と対応する深度値から計算されます。
MDrawContext
getFrameStamp() の使用例については、rawfootPrintNode と glslShader プラグインのサンプルを参照してください。
MFrameContext
このメソッドは、現在のビューポートに設定された環境パラメータを返します。環境マップが現在のビューポートに設定されているかどうかを確認するため、プラグイン ハードウェア シェーダの描画フェーズで使用できます(メソッドには、シェーダに指定された MDrawContext でアクセスします)。環境が有効になっている場合、環境イメージ ファイルへのパスが指定されます。イメージは常に緯度経度形式になります。この情報はビューポートごとに設定されているため、複数のビューポートが同時に表示される場合は、後続の描画呼び出しの間で変更されることがあることに注意してください。
現在、環境が使用されているのは、ハイパーシェード(Hypershade)のマテリアル ビューア(Material Viewer)のみです。その他のすべてのビューポートに対しては、環境は常に無効に設定されています。
除外の完全なセットにアクセスできるように、MUint64 の値が返されることに注意してください。
MUint64 objectTypeExclusions() const;
分類文字列による除外が新しく追加されました。
void classificationExclusions(MStringArray &classification) const;
新しい列挙リストのサブセットを持つ enum MSceneRender::MObjectTypeExclusions の代わりに、MFrameContext でのスタティックを使用する必要があります。
MUint64 タイプを返す MSceneRender::getObjectTypeExclusions() が追加されました。MObjectTypeExclusions を返す objectTypeExclusions() メソッドは廃止とみなされていますが、MSceneRender::getObjectTypeExclusions() がオーバーライドされない限り、引き続き機能します。
viewImageBlitOverride および pyViewRenderOverride.py プラグイン サンプルが更新されて、新しい MFrameContext スタティックを使用するようになりました。
M3dView にアクセスせずに状態情報を照会できるように、MFrameContext に多くの追加が行われています。追加された内容は、次のとおりです。
レンダー オーバーライド名の照会(MFrameContext::getRenderOverrideInformation())
これらの照会を実行するためのデバッグ コードを含めるため、Maya Developer Kit のサンプル プラグイン rawfootPrintNode が変更されました。
座標を変換する MFrameContext::worldToViewport() メソッドと MFrameContext::viewportToWorld() メソッドが追加されました。
このメソッドは、ワールド空間の座標をビューポートの座標に変換します。
void worldToViewport(const MPoint &inPoint, double &xPos, double &yPos) const;
このメソッドは、ビューポートの座標をワールド空間のニア クリップ プレーン座標に変換します。
void viewportToWorld(double xPos, double yPos, MPoint &worldNearPt, MPoint &worldFarPt) const;
サンプル プラグイン uiDrawManager は、2D テキストと 3D テキストを描画する際のこれらのメソッドの使用例を示しています。
MPassContext
詳細については、Developer Kit の rawFootPrintnode サンプル プラグインを参照してください。
MPxPrimitiveGenerator と MRenderItem
次のプリミティブ タイプがビューポート 2.0 でサポートされるようになりました。
MGeometry::kAdjacentTriangleStrip
これらのプリミティブ タイプは、ビューポート 2.0 でプリミティブが設定されているすべての場所で使用できるようになりました。これには、GLSL シェーダ プラグインの新しい三角形の隣接 MPxPrimitiveGenerator が含まれます(Developer Kit の glslShader プラグイン フォルダ内の adjacentTrianglesPrimitiveGenerator.cpp を参照)。この新しいジェネレータでシルエット エッジの描画を有効化する方法のサンプルについては、SilhouetteEdge.ogsfx を参照してください(Maya インストール ディレクトリの presets\GLSL\examples フォルダを参照)。
MPxDrawOverride
/isTransparent がジオメトリの分類 drawdb/geometry/myNode/isTransparent/ に追加されると、透明度パス中にこのプラグインが呼び出されます。
ポスト エフェクトも考慮する必要があります。分類 drawdb/geometry/includePostEffects/ は、描画オーバーライドに確実にポスト エフェクトが呼び出されるようにします。isTransparent と includePostEffects の両方を有効にするには、分類を drawdb/geometry/rawfootPrint/isTransparent/includePostEffects に設定します。
rawfootPrintNode プラグイン サンプルを参照してください。
MPxDrawOverride は、drawdb/geometry/includePostEffects の分類を指定することで、ポスト エフェクト パスから呼び出されるオプションにすることができます。既定では、描画オーバーライドは、被写界深度、スクリーン スペース アンビエント オクルージョン、モーション ブラーなどの追加のポスト エフェクト パスに対して呼び出されません。
MPxDrawOverride::excludedFromPostEffects() を使用して、ポスト エフェクト パスに対する呼び出しから描画オーバーライドを除外できます。rawfootPrintNode プラグイン サンプルを参照してください。
注: メソッド MPxDrawOverride::excludedFromPostEffects() の使用は、分類文字列の使用に適しています。
新しいパス セマンティックが、MPassContext (MPassContext::kDOFPassSemantic と MPassContext::kMotionVectorPassSemantic)に追加されました。これらは以前のリリースでの文字列 dofPass と motionVectorPass のチェックに相当します。ポスト エフェクト パターン パスと非ポスト エフェクト パターン パスを示すため、MPassContext::kPEPatternPassSemantic と MPassContext::kNonPEPatternPassSemantic がそれぞれ追加されました。
投影マトリックスが、変換時にポイントの Z コンポーネントを反転するかどうかを示す ProjectionZSense セマンティックが追加されました。反転する場合、この値は -1.0 で、それ以外の場合は 1.0 です。「ビューポート 2.0 でサポートされるシェーダのセマンティック」を参照してください。
これらのパスの詳細については、「エフェクト インタフェース」を参照してください。
MShaderInstance
特に、サブシーン オーバーライドは、カスタムのレンダー項目にシェーダ インスタンスを使用する際にこのメソッドを利用できますが、このメソッドはこのオーバーライドのコンテキスト外で呼び出すことができます。
このメソッドは、GLSL シェーダ プラグインで使用されます。Developer Kit の glslShader を参照してください。MVaryingParameter を構成するために結果が調査される GLSLShaderNode クラスで configureGeometryRequirements() を参照してください。
上記の「描画」セクションの「MPxPrimitiveGenerator and MRenderItem」を参照してください。**
エフェクト ファイルをロードし、定義されたテクニックの名前を抽出する同様のメソッド MShaderManager::getEffectsTechniques() が現在存在しています。ただし、この関数を使用できるのは、ファイルからエフェクトをロードするときだけで、文字列バッファからエフェクトをロードするときには使用できません。エフェクトがロードされたら、新しい MShaderInstance::techniqueNames() を使用できます。
MShaderManager
シェーダを返せない場合は、NULL 値が返されます。
これは、文字列バッファ メソッド MShaderManager::getEffectsBufferShader() が使用されている場合に特に当てはまります。以前は、エラー シェーダが返されていて、エラーが発生したかどうかの認識が困難でした。
MRenderItem::setShaderFromNode() は、内部エフェクトのインスタンスを公開しないため、推奨されるインタフェースです。その使用方法は、Developer Kit の apiMeshShape プラグイン サンプル(apiMeshSubSceneOverride.cpp)で説明されています。
このサンプル プラグインは、以前は、シェーディング モードとテクスチャ モードの両方にレンダー項目を 1 つだけ作成していました。新しいバージョンでは、シェーディング モードとテクスチャ モードにぞれぞれ 1 つずつ、合計 2 つのレンダー項目が作成されます。これらのエフェクト インスタンスはどちらも MRenderItem::setShaderFromNode() で割り当てられますが、ブール値の引数 nonTextured は、シェーディングのレンダー項目に対しては true に設定され、テクスチャのレンダー項目に対しては false に設定されます。
MPxShaderOverride
bool MPxShaderOverride::requiresUnsharedGeometricStreams()
プラグインはこのメソッドをオーバーライドして、ジオメトリ ストリームの拡大を強制するために true を返すことができます。
シェーディング エフェクトのジオメトリ要件を更新する際に、フェース ID、頂点 ID、ローカル UV 座標を要求するため、次のセマンティックがサポートされるようになりました。詳細については、MPxShaderOverride::addGeometryRequirement()を参照してください。
uvcoord: 設定すると、ローカル UV 座標が返されます。
注:
「ハードウェア レンダリングのジオメトリ リマッピング」を参照してください。
Developer Kit の hwPhongShader プラグイン サンプルは、次のことを示します。
hwPhongShaderOverride メソッドの draw() は vertexid、faceid、uvcoord の頂点バッファを抽出して、これらのデータを出力します。
注:
MAYA_TEST_VERTEXID_AND_FACEID 環境変数が設定されている場合に、トポロジが 4 フレームごとに変更する立方体を生成する、animCubeNode のサンプルも参照してください。hwPhongShader がこのシェイプに割り当てられている場合、シェーダは * animCubeNode* プラグインから生成される頂点 ID とフェース ID を受け取ります。
MPxHwShaderNode
以前は、頂点 ID は MPxHwShaderNode::provideVertexIDs() メソッドを使用して照会できました。新しい MPxHwShaderNode::provideFaceIDs() メソッドを使用してフェース ID を照会できるようになりました。新しい MPxHwShaderNode::provideLocalUVCoord() メソッドを使用して、ローカル UV 座標を照会できるようになりました。
この署名を持つデータを返す、新しいメソッドがあります。
MStatus MPxHwShaderNode::geometry( const MDrawRequest& request, M3dView& view, int prim, unsigned int writable, int indexCount, const unsigned int * indexArray, int vertexCount, const int * vertexIDs, const float * vertexArray, int normalCount, const float ** normalArrays, int colorCount, const float ** colorArrays, int texCoordCount, const float ** texCoordArrays, const int *faceIDs, const float * localUVCoord)
Mstatus MPxHwShaderNode::glGeometry( const MDagPath& shapePath, int prim, unsigned int writable, int indexCount, const unsigned int * indexArray, int vertexCount, const int * vertexIDs, const float* vertexArray, int normalCount, floatArrayPtr normalArrays, int colorCount, floatArrayPtr colorArrays, int texCoordCount, floatArrayPtr texCoordArrays, const int * faceIDs, const float * localUVCoord)
blindDataShader と hwPhongShader プラグインのサンプルは、どちらもこのインタフェースを使用して頂点 ID とフェース ID を取得する方法を示しています。
blindDataShader のサンプルは、対応するフェース ID のグレースケール値を返します。
返される UV 座標、フェース ID、頂点 ID は、ビューポート 1 とビューポート 2.0 の MPxShaderOverride インタフェースで同じです(ビューポート 2.0 インタフェースが共有されていないデータを求める場合)。
メッシュがスムーズ メッシュ プレビューを使用している場合、フェース ID にはスムーズされていない元のメッシュが返されるのに対し、頂点 ID にはスムーズされたメッシュが返されます。
MRenderItem
このインタフェースは DAG パスの適切なリストを返すため、MRenderItem::sourceIndexMapping() の使用をお勧めします。
MTextureManager
MTexture* MTextureManager::acquireTexture(const MString& textureName, const MPlug& plug, int width, int height, bool generateMipMaps = true);
ファイル テクスチャ ノードへのプラグが指定されている場合に、ディスクからのテクスチャ読み取りを試行するように変更されました。以前は、このメソッドは Maya ソフトウェア レンダラのソリッド テクスチャへの変換機能を使用して、テクスチャをベイク処理していました。この変更により、返されるテクスチャの忠実度と精度が向上します。
MTexture* MTextureManager::acquireTexture(const MObject& textureNode, bool allowBackgroundLoad = false);
指定されたテクスチャ ノードからファイル テクスチャをロードします。このメソッドはより単純なインタフェースを提供するため、ファイル テクスチャに(前述のプラグ メソッドよりも)推奨されるメソッドです。ファイル テクスチャ ノードを引数にとり、不要なパラメータ(幅、高さ、名前、ミップマップ作成)を指定する必要がなくなります。
また、ビューポート 2.0 のテクスチャのバックグラウンド ロード機能を使用するかどうかを示すオプションを公開します。テクスチャのバックグラウンド ロードの詳細については、『Maya ユーザ ガイド』の「表示プリファレンス」セクションの「マテリアルのロード モード」を参照してください。
MStatus MTexture::update(const MObject& textureNode);
ファイル テクスチャ ノードを使用して、取得に対して更新できます。
現在、すべてのファイル テクスチャ ベースのメソッドには、ファイル テクスチャが UV タイリングを使用している場合に最初のタイルを返す制限があります。
Maya 2016 Extension 2 では、ビューポート 2.0 はライト制限までしかライトを評価しません。したがって、オンデマンドでライトの情報を要求する場合は、新しい MRenderer::needEvaluateAllLights() メソッドを呼び出す必要があります。
プラグインは、次のインタフェースを呼び出します。
MDrawContext::getLightInformation(kFilterIgnoreLightLimit)
描画する前に、最初にこのメソッドを呼び出す必要があります。
既存のプラグインを変更しない場合は、optionVar MAYA_VP2_IGNORE_EVALUATION_LIGHT_LIMIT=1 を設定して、プラグインが Extension 2 以前と同じように機能し続けるようにすることもできます。この optionVar を設定すると、プラグインがロードされているかどうかに関係なく、シーン内のすべてのライトが常に評価されます。結果として、シーンに多数のライトがある場合は、この optionVar によってビューポート 2.0 のパフォーマンスが低下する場合があります。
これを軽減するには、プラグインがすべてのライトを評価する必要がなくなったら、この optionVar を 0 に再設定して、ライト制限までのライトだけを評価するようにビューポート 2.0 を元に戻すことができます。
MGeometryExtractor は以下をサポートするようになりました。
プラグイン シェーダで、接線と従法線の座標に指定されたマップ セット
geometryReplicator サンプル プラグインは、これらの新しい機能のサポートについて示します。
MPxSubSceneOverride::setGeometryForRenderItem() インタフェースが更新され、頂点バッファ(MGeometry::kPoints など)を使用して描画のジオメトリを定義する際に、MIndexBuffer の指定が不要になりました。このケースでは、GPU メモリの浪費を回避するために、空の MIndexBuffer を指定できます。実装例については、gpuCache Developer Kit プラグインを参照してください。
MFnCamera::unnormalizedFarClippingPlane() 関数は、ファー クリップ プレーンまでの距離を返します。
カメラ セットのために正規化されたクリップ プレーンが計算されることがあります。これは既存の MFnCamera::nearClippingPlane() メソッドと MFnCamera::farClippingPlane() メソッドで返される値です。これらの新しいメソッドを使用すると、元のカメラのクリップ プレーンにアクセスできます。
クリップ プレーンと正規化されていないクリップ プレーンを取得するための新しいメソッドは、ビューポート 2.0 の描画コンテキストの一部として使用できるようになりました。
次の列挙が MFrameContext に追加されました。
MFrameContext::kViewNearClipValue //!< カメラ ニア クリップ値(単一の値)
MFrameContext::kViewFarClipValue //!< カメラ ファー クリップ値(単一の値)
MFrameContext::kViewUnnormlizedNearClipValue //!< 正規化されていないカメラ ニア クリップ値(単一の値)
MFrameContext::kViewUnnormalizedFarClipValue //!< 正規化されていないカメラ ファー クリップ値(単一の値)
MDrawContext::getTuple() メソッドから使用できます。
これらは、MFnCamera::nearClippingPlane()、MFnCamera::farClippingPlane()、MFnCamera::unnormalizedNearClippingPlane()、および MFnCamera::unnormalizedFarClippingPlane() をそれぞれ使用した場合と同じ結果になります。
詳細については、rawfootPrintNode サンプル プラグインを参照してください。「カメラ情報」も参照してください。
MQuadRender
viewRenderOverride と viewRenderOverridePostColor の Developer Kit サンプルを参照してください。
アクティブな出力ターゲット サイズよりも大きいカスタム出力ターゲットを引き寄せるサンプル コードについては、viewRenderOverrideMRT プラグインを参照してください。
MRenderOverride の実装がより容易になりました。MRenderOperation のリストを設定することで、レンダー オーバーライドを作成できるようにする新しいクラスとインタフェースが追加されました。このリストを作成するには、標準のビューポート操作のリストを取得し、必要に応じて、それに独自のカスタム操作を追加します。
この実装の新しいメソッドにより、レンダー ターゲットが MRenderOperation で管理されるようになったため、これらを管理、作成する MRenderOverride も不要になります。
追加された新しいクラスとインタフェースは、次のとおりです。
「MRenderOverride を実装する」を参照してください。
MPxContext
描画の場合、ビューポート 2.0 で描画を実行するために MUIDrawManager が使用されている場合に、プラグインがこのメソッドをオーバーライドします。
評価順序を追跡し、内部パイプラインがレンダリング可能なリストの実行を追跡するため、いくつかのオーバーライド クラスにデバッグ トレーシング情報が追加されました。
MPxDrawOverride と MPxGeometryOverride に新しいトレーシング メソッド(MPxDrawOverride::traceCallSequence() や MPxDrawOverride::handleTraceMessage() など)が追加され、ogs コマンドに新しいトレース オプション(-traceRenderPipeline フラグ)が追加されました。
詳細については、「ビューポート 2.0 パイプラインの基本的なシーケンス」と「ビューポート 2.0 オブジェクトの基本的なシーケンス」を参照してください。
プロファイラ(Profiler)は、ビューポート 2.0 内で実行するレンダリング イベントをグラフ表示します。たとえば、ノードの評価や UI 描画可能項目リスト/レンダー リストの作成、ならびに UV エディタ(UV Editor)描画などの描画イベント、ビューティ パスのレンダリング、UI 描画可能レンダリング(マニピュレータ描画など)です。レンダー オーバーライド プラグインを使用している場合、クアッド レンダー、3D シーンのレンダー、HUD レンダーなどの操作も表示されます。
この機能を使用すると、シーンのパフォーマンスのボトルネックとなる可能性があるレンダリング イベントまたはパスを特定できます。
これらのイベントをフィルタするには、プリフィックス Vp2 を検索します。
ビューポート 2.0 でのレンダリング イベントの詳細、および各イベントの詳細については、「プロファイルのビューポート 2.0 のレンダリング イベント」と「ビューポート 2.0 のレンダリング イベントのプロファイラ サンプル」を参照してください。
Maya の新しいレンダー セットアップ機能にアクセスできるように、新しい MRenderSetup クラスが追加されました。
詳細については、transformDrawNode Developer Kit サンプルを参照してください。
ノードの多数のインスタンスを持つシーン、および MPxDrawOverride を使用して描画するシーンでのパフォーマンスが改善されています。
MRenderOverride インタフェースの使用により、ビューポート オーバーライド プラグインのパフォーマンスが向上しました。
以前は、MPxSubSceneOverride は Maya のジオメトリ統合システムを利用できませんでした。MRenderItem で新しい MRenderItem::setWantSubSceneConsolidation() メソッドおよび MRenderItem::wantSubSceneConsolidation() メソッドを使用できるようになりました。このフラグは、MSubSceneContainer に追加される項目、または既に追加されている項目にのみ影響します。設定すると、これらのレンダー項目が統合の対象になります。
サンプル プラグイン fragmentDumper も更新され、指定した名前を持つフラグメントの XML をダンプする機能と、すべてのフラグメント名のリストを提供する機能が含まれました。
viewObjectSetOverride プラグインが変更され、MSceneRender::objectSetOverride() での分離選択の処理方法を示すようになりました。
分離選択に選択されたオブジェクトは、指定されたオブジェクト セット(set1 と set2)にも属している場合にのみ表示されます。
DirectX と OpenGL の描画 API に関連したカメラの方向に関する情報が、「カメラ情報」に追加されました。
シェーダの統合に関する情報が、「エフェクト オーバーライド: 統合に関する考慮事項」と「シェーダインスタンス: 統合に関する考慮事項」に追加されました。
ポスト エフェクト パスに関する情報が、「エフェクト インタフェース」に追加されました。
GPU メモリ使用量を追跡するため、次の関数が追加されました。
注: GPU メモリ不足を回避するため、GPU メモリがほぼ一杯になると、Maya GPU バッファがシステム メモリに移動されることがあります。このプロセスは、GPU メモリの使用状況の正確な追跡に依存しています。
OpenCL バッファの割り当て、更新、解放を容易にする新しい便利なクラス
GPU オーバーライドのオン/オフを切り替えなくても特定のシナリオで正しく動作させるため、次の関数が追加されました。
注: MGPUDeformerRegistrationInfo::validateNode() 関数が削除されました。
アトリビュートの変更を検出する関数
文字列をローカライズするために MOpenCLInfo クラスに次の関数が追加されました。
MOpenCLInfo インタフェース名の変更
MultiDraw 統合のサポート
この機能のため、次のインタフェースが追加されました。
MPxShaderOverride::shaderInstance(MHWRender::MDrawContext& context)
次のインタフェースは廃止されました。
MPxShaderOverride::shaderInstance()
ワールド トランスフォーム、ワールドビュートランスフォーム、ワールドビュー投影トランスフォーム マトリックスの MultiDraw バージョンである新しいシェーダのセマンティックも追加されています。「ビューポート 2.0 でサポートされるシェーダのセマンティック」を参照してください。
Developer Kit の customTextureShader サンプル プラグインも参照してください。
更新された MFnBlendShapeDeformer インタフェース
MFnBlendShapeDeformer::addTarget (const MObject& baseObject, int weightIndex, double fullWeight, TargetType targetType = kObject)
例: createPixmap("test.png", true) を呼び出すと、スケール係数が 150% の場合は test_150.png が返されることがあります。
Maya インタフェースのスケーリング用にスケールされたサイズを取得するため、2 つの MQtUtil::dpiScale() メソッド(int と float)が追加されました。これらのメソッドは、Qt でスケールされたサイズを返します。
新しい MFileIO::setError() メソッドが追加されました。設定すると、読み取りまたは書き込み操作後にエラーが発生した場合に、標準の Maya ファイルの読み取りや書き出しポップアップ ウィンドウを表示できます。このメソッドは、ファイルの入出力操作時にのみ呼び出すことができます。
また、ポップ アップウィンドウには、詳細についてユーザにスクリプト エディタ(Script Editor)を参照させるスタティック メッセージしか含まれていないため、MFileIO::setError() の呼び出し時に、MGlobal::displayError() を呼び出すことをお勧めします。
新しい MRandom ネームスペース
簡単に並列化できない従来の PRNG とは異なり、このアルゴリズムは n を生成するために n-1 を生成する必要がないため、並列化できます。これは非常に高速で、ランダムに統計的テストを渡し、さらにこの関数を同じ引数を使用して呼び出すたびに同じ結果を取得できます。
倍精度のメッシュで使用するための新しいメソッド
MObject MFnMesh::create (int numVertices, int numPolygons, const MPointArray &vertexArray, const MIntArray &polygonCounts, const MIntArray &polygonConnects, bool storeDoubles, MObject parentOrOwner, MStatus * ReturnStatus)
C++ と Python API の両方で MFileObject クラスに次の関数が追加されました。MPxFileResolver を介して未処理の URI 情報にアクセスできるようになりました。
MFileObject::setRawURI( const MString & uri )
MFileObject::setRawURI( const MURI & uri )
次の乗算演算子関数が追加されました。
MPoint
フレンド関数 OPENMAYA_EXPORT MPoint operator*(float, const MPoint &);
MFloatPoint
フレンド関数 OPENMAYA_EXPORT MFloatPoint operator*( double, const MFloatPoint &);
MVector
MVector operator*(float scalar) const;
MFloatVector
MFloatVector operator*( double scalar ) const;
次の新しいインタフェースが MPlug に追加されました。
このプラグによって値がドライブされているターゲット プラグを検索します。
ただし、これらは、これらのメソッドのうちの MPlug::source() と MPlug::destinations() の利点(接続の照会を行う際に、単位変換ノードを無視できる)を追加で提供します。
これらのメソッドは、Python API 2.0 でもサポートされています。
ファイル リファレンス ノードで一時的にリファレンスの編集をミュートするため、次の関数が追加されました。
これらのメソッドは、Python API 2.0 でもサポートされています。
このメソッドは、Python API 2.0 でもサポートされています。
プロキシ アトリビュートを作成するため、次の関数が追加されました。
注:
MFnAttribute.isProxyAttribute は、Python API 2.0 でもアトリビュートとして使用できます。そのため、次のように値を設定または取得できます。
```
# Set the attribute
myObj.isProxyAttribute = True
myBool = myObj.isProxyAttribute
```
このメソッドは、Python API 2.0 でもサポートされています。
このメソッドは、Python API 2.0 でもサポートされています。
Alembic のバージョンが 1.5.8 にアップグレードされました。AbcExport および AbcImport プラグインで UV セットの読み込み/書き出しができるようになりました。
頂点カラー ペイントのコールバックを登録することができる新しい MPaintMessage クラスが追加されました。このクラスの使用方法のデモについては、paintCallback Developer Kit サンプルを参照してください。