Autodesk Maya 2015

レンダリング

OpenMayaRender

UI 描画マネージャの機能強化

レンダー項目の機能強化

レンダー項目に使用できるタイプは、次のとおりです。

コンテキストの機能強化

MFrameContext にはディスプレイ プリファレンスをテストする追加のスタティック メソッドがあります。

MFrameContext にレンダリング先を照会する renderingDestination() メソッドが追加されました。これは、たとえば、レンダー先のビューポート パネルを識別するのに使用できます。また、レンダー ビューへのレンダリングとディスク上のイメージへのレンダリングを見分けるのに使用できます。

//! Rendering destinations enum RenderingDestination { k3dViewport, //!< Rendering to an interactive 3d viewport k2dViewport, //!< Rendering to an interactive 2d viewport //!< such as the render view kImage //!< Rendering to an image }; RenderingDestination renderingDestination(MString & destinationName) const;

MDrawContext を使用すると、現在のカラーまたは深度ターゲットのコピーの作成を、それぞれ次のメソッドで作成することができます。

MPassContext に 3 つの新しいパス セマンティクス kTransparentPeelSemantickTransparentPeelAndAvgSemantic、および kTransparentWeightedAvgSemantic が追加されました。dx11Shader エフェクト ファイル AutodeskUberShader.fx はこれら 3 つのパス セマンティクスの使用例を示しています。

この API を使用してシーン レンダーをキャッシングする実例を示す新しいプラグイン(viewRenderOverrideFrameCache)が利用できます。詳細については、「レンダー ターゲット/フレームのキャッシング」を参照してください。

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

サンプル プラグイン hwApiTextureTest はテクスチャのサブ領域のカラーを反転させるサンプル コードを示しています。

layerNamealphaChannelIndex は、PSD ファイルからレイヤとアルファ チャネルをロードするために使用できる新しいオプションの引数です。これらの引数は、PSD ファイルのロード専用です。

MViewportRenderer と MViewport2Renderer の変更

MViewportRenderer には、同じ名前のフィルタ列挙も追加されています。ただし、MViewportRenderer は廃止されているため、代わりに MRenderOverride を使用するように切り替える必要があります。

MPxSubSceneOverride の機能強化

インスタンス トランスフォームは 1 つずつ追加することができ、これにより返されたインスタンス識別子を使用した効率的な更新または削除が可能になります。また、すべてのインスタンスのトランスフォームは行列配列を通して 1 つの呼び出しで設定することもできます。同様に、1 インスタンスずつ、または浮動小数点数配列によってすべて一度に、インスタンスごとの浮動小数点データをシェーダ インスタンスのパラメータに関連付けることができます。

MPxSubSceneOverride のインタフェースが新しくなり、さらに多くの更新呼び出しが必要となりました。この目的のために、このメソッド furtherUpdateRequired() は派生クラス内でオーバーライドされる場合があります。apiMeshSubSceneOverride のプラグイン サンプル コードは、このインタフェースを使用するシンプルな例を示しています。

オーバーライドの登録の分類でサブストリング “/subscene/volume/” が使用されている場合、透明なレンダー項目は内部の透明度アルゴリズムとポスト エフェクトをバイパスします。透明度パス中にレンダー項目は一度描画されるため呼び出されます。

MPxDrawOverride の機能強化

ジオメトリの機能強化

以前にコミットする呼び出しで内部バッファが割り当てられていない場合はバッファが割り当てられます。指定されたパラメータが以前に割り当てられたバッファよりも大きなバッファを必要とする場合、バッファは新しいサイズで再割り当てされます。

OpenGL モードで MVertexBuffer または MIndexBuffer::unmap() を呼び出すと、GL_ARRAY_BUFFER_ARB および GL_ELEMENT_ARRAY_BUFFER_ARB の OpenGL バッファのバインドが 0 にリセットされるようになりました。これにより Maya ハードウェア バッファのリードバックの信頼性を高め、ネイティブ グラフィックス API と直接対話することも可能になりました。

MVertexBufferDescriptor には、作成時にセマンティック名を提供するための新しいコンストラクタ引数があります(オプション)。セマンティック名は、異なるカスタム テクスチャ ストリームにタグを付けて識別するために使用します。

ジオメトリ抽出機能の強化

シェーディングの機能強化

MShaderInstance* getShaderFromNode(const MObject& shaderNode, const MDagPath& path, LinkLostCallback linkLostCb = 0, MUserData* linkLostUserData = 0, MShaderInstance::DrawCallback preCb = 0, MShaderInstance::DrawCallback postCb = 0) const;

このメソッドを使用して、Maya によって移動された状態で MShaderInstance を特定のノードから取得します。このメソッドは、getEffectFileShader()getEffectsBufferShader()、および getFragmentShader() と同様の方法で動作しますが、LinkLostCallback を追加すると、シェーダが取得元のノードにリンクされなくなったときに通知を受けることができます。パラメータの変更によって、取得済みのシェーダ インスタンスが引き続き自動的に更新されるようにする場合は、このメソッドを再度呼び出して、コールバックがトリガされた後でノードから新しいシェーダを取得します。

MStatus addInputFragment(const MString& fragmentName, const MString& outputName, const MString& inputName);

MStatus addOutputFragment(const MString& fragmentName, const MString& inputName);

これらのメソッドは、MFragmentManager で登録されたコードのフラグメントをアタッチすることで、既存の MShaderInstance のランタイム コードを変更するために使用します。フラグメントを追加するには、新しいフラグメントの出力を既存のシェーダ インスタンスの入力に接続します。これらのメソッドは、MShaderManager::getShaderFromNode() と一緒に使用して、Maya から返されるシェーダを変更するためのものです。これは、既存のフラグメント シェーダに対して、追加のパターン入力を提供する、シェーダ出力を調整する、または頂点シェーダおよびジオメトリ シェーダを提供するために使用できます。

フラグメントの機能強化

レンダラーの機能強化

Dashline パターンの変更

スウォッチ レンダリングの機能強化

OpenMaya

DAG パスの機能強化

fPlaybackVisible は、再生時の可視性についての描画オーバーライドの設定が、DAG パスに関連付けられている DAG オブジェクトに設定されているかどうかを示します。

2 番目のメソッドは編集を適用解除した後、ネストされたアセンブリが 1 つでも無効化される前、および現在のリプリゼンテーションが inactivateRep() によって無効化される前に、performInactivate() によって呼び出されます。

これらのメソッドは、既存の preApplyEdits() および preUnapplyEdits() メソッドを補完します。

編集を適用または適用解除した後、これらのメソッドを使って追加の作業を行うことができます。既定の実装ではこれら 2 つの関数は何も行いません。

OpenMayaUI

M3dView の機能強化

アニメーション

ダイナミクス/FX

ランナップのサポートを強化するために、次のメソッドが MDynamicsUtil に追加されました。

モデリング

オープン データ

ファイル パスの解決

スタンドアローン メタデータ API (adsk::Data)

UI

その他

.NET API

このコマンドを使用して gc コレクションを強制することができます。

MUserData はネイティブ リソースを保持しています。.NET が MUserData のインスタンスを削除するときに MUserData が保持しているネイティブ リソースを解放しないようにするには、このアトリビュートを false に設定します。

サンプル プラグイン

devkit/plug-ins/blastCmd および /hlslShader のサンプル プラグインは現在はサポートされていません。

PyQt および PySide ウィジェットのベスト プラクティスの更新

maya.app.general.mayaMixin モジュールの MayaQWidgetBaseMixin クラスと MayaQWidgetDockableMixin クラスは、ウィジェットの自動命名、Maya のメイン ウィンドウへのウィジェットのペアレント化、ウィジェットのドッキングなどを行うメソッドを提供して、PySide ベースのウィジェットのインタラクションを簡略化します。詳細については、「PyQt および PySide ウィジェットのベスト プラクティス」を参照してください。