Maya 2017 の API の新機能

API のバージョンとバイナリ互換性

Maya の API のバージョンが更新されました(現在の MAYA_API_VERSION は 201700 です)。Maya 2016 Extension 1、2、または Service Pack のリリースを含む Maya 2016 でコンパイルされたすべてのプラグインは、Maya 2017 バージョンによって認識されるように Maya 2017 に対して再コンパイルする必要があります。

新しい Qt および PySide のバージョン

Maya は現在 Qt バージョン 5.6.1 および PySide バージョン 2.0 を使用しています。

Qt プラグインのビルド方法の更新された手順については、「プラグインのビルド」を参照してください。

Maya Developer Kit

開発キットは https://apps.exchange.autodesk.com/MAYA/ja/Home/Index の Autodesk Exchange からオンラインで入手できます。

Maya 2016 API ガイド

Maya 2016 Extension 2 の API ガイドは、http://www.autodesk.com/maya-sdkdoc-2016-jpnからオンラインで利用可能です。また、http://www.autodesk.com/me-sdk-docs-2016でダウンロード可能なバージョンを取得することもできます。

Maya 2016 および Maya 2016 Extension 1 の API ガイドのダウンロード可能なバージョンは、http://www.autodesk.com/me-sdk-docs-2016から利用できます。

次のセクションにジャンプします。

レンダリング

フラグメント レンダラ

サンプル プラグイン viewRenderOverrideFromFragments が追加されました。これはシーンおよび希望するポスト エフェクトをレンダリングするためにスクリプト フラグメントとフラグメント グラフを使用できるように、新しい API セットの使用を示します。スクリプト フラグメントは、標準ビューポート レンダリングのエフェクト用に Maya 内部で使用される構築ブロックで、Maya インストール フォルダ内の bin/ScriptFragment フォルダにある一連の .xml ファイルに保存されています。

次の API クラスとインタフェースが追加され、フラグメント レンダラの作成が可能となりました。

  • シーンのレンダリングに使用するフラグメントの名前を指定できる、新しい MSceneRender コンストラクタが追加されました。
    MSceneRender (const MString &name, const MString &fragmentName)
  • レンダラ入力値の読み取りまたは書き込みに使用できる MRenderParameters クラスが追加されました。
  • レンダラのコントロールに使用するレンダラ入力パラメータのブロックである、MRenderParameters クラスへのポインタを返す MSceneRender::getParameters() メソッドが追加されました。
  • シーンのレンダリング時に使用するスクリプト フラグメントまたはフラグメント グラフの名前を返す MSceneRender::fragmentName() メソッドが追加されました。
  • MRenderScriptCallback クラスが追加されました。

    登録してスクリプト フラグメント .xml から呼び出すことができるコールバック関数を、このクラスから派生させて作成します。execute() 関数が実装され、現在のレンダラ グラフから MRenderParameters を、およびスクリプトから 3 つのオプション値を取得することができます。このメソッドを使用して目的の動作を計算し、MRenderParameters::setParameter() を呼び出し、スクリプトまたはグラフ内の接続された他のフラグメントに結果を戻します。詳細については、「スクリプト フラグメント コマンド」トピックの呼び出しコマンドについての説明を参照してください。

  • MRenderer::registerScriptCallback() および MRenderer::deregisterScriptCallback() インタフェースが追加され、MRenderScriptCallback の登録または登録解除が可能となりました。登録した後に、スクリプト フラグメント .xml で 呼び出しコマンドを使用して、このコールバックを呼び出すことができます。
  • MFragmentManager::addFragmentGraphFromFile() を使用して、フラグメント マネージャにスクリプト フラグメントおよびフラグメント グラフを登録します。このインタフェースは、以前はシェーディング フラグメントおよびシェーディング フラグメント グラフをサポートするためのものでしたが、カスタム フラグメント レンダラを作成できる新しい機能を提供するものとして、新しいクラスおよびインタフェースに追加されました。

ビューポートへのレンダリング用にフラグメントとフラグメント グラフを書く」を参照してください。

ロケータ

描画

  • ビュー フィルタ状態を表示するために 2 つのインタフェース M3dView::viewIsFiltered()M3dView::filteredObjectList() が追加されました。

    デベロッパー キット内の viewObjectSetOverride プラグイン サンプルを参照してください。

  • Python API 2.0 では、対応する C++ と一致させるために、MPxDrawOverride コンストラクタに新しいパラメータ isAlwaysDirty が最後のパラメータとして追加されました。

    最適なパフォーマンスを実現するには、このパラメータを false に設定して、静的な描画コールバックを使用しないようにします。

    詳細については、pyFootPrintNode.py デベロッパー キット サンプルを参照してください。

シェーディングおよびカラー管理

  • MShaderInstance::createShaderInstanceWithColorManagementFragment() を使用して MShaderInstance にカラー管理フラグメントを追加するときに、シェーダ インスタンスに設定されたすべてのプリ レンダラおよびポスト レンダラのコールバックが消失しなくなりました。以前はこれらはどちらも null に設定されていました。

  • 以前は、mayaTextureShader フラグメントと関連付けられているストック シェーダのラッパー k3dSolidTextureShader には、exposure または alphaAsLuminance がパラメータとして含まれていませんでした。これらのアトリビュートに対する露光が追加され、カラー管理パラメータのサポートが完成しました。「ビューポート 2.0 のプラグイン シェーダのカラー管理のサポート」を参照してください。
  • プラグインがエフェクト キャッシュをクリアできるようにする、新しい MShaderManager::clearEffectCache() メソッドが追加されました。このメソッドは、シェーダ フラグメントまたはフラグメント グラフの実装が変更されたときに、関連するすべてのエフェクトを更新させることができます。

選択項目

  • MSelectionList::intersect() インタフェースが追加されました。これを使ってセレクション リストを変更し、それ自身と指定されたリストとの論理積を含めることができます。
  • beginDrawable の使用を明確にするために、次の変更が MUIDrawManager に加えられました。
    • beginDrawable() の非パラメータ バージョンが除去された
    • beginDrawable (unsigned int name, bool nameIsPickable) の 2 つのパラメータを取るバージョンが非推奨としてマークされた
    • 新しい enum Selectability と新しい 2 つのパラメータを取るバージョンの beginDrawable (Selectability selectability=kAutomatic, unsigned int selectionName=0) が追加された
    • MUIDrawManager の Python API 2.0 バージョンもそれに応じて更新された

    詳細については、uiDrawManagerlineManipContainer (C++ API) および pyUiDrawManager.py (Python API 2.0) デベロッパー キット サンプルを参照してください。

レンダー オーバーライド

  • 新しいメソッドが追加されました。

    const MFrameContext* MRenderOverride::getFrameContext()

    このメソッドにより、MRenderOverride::setup()MRenderOverride::cleanup() 間で利用できる現在のフレーム レンダーのコンテキスト情報にアクセスできるようになります。オブジェクト単位およびレンダー項目の情報は、パイプラインがまだ実行されていないセットアップ時には使用できません。この情報は、ビューポート、プレイブラスト、レンダー ビューまたはバッチ レンダリングでオーバーライドが呼び出されるかどうかに関係なく提供されることに注意してください。

    フレームごとの各種データを抽出する MRenderOverride.getFrameContext() の使用を説明する、pyFrameContexTest.py プラグイン サンプルを参照してください。

ライト

ノードを登録するときに、"drawdb/light""drawdb/geometry" の両方の分類を指定することにより、カスタム描画オーバーライドと内部 ビューポート 2.0 ライティングのサポートを結合できるようになりました。

使用例では、ビューポート 2.0 内でネイティブの Maya ライトのようなライティングを実行するカスタム オブジェクトをビューポート内に描画しています。詳細については、apiDirectionalLightShape プラグイン サンプル、および「登録 」を参照してください。

ジオメトリ

頂点 ID、フェース ID、およびローカル パラメータ設定のアクセスが、MGeometryExtractor インタフェースを介して公開されるようになりました。完全に共有されていないジオメトリ データを DAG シェイプから抽出するには、MGeometryExtractor インスタンスを構築するときに kPolyGeom_NotSharing を指定する必要があります。

MPxShaderOverride と同様、頂点 ID、フェース ID、およびローカル パラメータ設定を要求する MGeometryExtractor に新しいインタフェースはありません。これらの頂点バッファを設定するには、次のセマンティック名を使用して MVertexBufferDescriptor を指定する必要があります。

  • “vertexid”: 設定すると頂点 ID バッファが返されます
  • “faceid”: 設定するとフェース ID バッファが返されます
  • “localuvcoord”: 設定するとローカル UV 座標バッファが返されます

詳細については、geometryReplicator プラグインの例を参照してください。このプラグインの例を実行するには、まず次の環境変数を設定してから、geometryReplicator シェイプに hwPhongShader を割り当てます。

  • MAYA_HWPHONG_TEST_VERTEXID_AND_FACEID = 1
  • MAYA_HWPHONG_TEST_LOCALUVCOORD=1
  • MAYA_HWPHONG_TEST_INDEXING=1

ビューポート 2.0: MGeometryExtractor のアクセス」を参照してください。

アニメーション

カスタム エバリュエータ

カスタム エバリュエータを定義できる、新しい API 拡張が追加されました。カスタム エバリュエータにより、評価マネージャが DG ノードをスケジュールして実行する方法を変更することができます。カスタム エバリュエータの概要を参照してください。デベロッパー キット内の MPxCustomEvaluatorsimpleEvaluator および constraintEvaluator プラグイン サンプルも参照してください。

スレッド化

  • 新しい MObjectHandle::objectHashCode() インタフェースが追加され、MObjectHandle を作成または破棄せずに、提供された MObject に対してハッシュ コードを返すことが可能となりました。MObjectHandle の作成および破棄がスレッド セーフではないため、プラグインがスレッド化されている場合は、このインタフェースを MObjectHandle::hashCode() の代わりに使用する必要があります。

シーン アセンブリ

新しい MPxAssembly::postActivateRep() 仮想関数が追加され、リプリゼンテーションがアクティブ化された後に、アセンブリで操作を実行することが可能となりました。

一般

Maya ビューポート 2.0 およびアニメーション パフォーマンスのホワイトペーパー

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 拡張に関する情報を提供するとともに、シーンのパフォーマンスを評価するためのプロファイラの使い方についても解説しています。