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

次のダイナミック アトリビュートは、カスタム シェーダと連動して機能するようデザインされています。これらのアトリビュートの一部は、Maya ユーザ インタフェースにおいてデフォルトでは常に可視とは限りません。ただし、一度アトリビュートを作成すると、アトリビュート エディタ追加のアトリビュート(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 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;

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

ポリゴン メッシュをサブディビジョン ベース メッシュ プリミティブとしてトランスレートする

近似エディタ(Approximation Editor)を使用するかまたは手動で、ポリゴン メッシュをサブディビジョン サーフェスの近似(つまり mentalraySubdivApprox ノード)に割り当てて、ポリゴン メッシュをスムースすることができます。Maya を開始すると、サブディビジョン近似ノードでは、サブディビジョン ベース メッシュ プリミティブではなく ccmesh プリミティブを生成します。

以前の動作に戻すには、次のダイナミック アトリビュート

'miExportCCMesh' (boolean)

を、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 for Maya リファレンス』マニュアルを参照してください。

メモリ モード

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

String オプションのサポート(Maya 2008 以前)

多くの機能は string オプションで定義することが可能で、解析エラーを最小化します。次のダイナミック アトリビュートを使用します。

'miDefaultOptions.stringOptions' (compound, multi):

これには nametypevalue の 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 フィールドで認識されます。

mray タイプ string のタイプ string の値

miBoolean

"bool[ean]"

'on' 'off' 'true' 'false' '0' '1'

miInteger

"int[eger]"

負の値

miScalar

"scal[ar]"

浮動小数点値

miScalar

"float"

浮動小数点値

miVector

"vec[tor]"

3 桁の浮動小数点

miColor

"col[or]"

4 桁の浮動小数点

miString

"[string]"

文字列

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;
ヒント:Maya 2009 から、miDefaultOptions のアトリビュート エディタを使用して文字列オプションを設定できるようになりました。詳細については、 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; 

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

テクスチャ空間の 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;