Autodesk Maya 2013 Extension (拡張機能)

ビューポート 2.0 API ガイド

Maya 2013 Extension(拡張機能)の変更の多くは、ビューポート 2.0 API の変更に関連しています。詳細については、「ビューポート 2.0 API」の『Maya ビューポート 2.0 API ガイド』を参照してください。

OpenMaya レンダー

描画モードの機能強化

  • MDrawContext: 表示スタイルおよびライティング モードの照会のサポートが強化されています(DisplayStylesLightingMode enum)。
  • MHWGeometry: テクスチャに対してシェーディングとしてレンダー項目をマークするためのサポートが強化されています(DrawMode enum)。

ライティング情報

  • StockParameterSemantics と連携するために、lightType()lightPath()、およびその他のメソッドが MLightParameterInformation クラスに追加されました。

ジオメトリの機能強化

  • ミューテータの導入とデータ ジェネレータに対する機能強化
    • MPxVertexBufferMutator: 既存のストリーム(頂点バッファ)の修正(変異)、またはスウィズリングなど、データのカスタム パッキングの作成が可能な新しいクラスです。
    • MDrawRegistry: ミューテータとジェネレータを受け入れるように登録が変更されました。
    • (MHWGeometry: (MPxVertexBufferGenerator クラスの) MVertexBufferArray の説明が追加されました。
    • MPxVertexBufferGenerator: 既に作成されているストリーム(カスタム ストリームである場合があります)を組み合わせるか使用して、新しいストリームを作成できるように強化されました。getSourceStreams() 関数はソースとして使用するストリームの名前を一覧表示します。名前のリストに基づき、頂点バッファのリストがパラメータ(sourceStreams)として関数の createVertexStreams()に提供されます。createVertexStreams() のシグネチャが変更されています。
  • インデックスと頂点バッファ
    • MIndexBuffer および MVertexBuffer クラスに、バッファ コンテンツへの読み取り専用アクセスを提供する map() および unmap() メソッドが追加されました。
    • MIndexBuffer および MVertexBuffer クラスに、ハードウェア バッファへのグラフィック デバイス依存ハンドルを設定および取得するための resourceHandle メソッドが追加されました。hasCustomResourceHandle() メソッドは、カスタム リソースハンドルが設定されているかどうかを判断するために使用できます。
  • EXT_frame_buffer_object のサポート
    • EXT_frame_buffer_object のサポートが MGLdefinitions に追加されています。
  • 柔軟性のあるデータ形式の変更:
    • MVaryingParameter: 変更パラメータの宣言で型の制限が緩和され、整数型、倍精度型などがサポートされるようになりました。
    • MGeometryRequirements: 位置、法線、接線、複接線などのさまざまなストリームの要素サイズの制限が緩和されています。たとえば、3 つの浮動小数を使用して表われる UV 座標がサポートされるようになりました。
  • データ ストリームのカスタム インデックス作成の導入:
    • MPxPrimitiveGenerator: プラグインでカスタム インデックス バッファを生成できます。
    • MComponentDataIndexing: コンポーネントのインデックス作成を表すサポート クラスです。
    • MPxIndexBufferMutator: Crack-Free Point-Normal Triangles using Adjacent Edge Normals (PN AEN)パッチ リストの生成などで、インデックス データのカスタム パッキングを許可するための既存のインデックス バッファの修正(変異)を可能にする新しいクラスです。
  • 新しいプリミティブ タイプ

シェーダのオーバーライドの機能強化

  • MPxShaderOverride: boundingBoxExtraScale() メソッドが追加され、ディスプレイスメントを実行するシェーダでオブジェクトのバウンディング ボックスをスケーリングできるようになりました。プラグイン シェーダでパスのコンテキスト情報に基づいて描画をオーバーライドするための handlesDraw() メソッドも追加されました。

シェーダ インスタンスの機能強化

  • MShaderInstance: 透明度フラグの指定と設定が追加されました。
  • MShaderManager: 新しいストック シェーダが追加されました。
  • 新しいバインド、パス アクティベーション、バインド解除のインタフェースで MRenderItems と関係なく、シェーダ インスタンスをバインドおよびバインド解除できるようなりました。効率性を高めるためにバインドとバインド解除内でパラメータを更新する機能も提供されています。
  • メモリに格納されているバッファを使用して MShaderInstance を取得できます(デバイス固有のソース コード(char*)、またはデバイス固有のコンパイル済みエフェクト(FXO))。
  • シェーダ インスタンスは直接削除することができなくなりました。シェーダを削除するには、MShaderManager::releaseShader() メソッドを使用する必要があります。これにより、プラグインが Maya とは異なるコンパイラ構成を使用してコンパイルされるときに発生するメモリ境界の問題が解決されます。
  • MShaderInstance で、新しい bind() および unbind() メソッドを使用してシェーダ エフェクトのバインド(cgfx ファイルや fx ファイルなど)を明示的にコントロールできるようになりました。getPassCount() および activatePass() を使用して、エフェクトで有効なパスを確認し、updateParameters() を使用して再バインドのオーバーヘッドでパラメータを更新できます。
  • getEffectsBufferShader()MShaderManager クラスに追加されています。これは、エフェクトのソース コードがファイルではなくメモリ バッファに含まれている点を除き、getEffectsFileShader() と同じ機能を実行します。

テクスチャリングの機能強化

  • MTexture: 透明度フラグの指定と設定が追加されました。また、テクスチャのアルファ チャネル用の追加照会機能が含まれています。
  • MTexture::rawData(): 未処理のピクセル データをシステム メモリに取り込む とができます。
  • ディスクにテクスチャを保存するための MTextureManager::saveTexture() が追加されました。
  • テクスチャは直接削除することができなくなりました。テクスチャを削除するには、MTextureManager::releaseTexture() メソッドを使用する必要があります。これにより、プラグインが Maya とは異なるコンパイラ構成を使用してコンパイルされるときに発生するメモリ境界の問題が解決されます。

レンダー項目の機能強化

  • MRenderItem: 複数のオブジェクトに互換性がある場合は、インデックスと頂点バッファを連結してこのジオメトリを 1 つの MRenderItem に統合し、パフォーマンスを向上させることができます。isConsolidated() 関数は、MRenderItem に複数のオブジェクトが含まれる場合 true を返します。また、sourceIndexMapping() は、バッファへのオブジェクトの統合方法を表す MGeometryIndexMapping インスタンスを返します。
  • MRenderItem でシャドウを投影するか、受像するかを指定できます。レンダー項目がシャドウを投影しているかどうかを修正および照会するための castsShadows() メソッドが MRenderItem に追加されています。シャドウを受像するのと同じ機能を提供する receivesShadows() メソッドが追加されています。

レンダー ターゲットの機能強化

  • MRenderUtilities::blitTargetToImage(): MRenderTargetMImage にレンダーできます。
  • MRenderUtilities::blitTargetToGL(): MRenderTarget を現在のコンテキストの領域にレンダーできます。
  • MRenderTarget::rawData(): 未処理のピクセル データをシステム メモリに取り込むことができます。
  • レンダー ターゲットの特定のフォーマットで、組み込みのハードウェア ガンマ補正(sRGB の書き込みとも呼ばれます)をサポートできるかどうかを確認するための MRenderTargetManager::formatSupportsSRGBWrite() が追加されました。これは DirectX でのみ使用できます。MRenderOperation::enableSRGBWrite() は、指定された操作に対してこの機能を有効にします。
  • MRenderTargetDescription: ターゲットが複数のスレッドによるデータへの同時読み込み/書き込みアクセスをサポートするかどうかを設定および照会するための setAllowsUnorderedAccess() および allowsUnorderedAccess() 関数が追加されました。
  • 現在のスクリーン上のバッファから新しいレンダー ターゲットを取得できます。
  • カラーのオーバーライドでスワップされた1 番目と 2 番目のカラーの設定を修正します。
  • レンダー ターゲットは直接削除することができなくなりました。レンダー ターゲットを削除するには、MRenderTargetManager::releaseRenderTarget() メソッドを使用する必要があります。これにより、プラグインが Maya とは異なるコンパイラ構成を使用してコンパイルされるときに発生するメモリ境界の問題が解決されます。

状態の機能強化

パス コンテキスト情報

  • MPassContext: パス コンテキスト情報を照会できます。footPrintNode や hwPhongShader などの複数のサンプル プラグインが更新されて、この情報を利用できるようになりました。
  • 現在のレンダー パスに関する情報を返す MDrawContext::getPassContext() が追加されました。新しい MPassContext クラスのインスタンスを返します。

レンダーのオーバーライドの機能強化

  • MViewportRenderer: 追加の表示モードとライティング モードのオーバーライド用にレンダー オーバーライド シーン操作が強化されました。
  • MSceneRender: 追加のオブジェクト タイプ フィルタ オプションが提供されます。不透明オブジェクトと透明オブジェクトを別の描画に分割できるようになりました。
  • modelEditor コマンドでレンダー オーバーライドをサポートします。オーバーライドで、3D ビューポート パネルのレンダラ(Renderer)メニューに表示されます。
  • カラーのオーバーライドでスワップされた1 番目と 2 番目のカラーの設定を修正します。
  • レンダー操作で、操作に指定されたレンダー ターゲットに対して sRGB の書き込み(ハードウェア ベースの 2.2 ガンマ補正)が有効かどうかを示すことができます。これは、シーン、クワッド、およびユーザ操作に適用されます。MRenderOperation::enableSRGBWrite() から派生させて、有効状態を示すことができます。これは DirectX でのみ使用できます。
  • シーンおよびクアッドのレンダー操作では、複数のレンダー ターゲット(MRT)をサポートします。MRenderTargetDescription::compatibleWithDescription() ユーティリティ メソッドを使用して、互換性のあるターゲットの説明を確認できます。
  • HUD 操作は、レンダー ターゲットのオーバーライドで適切に動作し、操作の順序に従うようになりました。HUD 操作は、最後および最終的なターゲットにレンダリングされなくなりました。HUD 操作は、シーン操作の一部として誤ってレンダリングされることもなくなりました。例については、立体視プラグインの変更点を参照してください。

ジオメトリ ユーティリティ

レンダー ユーティリティ

  • MRenderUtilities: スウォッチのバックグラウンド カラーの設定、スウォッチとテクスチャ エディタの描画コンテキストの取得、OpenGL または MImage へのターゲットの転送など、ビューポート レンダリングのさまざまなユーティリティ機能を提供する新しいクラスです。

DirectX 11 全般

  • DX11 リソースは、GL リソースと同様にエクスポーズされます。
  • 新しい DX11 描画 API があります。プラグインは、GL または DX あるいは両方の API をサポートすることができるようになりました。
  • DrawAPI enum に kDirectX11 が追加されました。現在のレンダラが DX 11 をサポートしている場合、MRenderer::drawAPI() は kDirectX11 を返します。描画 API が kDirectX11 である場合、MRenderer::GPUDeviceHandle() は DirectX デバイスへのポインタを返します。MPxDrawOverrideMPxGeometryOverrideMPxShaderOverride、および MRenderOverride から派生したカスタムのオーバーライドは、supportedDrawAPI() メソッドで返されるビットマップに kDirectX11 を含めて DX11 をサポートするかどうかを示すことができます。

プラグインの除外フィルタリング

  • MPxSurfaceShape: プラグイン シェイプのタイプ フィルタリングがサポートされます。
  • 登録時におけるプラグイン タイプのタイプ除外のサポートが追加されています。適切な分類を指定して、フィルタを追加することができます。
  • 分類文字列 drawdb/geometry/lights を含むプラグイン ノードは、ライト がフィルタされるときにフィルタされます。

カスタム表示フィルタ

  • ビューポートの表示(Show)メニューに表示される新しいオブジェクト フィルタを作成するための MFnPlugin::registerDisplayFilter() が追加されました。これらのフィルタの状態をコントロールおよび照会するための setPluginDisplay() および pluginObjectDisplay()M3dView クラスに追加されました。プラグイン シェイプに情報を提供する MDrawInfo::pluginObjectDisplayStatus() が追加されました。

リファレンス編集の新しい API

  • MItEdits: シーンのリファレンス編集を繰り返し処理することができます。MEditMAddRemoveAttrEditMConnectDisconnectAttrEditMFcurveEditMParentingEdit、および MSetAttrEdit には、特定のタイプの編集を照会するためのメソッドが用意されています。
  • MFnReference: 個々のファイル リファレンスを照会することができます。
  • MFnDependencyNode::isTrackingEdits(): リファレンス ノードまたはアセンブリで編集を追跡するかどうかを指定することができます。
  • 新しい編集関連のメッセージ タイプとして、MSceneMessage:kBeforeLoadReferenceAndRecordEditsMSceneMessage:kAfterLoadReferenceAndRecordEditsMSceneMessage:kBeforeCreateReferenceAndRecordEdits、および MSceneMessage:kAfterCreateReferenceAndRecordEdits が追加されました。

シーン アセンブリの新しい API

  • MFnAssembly: シーン アセットのさまざまなリプレゼンテーションの管理に使用されるアセンブリ ノードを照会および修正することができます。
  • MPxAssembly: カスタム アセンブリ タイプを作成することができます。
  • MPxRepresentation: カスタム リプレゼンテーションを作成することができます。

一般的なメタデータの新しい API(ブラインド データ)

  • MPxMayaAsciiFilter: writesMetadata() 仮想メソッドが追加されました。
  • MFnDependencyNode: setMetadata()deleteMetadata()metadata()、および validateMetadata() メソッドが追加されました。
  • MDGModifier: setMetadata() および deleteMetadata() メソッドが追加されました。
  • 汎用データのストリームでの作成と操作のためのクラスが追加されました。クラスの API リファレンスについては、adsk::Data ネームスペース(adsk::Data::Streamadsk::Data::Channel など)を参照してください。

Uniform Resource Identifier (URI)の新しい API

  • MPxFileResolver: 特定の URI スキームを解決するカスタム ハンドラを作成することができます。
  • MURI クラスは、URI の作成に加え、URI のさまざまなコンポーネントの照会と修正にも使用できます。

その他

  • 接続を介して渡すことができる配列データ型のセットを補完する MFnFloatArrayData が追加されました。
  • MLibrary::cleanup() メソッドは、オプションの exitWhenDone パラメータを取得するようになりました。このパラメータを false に設定すると、アプリケーションを強制終了するのではなく、コール側にコントロールを戻すことができます。

新しいまたは更新されたサンプル

  • dx11Shader: DX11 で HLSL エフェクトをサポートするための新しいプラグイン。
  • dx11ShaderNode: 複数のストリーム宣言のサポートが改善されています。クライアントでは、複数のテクスチャ座標、カラー、接線、および複接線ストリームを宣言し、AE を使用してそれらのストリームをジオメトリ データに名前別にバインドできるようになりました。
  • vertexBufferGenerator: カスタムの頂点バッファの新しいプラグイン例です。
  • vertexBufferMutator: ミューテータの新しいプラグイン例です。
  • customPrimitiveGenerator: MPxPrimitiveGenerator の例です。
  • crackFreePrimitiveGenerator: MPxIndexBufferMutator の例です。
  • gpuCacheDrawOverride: 表示モード、ライティング モードの露出、および除外フィルタリングの変更を組み込んで更新されました。
  • footPrintNode :シャドウ パス用に最適化された描画を実行するよう強化されました。
  • hwPhong: 新しいストック シェーダ(MShaderInstance)を使用してカスタムのシャドウ パスとビューティ パス レンダリングが実行されるように更新されました。プラグインでは、DX11 または OpenGL でレンダリングができるようになりました。
  • squareScaleManip: MPxDrawOverride を使用して、カスタムのマニピュレータ(MPxManipulatorNode)をサポートする例です。
  • swissArmyManip: コードを追加せずに VP2.0 で MPxManipContainer をサポートする方法の例です。このプラグインに追加されているのは、マニピュレータが影響を与えるカスタム ロケータをサポートするための MPxDrawOverride だけです。
  • customTextureShader: 独自のカスタム テクスチャ形式を生成および解釈する(MPxShaderOverride を使用する)カスタム シェーダの例です。DX11 でのみ使用されます。

マニュアル