mental ray for Maya のダイナミック アトリビュート

次のダイナミック アトリビュートは、カスタム シェーダと連動して機能するようデザインされています。これらのアトリビュートの一部は、Maya ユーザ インタフェースにおいて既定では常に可視とは限りません。ただし、一度アトリビュートを作成すると、アトリビュート エディタ(Attribute Editor)追加のアトリビュート(Extra Attributes)セクションで値を表示して編集することができます。

ユーザ データ(User Data)

カスタム情報を、ライト、カメラ、オブジェクト、インスタンスなどといったシーンの要素に組み込むことができます。miData ダイナミック アトリビュートを使用して mental ray ユーザ データ(mental ray User Data)ノードを要素に接続し、mental ray シェーダからこのカスタム情報にアクセスできるようにします。

注:

次のワークフローを使用するには、データ アトリビュートが存在する mental ray シェーダを持っている必要があります。

  1. 次のコマンドを使用して mentalrayUserData ノードを作成します。
    createNode -n "miUserData" mentalrayUserData;
    

    mentalrayUserData ノードには、お使いの mental ray シェーダで必要とするフォーマットと一致するカスタム ユーザ データを含める必要があります。

  2. miUserData.messageをシェーダのデータに接続します。

    mentalrayUserData ノードは binaryDataasciiData という 2 つのアトリビュートで構成されます。お勧めの方法は asciiData です。asciiData アトリビュートをカスタム ユーザ データで埋め、mentalrayUserData.message プラグを使用して mental ray データに接続します。

    注: mentalrayUserData ノードは、mental ray シェーダに関連付けられている場合のみにトランスレートされます。
  3. miData アトリビュートは、次のようにして作成します。
    addAttr -ln "miData" -at message pSphereShape1;
    
  4. miData アトリビュートは、次のようにして userdata ノードに接続します。
    connectAttr -f miUserData.message pSphereShape1.miData;
    
    ヒント:

    マジック ナンバーを、ユーザ データに追加します。ブロックの 1 番目の値として追加するのが理想的です。これにより、シェーダがユーザ データを容易に認識できるようになります。

シャドウ シェーダを書き出す

このアトリビュートを使用して、フォトンが使用されている場合にも透明なシャドウを使用します。このアトリビュートはローカルに機能し、shadowEffectsWithPhotons アトリビュート(レンダー設定(Render Settings)コースティクスとグローバル イルミネーション > フォトン トレーシング(Caustics and Global Illumination > Photon Tracing)にある、直接イルミネーション シャドウ エフェクト(Direct Illumination Shadow Effects)設定)をマテリアル単位でオーバーライドするため、フォトンがオンになっている場合にも、シャドウ シェーダが書き出しされます。

このアトリビュートは、次のようにして作成します。

addAttr -ln miExportShadowShader -at bool phong1SG;

アニメーションの検出を無効にする

mental ray では、後続フレームを移動するときに、自動的にシーン オブジェクトのアニメーションと関連するシェーディング ノードが検出されます。アニメーション検出の最適化(Optimize Animation Detection)オプション(レンダー設定(Render Settings)ウィンドウの mental ray タブにある、オプション(Options)タブトランスレーション(Translation)セクション、パフォーマンス(Performance)サブセクション内)は、Maya ディペンデンシー グラフのプリスキャンも実行し、アニメートされたノードをより高速に検索して、アニメーション全体のアクセラレートされたトランスレーションに従って個々のノードをマークします。

既定のパフォーマンスがまだ最適になっていない場合や、標準検出アルゴリズムですべてのアニメーションが把握されていない場合に、mental ray でアニメートされたノードに関するヒントを手動で示す方法が存在します。

個々のインスタンスまたは DAG サブツリー全体を、アニメーションに関する考慮対象から除外する場合は、新しいダイナミック アトリビュート 'miAnimated'(boolean)を追加してオフに設定します。トランスフォーム ノードが見つかると、DAG 走査によって残りのサブツリーはアニメーション検出から除かれます(ノード自体は除かれません)。手動でのオーバーライドを有効にする場合は、アニメーション検出の最適化(Optimize Animation Detection)オプションをオフにする必要があります。

このアトリビュートは、次のようにしてシェイプ ノードへのオーバーライドとして作成します。

addAttr -ln miAnimated -at bool group1;

DG サイクル検出を無効にする

このアトリビュートを使用して、非常に複雑なシェーディング ネットワークが使用されている場合に、ディペンデンシー グラフにおけるサイクルの検出をオフにします。これによりパフォーマンスが改良されます。シェーディング ネットワークにおけるサイクルが原因で、mental ray for Maya が不安定になる場合があります。このアトリビュートを false に設定して、DG サイクルの検出(DG cycle detection)をオフにします。

このアトリビュートは、次のようにして作成します。

addAttr -at bool -ln "nodeCycleCheck" mentalrayGlobals

ジオメトリのオンデマンド トランスレーションを強制する

オブジェクトをオンデマンドで書き出し(Export Objects On Demand)オプションを使用すると、シーンのオブジェクトの処理を制御できます。このオプションは、カメラ ビューの範囲を越えたオブジェクトがあるシーンで特に効果的です。この場合、mental ray はカメラ ビューの範囲を越えたオブジェクトを処理しないので、処理時間が短縮されます。

このアトリビュートは、次のようにしてシェイプ ノードへのオーバーライドとして作成します。

addAttr -ln "miPlaceholder" -at bool pSphereShape1

カスタム ノードの自動ライト リンクを無効にする

注: ライト リンク モードが 4 に設定されている場合は、このアトリビュートは不要です。mental ray ライト リンクをサポートしないシェーダにのみ必要です。詳細については、一般的な mental ray ライト リンクを参照してください。

このアトリビュートを使用して、ノード単位で自動ライト リンクをオフにします(このアトリビュートを false に設定します)。これは、同じマテリアルをライト リンクの異なる複数のオブジェクトで使用する場合に便利です。この場合、このアトリビュートでライト リンクを無効にし、その後ライト ノードをシェーダのライト アトリビュートに手動で接続します。

このアトリビュートは、次のようにして作成します。

addAttr -ln "miLightLink" -at bool mib_illum_lambert1

ラベル

mental ray ラベルの書き出しを有効にするため、ジオメトリのトランスフォーム ノードでこのダイナミック アトリビュートが認識されます。mental ray ではこれらのラベルについてチェックを実行することはなく、単純に書き出します。現在のところ、ラベルのフレーム バッファはサポートされていません。

このアトリビュートは、次のようにして作成します。

addAttr -ln "miLabel" -at long nurbsSphere1

不透明度のカットアウト

miCutAwayOpacity (float)をマテリアルのシェーディング エンジンに追加します。

このアトリビュートは、複雑な 2D シェイプを透明度マッピングによりプレーンから切り出す、2D スタンドインまたはカード オブジェクトに便利です。

miCutAwayOpacity は不透明度のしきい値です。指定した値より不透明度の低いすべてのサーフェス ポイントは存在しないものとみなされます。たとえば、値 0.05 では、透明度 99.5% 以上のサーフェス ポイントがすべて除去されます。

このアトリビュートは、次のようにして作成します。

addAttr -longName "miCutAwayOpacity" -attributeType "float" shadingGroup1;

カスタム モーション ベクトル

mental ray for Maya では、ゼロ長のモーション ベクトルをサポートしています。カスタム ディスプレイスメント シェーダでモーション ベクトルを操作して、モーション ブラー ディスプレイスメントを生成することができます。アトリビュート miCustomMotion (boolean)true に設定されてマークされた幾何形状ノードのみが、カスタム モーションで考慮されます。

グローバル オプションであるカスタム ベクトルを書き出し(Export Custom Vectors)を使用して、この機能を制御することができます。既定では無効になっています。無効になっている場合は、どのオブジェクトにもカスタム モーション ベクトルが生成されません。この機能でも、mental ray レンダー設定でモーション ブラー(Motion Blur)が有効になっている必要があります。

このアトリビュートは、次のようにして作成します。

addAttr -ln "miCustomMotion" -at bool myShapeNode;

ここで myShapeNode はシェイプ ノードです。

ディスプレイスメント アニメーションを強制する

オブジェクトがアニメートされたディスプレイスメントを含むように指定する場合は、miDisplaceAnimation (boolean)ダイナミック アトリビュートをオブジェクトのシェイプ ノードに追加します。

これはトランスレーション エンジンに対するヒントであり、潜在的に費用のかかる DG の走査で、アニメートされたディスプレイスメントが検出されないようにします。

このアトリビュートは、次のようにして作成します。

addAttr -ln "miDisplaceAnimation" -at bool myShapeNode;

ポリゴン メッシュの三角書き出しを強制する

このオプションは、Maya のテッセレーションに基づいて、すべてのポリゴン メッシュをテッセレーションされた三角形として処理します。これによってメモリをより効率的に使用できるので、大きなポリゴン メッシュを持つ大規模なシーンをより少ないメモリ使用量でレンダーできます。

詳細については、三角化ポリゴンを書き出し(Export Triangulated Polygons)を参照してください。

さらに、ダイナミック アトリビュート miTriangles (boolean)の各シェイプ ノードもサポートされており、これによってシェイプ単位ベースでグローバル設定をオーバーライドします。このため、次の 2 つの共通シナリオがサポートされています。

このアトリビュートは、次のようにして作成します。

addAttr -ln "miTriangles" -at bool myMeshNode;

ライトから強制的にフォトンを放出する

それぞれの Maya ライトのアトリビュート エディタ(Attribute Editor)にあるアトリビュートの mental ray セクションで、コースティクスとグローバル イルミネーションに使用するフォトンの数を指定します。既定では、これは格納されるフォトンの数です。

物理的なシミュレーションを正しく行うには、放出されるフォトンの数を適正数より多めにします。これをサポートするため、mental ray ではディレクショナル ライト、ポイント ライト、およびスポット ライトで次の 2 つのアトリビュートを認識します。

'causticPhotonsEmit' (integer)

'globIllPhotonsEmit'(integer)

これらのアトリビュートが作成される場合に、フォトンの格納数に追加してトランスレートおよび書き出しされます。

これらのアトリビュートは、次のようにして作成します。

addAttr -ln "causticPhotonsEmit" -at "short" myLightShape;
addAttr -ln "globIllPhotonsEmit" -at "short” myLightShape;

フォトンのみのライト

mental ray のライトのプロパティであるフォトンのみは、Maya ライト ノードでダイナミック アトリビュートを使用して制御できます。

'miPhotonsOnly' (boolean)

ライト ノードでフォトン放出を有効にすると、このアトリビュートが認識されて mental ray にトランスレートされます。フォトン トレーシングのパフォーマンスを最適化するには、光源がフォトン放出でのみ考慮されるようにマークして、mental ray でディレクショナル ライトの効果を無効にします。

このアトリビュートは、次のようにしてライト シェイプ ノードへのオーバーライドとして作成します。

addAttr -ln "miPhotonsOnly" -at bool spotLightShape1

カスタム フラグ

Maya トランスフォーム ノードでは、拡張インスタンス フラグをすべて公開するわけではありませんが、mental ray ダイナミック アトリビュートを介して制御できます。

'miReflection' (integer)
'miRefraction' (integer)
'miTransparency' (integer)

次の値は、定義済みフラグ(ビット セット)へのインデックスです。

以上のアトリビュートは、次の例を使用して作成します。

addAttr -ln "miReflection" -at "enum" -enumName "Cast Off Receive Off:Cast On Receive On:Inherit:Cast On Receive Off:Cast Off Receive On" myTransformNode
addAttr -ln "miRefraction" -at "enum" -enumName "Cast Off Receive Off:Cast On Receive On:Inherit:Cast On Receive Off:Cast Off Receive On" myTransformNode
addAttr -ln "miTransparency" -at "enum" -enumName "Cast Off Receive Off:Cast On Receive On:Inherit:Cast On Receive Off:Cast Off Receive On" myTransformNode

反射と屈折のアトリビュートのいずれかが存在する場合、標準のトレース フラグは重視されなくなります。

'miFinalGather' (integer)

このアトリビュートは、既存のコースティクスとグローバル イルミネーションの標準フラグのスキームに従い、次の値をサポートします。

このアトリビュートは、次のようにして作成します。

addAttr -ln "miFinalGather" -at "enum" -enumName "Hide On:Cast Off Receive Off:Cast On Receive Off:Cast Off Receive On:Cast On Receive On:Inherit" myTransformNode

カスタム要素

現在インスタンス化されている Maya シェイプではなく、置換要素のファイル書き出しを有効にするには、次のダイナミック アトリビュートを使用します。

'miExportElement' (boolean)
'miElement' (string)

ブーリアン オプションを有効にした場合、置換要素はオブジェクト名として書き出しされ、それ以上チェックされることはありません。

これらのアトリビュートは、次のようにして作成します。

addAttr -ln "miExportElement" -at bool myTransformNode 
addAttr -ln "miElement" -dt "string" myTransformNode

トランスレーション用のカスタム フェノメナ

現在割り当てられている Maya シェーディング エンジンではなく別のマテリアルのトランスレーションを有効にするには、次のダイナミック アトリビュートを使用します。

'miExportMaterial' (boolean)
'miMaterial' (message)

ブーリアン オプションを有効にすると、置換マテリアル(通常は Maya シェーディング エンジンまたはカスタム ノードへの接続)がインスタンス マテリアルとしてトランスレートされます。関連付けられたノードは、マテリアル タイプのカスタム ノードであり、mental ray で通常のマテリアル記述を完全に置き換えるものとしてトランスレートされます。

これらのアトリビュートは、次のようにして作成します。

addAttr -ln "miExportMaterial" -at bool myTransformNode 
addAttr -ln "miMaterial" -at message myTransformNode

ラスタライザ シェーディング サンプルのオーバーライド

ラスタライザ シェーディング精度のグローバル オプション(mental ray: シェーディング サンプル)は、オブジェクト単位/インスタンス単位ベースでオーバーライドすることができます。オブジェクト単位のオーバーライドには、mental ray セクションで、オブジェクトのシェイプ ノードのアトリビュート エディタ(Attribute Editor)にあるシェーディング精度(Shading Quality)アトリビュートを介してアクセスできます。インスタンス単位のオーバーライドの場合は、次のダイナミック アトリビュート

'miShadingSamples' (float)

が Maya シェイプ ノードとトランスフォーム ノード上で認識され、その値が負でない場合は mental ray にトランスレートされます。

このアトリビュートは、次のようにして作成します。

addAttr -ln "miShadingSamples" -at "float" myTransformNode

被写界深度サンプルのオーバーライド

Maya の 被写界深度エフェクト(カメラ上で制御されます)では、mental ray カスタム レンズ シェーダを使用して true 3D 被写界深度レンダリングを実行し、1 ピクセルあたり複数の光線を放ってスムーズな結果を取得します。

これらの追加レンズ サンプルの数は 4 に事前定義されていますが、2 とおりの方法で調整することができます。

次のダイナミック アトリビュート

'dofLensSamples' (integer)

を mental ray グローバル ノードに追加して、シーン内の全カメラのすべての被写界深度エフェクトの既定値を新しく定義することができます。

このアトリビュートは、次のようにして作成します。

addAttr -ln "dofLensSamples" -at "short" mentalrayGlobals 

カメラ単位のオーバーライドも、次のダイナミック アトリビュート

'miLensSamples' (integer)

を Maya カメラ シェイプ ノードに追加することでサポートされます。

このアトリビュートは、次のようにして作成します。

addAttr -ln "miLensSamples" -at "short" perspShape

オブジェクトが焦点から外れたときには、サンプル数を増やす必要があることが頻繁にあります。

メモリ モード

mental ray では統合されたレンダリング(プレビューとバッチ処理)中のメモリの消費量を監視し、メモリ低下状態に対処して、Maya をクラッシュさせるような mental ray の致命的なメモリ エラーを回避します。既定では、メモリ要求が現在設定されているメモリ制限プラス 20% の「ゾーン」(取り付けられている物理メモリの 80% までというメモリ制限の推奨設定に一致します)を超えると、mental ray は中止されます。

この機能は、次のダイナミック アトリビュートを mental ray グローバル ノードに追加することで調整できます。

'memoryMode' (enum: none, report, inquiry, abort, release)

mode の値は次のとおりです。

mental ray グローバル ノードの既存のアトリビュート memoryZone を使用することで、メモリ処理を開始して mode に従って進行するタイミングを定義する zone (メモリ制限の割合)を制御します。

このアトリビュートは、次のようにして作成します。

addAttr -ln "memoryMode" -at "enum" -enumName "None:Report:Inquiry:Abort:Release" mentalrayGlobals

ネットワーク ベイク処理をオフにするには

mental ray では、テクスチャの統合ベイク処理における Satellite の使用を制御できるアトリビュートが備えられています。既定では、mental ray はこのアトリビュートを true に設定します。

setAttr miDefaultOptions.lightMapsNetwork false

ただし、アクティブなベイク処理セットで単一マップにベイク処理(Bake to one map)が有効になっている場合など、サポートしていないケースが検出されたときには、実際のベイク処理の実行に対してこのオプションが無効化される場合があります。

アンビエント オクルージョン(Ambient Occlusion)

透明度が係数の場合にアンビエント オクルージョンをより正確に計算するには、Occlusion Deep アトリビュートをオンにします。次のダイナミック アトリビュートを使用して、このアトリビュートを使用できます。

addAttr -at "bool" -ln "occlusionDeep" textureBakeSet1

ファイナル ギャザー レイからオブジェクトを隠す

ダイナミック ブーリアン アトリビュートの miFinalGatherHide をオブジェクトのシェイプ ノードに追加することで、ファイナル ギャザー レイからは見えなくなります。これは、ファイナル ギャザーから見るとオブジェクトがブラック ホールに変わる、ファイナル ギャザーの投影(Final Gather Cast)フラグとファイナル ギャザーの受像(Final Gather Receive)フラグの無効化とは異なります。このアトリビュートを次のように設定します。

addAttr -ln "miFinalGatherHide" -at bool myShapeNode;

楕円フィルタリング(Elliptical filtering)

楕円フィルタリングで高度な機能を使用するには、次のダイナミック アトリビュートを設定します。これらのアトリビュートの詳細については、「楕円フィルタリングを使用した高精度テクスチャ フィルタ」を参照してください。

バイリニア テクスチャ ピクセル補間

楕円領域がテクスチャ ピクセルよりも小さい場合、miEllipticalBilinear を 1 (TRUE)に設定して、バイリニア テクスチャ ピクセル補間をオンにし、よりブラーの強いイメージを作成することができます。

addAttr -longName "miEllipticalBilinear" -at bool -defaultValue 1 file1; 

最大偏心

楕円の最大偏心を設定するには、miEllipticalEccMax ダイナミック アトリビュートを使用します。このアトリビュートの値は 1.0 以上でなければなりません。楕円の偏心は大半径÷小半径で求められます。偏心の値が大きいと、レンダリング時間が長くなります。したがって、偏心が指定された最大値を超える場合、これに従って、楕円の小半径も長くなります。

addAttr -longName "miEllipticalEccMax" -at "float" -defaultValue 4.0 -minValue 0.001 -maxValue 40.0 file1; 

サンプリング ポイント間の距離

テクスチャ空間の 3 つのサンプリング ポイントそれぞれについて、残りの 2 つのサンプリング ポイントと中央のサンプリング ポイントの間の最大距離を設定できます。すなわち、中央のサンプリング ポイントが(0, 0)にある場合、残りの 2 つのポイントは、この中央位置から半径 DiscR の円形内に含まれている必要があります。DiscR の値は次のように設定します。

addAttr -longName "miEllipticalDiscR" -at "float" -defaultValue 0.3 -minValue 0.001 -maxValue 1.0 file1; 

円半径の設定

投影スクリーン、つまり空間円のサイズの設定には miEllipticalCircleR アトリビュートを使用します。値が大きければ大きいほど、ブラーも大きくなりますが、値を小さくすると、エイリアシングが増大することがあります。0.4 ~ 1.0 の範囲の値を使用します。

addAttr -longName "miEllipticalCircleR" -at "float" -defaultValue 0.8 -minValue 0.001 -maxValue 1.0 file1;

mental ray 派生物(mental ray Derivatives)

このアトリビュートを使用するのは、既定の mental ray for Maya 派生物(mental ray for Maya derivatives)ではなく、(シェーダと相互に作用させるために) NURBS およびサブディビジョン サーフェス(subdivision surfaces)用の mental ray 派生物(mental ray derivatives)を使用する場合です。

このアトリビュートは、次のようにしてシェイプ ノード上に作成します。

addAttr -ln "miDerivatives" -at "enum" -en "none:first:second:both" -dv 0 pSphereShape1;

次の 0 ~ 3 の値が -miDerivatives でサポートされます。

mental ray レイ オフセット(mental ray Ray Offset)

このアトリビュートを使用して、光線をジオメトリからどの程度オフセットするかを指定します。レイ オフセット(Ray Offset)は、レイ トレースされたセルフ シャドウ アーティファクトを含むシーンで役立ちます。

このアトリビュートは、次のようにしてシェイプ ノード上に作成します。

addAttr -ln miRayOffset -at "float" -dv 0.0 pSphereShape1;

シャドウまたはレイ トレーシングのエフェクトに現れるテッセレーションなど、シェーディングのアーティファクトを解決する場合に、このアトリビュートを頻繁に使用します。