次のダイナミック アトリビュートは、カスタム シェーダと連動して機能するようデザインされています。これらのアトリビュートの一部は、Maya ユーザ インタフェースにおいてデフォルトでは常に可視とは限りません。ただし、一度アトリビュートを作成すると、アトリビュート エディタの追加のアトリビュート(Extra Attributes)セクションで値を表示して編集することができます。
カスタム情報を、ライト、カメラ、オブジェクト、インスタンスなどといったシーンのエレメントに組み込むことができます。miData ダイナミック アトリビュートを使用して mental ray ユーザ データ(mental ray User Data)ノードをエレメントにコネクトし、mental ray シェーダからこのカスタム情報にアクセスできるようにします。
createNode -n "miUserData" mentalrayUserData;
mentalrayUserData ノードには、お使いの mental ray シェーダで必要とするフォーマットと一致するカスタム ユーザ データを含める必要があります。
mentalrayUserData ノードは binaryData と asciiData という 2 つのアトリビュートで構成されます。お勧めの方法は asciiData です。asciiData アトリビュートをカスタム ユーザ データで埋め、mentalrayUserData.message プラグを使用して mental ray データにコネクトします。
addAttr -ln "miData" -at message pSphereShape1;
connectAttr -f miUserData.message pSphereShape1.miData;
このアトリビュートを使用して、フォトンが使用されている場合にも透明なシャドウを使用します。このアトリビュートはローカルに機能し、shadowEffectsWithPhotons アトリビュート(レンダー設定(Render Setting)のコースティクスとグローバル イルミネーション > フォトン トレーシング(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;
このアトリビュートを使用して、非常に複雑なシェーディング ネットワークが使用されている場合に、ディペンデンシー グラフにおけるサイクルの検出をオフにします。これによりパフォーマンスが改良されます。シェーディング ネットワークにおけるサイクルが原因で、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
このアトリビュートを使用して、ノード単位で自動ライト リンクをオフにします(このアトリビュートを 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;
オブジェクトがアニメートされたディスプレイスメントを含むように指定する場合は、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 ライト ノードでダイナミック アトリビュートを使用して制御できます。
ライト ノードでフォトン放出を有効にすると、このアトリビュートが認識されて mental ray にトランスレートされます。フォトン トレーシングのパフォーマンスを最適化するには、光源がフォトン放出でのみ考慮されるようにマークして、mental ray でディレクショナル ライトの効果を無効にします。
このアトリビュートは、次のようにしてライト シェイプ ノードへのオーバーライドとして作成します。
addAttr -ln "miPhotonsOnly" -at bool spotLightShape1
ポリゴン メッシュをサブディビジョン ベース メッシュ プリミティブとしてトランスレートする
近似エディタ(Approximation Editor)を使用するかまたは手動で、ポリゴン メッシュをサブディビジョン サーフェスの近似(つまり mentalraySubdivApprox ノード)に割り当てて、ポリゴン メッシュをスムースすることができます。Maya を開始すると、サブディビジョン近似ノードでは、サブディビジョン ベース メッシュ プリミティブではなく ccmesh プリミティブを生成します。
を、mentalraySubdivApprox ノードに追加します。これをオフにすると、mental ray for Maya ではスムースされたポリゴン メッシュをサブディビジョン ベース メッシュ プリミティブにトランスレートします。これによって頻繁に速度が遅くなり、ccmesh プリミティブより多くのメモリが必要になる場合があります。
このアトリビュートは、次のようにしてシェイプ ノードへのオーバーライドとして作成します。
addAttr -ln "miExportCCMesh" -at bool mentalraySubdivApprox1
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
ディスク スワッピングを有効にするには、次のダイナミック アトリビュート
'miDiskSwapLimit' (integer)
'miDiskSwapDir' (string)
を mental ray グローバル ノードに追加します。一度有効にすると、後から同じ mental ray セッション(Maya セッション)でディスク スワッピングを無効にすることはできません。
addAttr -ln "miDiskSwapLimit" -at "short" mentalrayGlobals
addAttr -ln "miDiskSwapDir" -dt "string" mentalrayGlobals
mental ray では統合されたレンダリング(プレビューとバッチ処理)中のメモリの消費量を監視し、メモリ低下状態に対処して、Maya をクラッシュさせるような mental ray の致命的なメモリ エラーを回避します。デフォルトでは、メモリ要求が現在設定されているメモリ制限プラス 20% の「ゾーン」(取り付けられている物理メモリの 80% までというメモリ制限の推奨設定に一致します)を超えると、mental ray は中止されます。
この機能は、次のダイナミック アトリビュートを mental ray グローバル ノードに追加することで調整できます。
'memoryMode' (enum: none, report, inquiry, abort, release)
mental ray グローバル ノードの既存のアトリビュート memoryZone を使用することで、メモリ処理を開始して mode に従って進行するタイミングを定義する zone(メモリ制限の割合)を制御します。
addAttr -ln "memoryMode" -at "enum" -enumName "None:Report:Inquiry:Abort:Release" mentalrayGlobals
String オプションのサポート(Maya 2008 以前)
多くの機能は string オプションで定義することが可能で、解析エラーを最小化します。次のダイナミック アトリビュートを使用します。
'miDefaultOptions.stringOptions' (compound, multi):
これには name、type、value の 3 つの子があり、すべての string タイプは mental ray オプションに必要な情報を提供します。その他の子も設定できますが、mental ray でサイレントに無視されます。
setAttr -type "string"
miDefaultOptions.stringOptions[0].name "motion factor";
setAttr -type "string"
miDefaultOptions.stringOptions[0].type "scalar";
setAttr -type "string"
miDefaultOptions.stringOptions[0].value "1.0";
別の配列インデックスを使用すると、その他のアトリビュートを設定できます。既存のインデックスを再使用すると、対応するオプションが上書きされます。
次のキーワードは、type および value フィールドで認識されます。
Maya 2008 ではこのアトリビュートは自動的に作成されます。Maya 2008 より前のバージョンのシーンの場合、アトリビュートを次のようにして作成します。
addAttr -at compound -nc 3 -ln "stringOptions" -multi miDefaultOptions;
addAttr -dt "string" -p "stringOptions" -ln "name" miDefaultOptions;
addAttr -dt "string" -p "stringOptions" -ln "value" miDefaultOptions;
addAttr -dt "string" -p "stringOptions" -ln "type" miDefaultOptions;
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)
楕円フィルタリングで高度な機能を使用するには、次のダイナミック アトリビュートを設定します。これらのアトリビュートの詳細については、『mental ray for Maya リファレンス』マニュアルの「Auxiliary Functions」セクションを参照してください。
楕円領域がテクスチャ ピクセルよりも小さい場合、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;