mental_ray_string_オプション

3ds Max 2011 で導入された mental ray_string_オプション では、インタフェース: mental_ray_string_options を使用して、レンダリング オプションを切り替えたり、UI で使用できないパラメータを設定できます。

概要:

これまで、mental ray オプションは mental ray のレンダラー ユーザ インタフェースのコントロールにより生成され、レンダラーに送信され、レンダリング処理がコントロールされてきました。

最新バージョンの mental ray レンダラーでサポートされる一部の機能は、さまざまな理由によって 3ds Max ユーザ インタフェースに公開されない場合があります。

文字列オプションにより、MAXScript を使用してこれらの機能にアクセスして、それらを試した後で正式にサポートする方法が提供されます。

特に注意すべき点

mental ray でサポートされるが 3ds Max の mental ray のユーザ インタフェースにエクスポーズされない文字列オプションについて、以下に説明します。

トピック ナビゲーション  

プログレッシブ レンダリング

インポートン

イラディアンス パーティクル

イメージ ベースのライティング

ファイナル ギャザー モード

 

プログレッシブ レンダリング

既定では、mental ray によってイメージに対する計算が実行されます。これによって、イメージが矩形のバケットに分割され、最終形に対してできるだけ平行となるようにレンダリングされます。これは最高品質でより大きなシーンの分散レンダリングを行う場合に大変適しています。これには、すべてのバケットが完了した後でないと最終的なイメージを確認できないという欠点があります。

一方、ダリング モードでは、増分で品質を向上させながらフプログレッシブ レンル解像度でイメージが計算および送信されます。mental ray へのインタラクティブ レンダリング アプリケーションの実装をサポートしており、レイ トレースや間接光のような計算量の多い効果を出すことができます。最良のパフォーマンスは、マシンのメモリに完全に収まる中サイズ モデルの場合に達成できます。

特定の高度なレンダリング機能については、速度を増加させるためにサポートされていません。

プログレッシブ モードの文字列オプション:

mental_ray_string_options.AddOption "progressive" <Boolean>OnOff 	 

プログレッシブ レンダリングをオンまたはオフにします。

設定されない場合、既定値がオフになっています。

   

mental_ray_string_options.AddOption "progressive subsampling size" <Integer>Size   

最初のイメージの粗いサンプリングを有効にするかコントロールします。

設定されない場合、既定値が 0 になっており、サブサンプルが無効になっています。

1 より大きい値を設定すると、ピクセルのブロック単位でサブサンプルが有効化されます。

ここで設定する値によって、ピクセル ブロックのサイズ(サイズ X サイズ)が指定されます。このピクセル ブロックにおいて、初期サンプルが最初に配置され、通常は低解像度の粗いイメージとして表示されます。

サイズが大きくなるほど、初期イメージが粗くなります。

0 または 1 を設定すると、この機能が無効化されます。

2 を設定すると、2x2 = 4 ピクセルのブロックのサンプルが計算されます。

タスク サイズは複数のサブサンプル サイズを含むものにする必要があります。このように設定しなかった場合、可能な限り最も近い値に自動的に調整されます。

ブロック内のまだレンダリングされていないピクセルは、サブサンプル モードの設定に従ってカラー値で塗り潰されます(以下を参照してください)。

   

mental_ray_string_options.AddOption "progressive sampling mode" <String>modeName 

レンダリングされていないサブサンプル ピクセルの外観をコントロールします。

有効な値は次のとおりです。

"detail"(既定値) - レンダリングされていないピクセルは、最も近い周囲の完了したサンプルから補間されます。これは低解像度のスムースなイメージとして表示されます。

"sparse" - レンダリングされていないピクセルは黒に設定されます。

   

mental_ray_string_options.AddOption "progressive sampling pattern" <String>patternName 

サンプルが計算されるシーケンスをコントロールします。

有効な値は次のとおりです。

"scatter"(既定値)- ピクセルは擬似ランダムな順序でレンダリングされます。

"linear" - ピクセルはピクセル ブロック内で 1 行ごとの順序で計算されます。

   

mental_ray_string_options. AddOption "progressive min samples" <Integer>minSamples 

レンダリングするピクセルあたりの最小サンプル数を設定してから、次に示すその他の基準について検討します。

既定値は 4 です。

   

mental_ray_string_options.AddOption "progressive max samples" <Integer>maxSamples 

プログレッシブ レンダリングを停止するピクセルあたりのサンプル数を設定します。

既定値は 100 です。

ここで設定するピクセルあたりのサンプル数がレンダリングされると、プログレッシブ レンダリングがその他の停止基準に関係なく自動的に停止します。

   

mental_ray_string_options.AddOption "progressive max time" <Integer>maxTime 

プログレッシブ レンダリングを停止する時間を秒で設定します。

既定値は無制限です。

   

mental_ray_string_options.AddOption "progressive error threshold" <Float>threshold 

プログレッシブ レンダリングを停止するエラー スレッショルドを設定します。

既定値は 0.05 です。

ここで設定した相対的なエラー スレッショルドに達すると、プログレッシブ レンダリングが自動的に停止します。

値 0.0 は完全な品質を目標としており、この値を設定するとレンダリングは停止しません。

0.5 はすでに非常に低い品質にあるレンダリングを停止します。

この設定は、プログレッシブ レンダリングを停止するかどうかの判断基準として優先度が最も低くなります。

例:

プログレッシブ レンダリング オプションを確認できるシンプルなスクリプトです。

macroScript MR_Progressive category:"MXS Help"
(
global MentalRayStringOptions_Progressive
try(destroyDialog MentalRayStringOptions_Progressive)catch()
rollout MentalRayStringOptions_Progressive "mr Progressive Rendering"
(
checkbutton chk_progressiveOn ">Enable Progressive Rendering" width:190 align:#center
spinner spn_samplingSize "Sampling Size:" range:[1,128,8] type:#integer fieldwidth:50 tooltip:"The size of pixel blocks in the initial coarse pass. 0 disables."
 
label lbl_mode "Sampling Mode:" across:2 align:#left offset:[0,2]
dropdownlist ddl_samplingMode items:#("detail", "sparse") width:80 align:#right offset:[1,0] tooltip:"Controls the appearance of not yet rendered subsampling pixels. Detail=Nearest Color, Coarse=Black"
label lbl_pattern "Sampling Pattern:" across:2 align:#left
dropdownlist ddl_samplingPattern items:#("scatter", "linear") width:80 align:#right offset:[1,-2] tooltip:"Controls the sequence in which the samples are computed. Scatter=Quasi-Random; Linear=Line By Line In Block"
 
spinner spn_samplingMinSamples "Sampling Min.Samples:" range:[1,1000,4] type:#integer fieldwidth:50 tooltip:"Min. samples per pixel to render before considering any of the Stop Criteria below."
spinner spn_samplingMaxSamples "Sampling Max.Samples:" range:[1,1000,100] type:#integer fieldwidth:50 tooltip:"Max. samples per pixel to render before stopping."
spinner spn_MaxTime "Max.Time (sec):" range:[0,1000,10] type:#integer fieldwidth:50 tooltip:"Max. time to render before stopping."
spinner spn_errorThreshold "Error Threshold:" range:[0.01,1,0.05] scale:0.01 type:#float fieldwidth:50 tooltip:"Error Threshold to reach before stopping."
 
button btn_quickRender "QUICK RENDER" width:190 align:#center height:30
button btn_clearSettings "Remove Settings And Close" width:190 align:#center tooltip:"Pressing this button will clear the settings from memory and close. Closing with [X] will keep the settings."
fn removeProgressiveOptions =
(
local m = mental_ray_string_options
for i = m.numOptions to 1 by -1 where matchPattern (m.GetOptionString i) pattern:"progressive*"do
m.removeOption i
)
 
fn setProgressiveOptions =
(
removeProgressiveOptions()
local m = mental_ray_string_options
m.addOption "progressive" chk_progressiveOn.state
m.addOption "progressive subsampling size" spn_samplingSize.value
m.addOption "progressive subsampling mode" ddl_samplingMode.selected
m.addOption "progressive subsampling pattern" ddl_samplingPattern.selected
m.addOption "progressive min samples" spn_samplingMinSamples.value
m.addOption "progressive max samples" spn_samplingMaxSamples.value
m.addOption "progressive max time" spn_MaxTime.value
m.addOption "progressive error threshold" spn_errorThreshold.value
)
fn getProgressiveOptions =
(
local m = mental_ray_string_options
for i = 1 to m.numOptions do
case m.GetOptionString i of
(
"progressive": chk_progressiveOn.state = m.GetOptionValue i
"progressive subsampling size": spn_samplingSize.value = m.GetOptionValue i
"progressive subsampling mode": ddl_samplingMode.selection = findItem ddl_samplingMode.items (m.GetOptionValue i)
"progressive subsampling pattern": ddl_samplingPattern.selection= findItem ddl_samplingPattern.items (m.GetOptionValue i)
"progressive min samples": spn_samplingMinSamples.value = m.GetOptionValue i
"progressive max samples": spn_samplingMaxSamples.value = m.GetOptionValue i
"progressive max time": spn_MaxTime.value = m.GetOptionValue i
"progressive error threshold": spn_errorThreshold.value = m.GetOptionValue i
)
)
on chk_progressiveOn changed state do setProgressiveOptions()
on spn_MaxTime changed value do setProgressiveOptions()
on spn_samplingSize changed value do setProgressiveOptions()
on spn_samplingMinSamples changed value do setProgressiveOptions()
on spn_samplingMaxSamples changed value do setProgressiveOptions()
on spn_errorThreshold changed value do setProgressiveOptions()
on ddl_samplingMode selected value do setProgressiveOptions()
on ddl_samplingPattern selected value do setProgressiveOptions()
on btn_quickRender pressed do max quick render
on btn_clearSettings pressed do
(
removeProgressiveOptions()
destroyDialog MentalRayStringOptions_Progressive
)
on MentalRayStringOptions_Progressive open do getProgressiveOptions()
)--end rollout
createDialog MentalRayStringOptions_Progressive 200 250
)--end script
 

インポートン

インポートンは「仮想パーティクル」です。これらはいくつかの点、たとえばシーン内でバウンドするといった点で、フォトンと類似しています。その一方、大きな違いもあります。たとえば、インポートンはフォトンと異なりエネルギーを分散しません。代わりに、インポートンには特定の位置にあるイルミネーションが最終的なイメージに関与する係数を説明するカラーが含まれます。このようにして、インポートンは限られた計算リソースで最良のイメージを得るために計算労力をどのように分散するべきかについて、レンダラーに情報を与えます。

フォトンと異なり、インポートンはカメラから放出され、ライトの方向に(つまりフォトンと逆方向に)バウンドします。ただし、二重発光によって、フォトン シェーダをインポートンに適用することが可能です。簡素化の都合上、mental ray では新しいタイプのシェーダは導入されていませんが、インポートン用のフォトン シェーダは使用されます。

インポートンはレンダリングの品質とパフォーマンスを向上させる補助的なメカニズムとして使用されます。インポートンはイラディアンス パーティクルの質を後押しする主要なメカニズムとして使用されます。 mental ray は GI フォトン マップの質を向上させる際にも使用されます。mental ray によって、(インポートンの使用により決定される)特定の変数マージ距離におけるマージによるフォトン マップ サイズの大幅な縮小が実現します。このような変数マージ距離は、定数マージ距離より優れています。

インポートンは、有効にした場合、フォトン マップの作成前に放出されます。インポートンは GI フォトン マップの作成時に使用されます。インポートンは GI フォトン マップの最も近い周辺検索に関連しないため、フォトン マップが作成されると破棄されます。

インポートン文字列オプション:

mental_ray_string_options.AddOption "importon" <Boolean>OnOff 

true に設定されると、インポートンが放出され、インポートン マップが作成されます。

設定されていない場合の既定値はオフです。

   

mental_ray_string_options.AddOption "importon density" <Float>density

カメラから放出される、ピクセルあたりのインポートンの概数を指定します。

現在の実装におけるこのオプションの最小値は 0.02、つまり 50 ピクセルあたりおよそ 1 インポートンとなります。

既定かつ推奨される値は 1.0 です。

値が低いほどインポートンの放出速度が高くなりますが、最適なフォトン マップは生成されにくくなり、最終イメージの品質も低下します。

   

mental_ray_string_options.AddOption "importon merge" <Float>merge 

近いインポートンをマージするために使用されるワールド空間距離を指定します。

既定値は 0.0 で、マージは無効化されています。

   

mental_ray_string_options.AddOption "importon trace depth" <Integer>traceDepth

シーン内のインポートン拡散をコントロールします。

0.0(既定値)に設定すると、インポートンは拡散反射光で散乱しません。

場合によっては、複数の拡散反射光バウンスを使用することが必要になります。ファイナル ギャザーとの組み合わせが使用されている場合や、"importon traverse" オプションがオフに切り替わっている場合がこれに該当します(以下を参照)。

   

mental_ray_string_options.AddOption "importon traverse" <Boolean>traverse 

カメラから放出されるインポートンの特殊な動作が有効化されます。これらのインポートンは、完全に不透明なジオメトリによってもブロックされません。代わりに、レイ上にあるジオメトリとのすべての交点が、カメラから無限に保存されます。

これによって、非常に多数のインポートンがシーンに保存されます。ただし、カメラ関数の可視性によるインポートンの分散における不連続性は取り除かれます。

既定値はオンです。

例:

インポートン レンダリング モードを切り替える方法の例を示します。

m = mental_ray_string_options
for i = 1 to m.numOptions do
m.removeOption 1 --remove any previous options
m.addoption "importon" true
m.addoption "importon density" 1.0

イラディアンス パーティクル

このアルゴリズムは、重要性サンプリングに基づきグローバル イルミネーションを計算する斬新な方法です。重要性サンプリングは、ファイナル ギャザーと組み合わされるグローバル イルミネーション フォトン トレーシングのような既存のソリューションよりもはるかに速く望ましい品質まで集約される傾向があります。

レンダリング開始前に、インポートンはカメラからシーン内に放出され、イラディアンス パーティクルと呼ばれる新しい種類のパーティクルとして収集されます。これらは、それぞれの位置に入ってくる直接光の量(「放射照度」)に関する情報、またオプションで(間接パスが有効になっている場合は)それぞれの位置における間接照射量に関する情報を伴います。レンダリング時、保存されたパーティクルは、シェーディング ポイントにおけるイラディアンスを予測する目的で使用されます。イラディアンス パーティクルに関して直接光のみが収集される場合、これは間接光の 1 バウンスに相当します。

イラディアンスは、パーティクルの各位置における計算済みの値から補間することもできます。

イラディアンス パーティクル アルゴリズムによって、mental ray における従来のグローバル イルミネーション アルゴリズムの間接光インタラクションの一部がシミュレートされます。このため、イラディアンス パーティクルが有効化されると、mental ray ではグローバル イルミネーション フォトン トレーシングが(オンの場合は)自動的にオフとなります。これは、外部アプリケーションが、インポートンに必要なフォトン シェーダがアタッチされた mental ray シーンを生成するよう要求された場合に共通の状況です。コースティックスをイラディアンス パーティクルとともに使用できます。コースティックスはイラディアンス パーティクルでシミュレートできない間接光効果を捕捉する際に使用されます。ファイナル ギャザーとイラディアンス パーティクルの両方が有効化されている場合、ファイナル ギャザーが優先され、イラディアンス パーティクルは自動的にオフに切り替わります。したがって、イラディアンス パーティクルを有効にするために文字列オプションを使用するときは、FG を明示的にオフにすることが重要です。

イラディアンス パーティクルでは特殊なイメージ ベースの照明スタイル機能がサポートされます。この機能は間接パスの数を -1 に設定することによって有効化できます。この場合、拡散反射光バウンスではなく、環境マップ ライティングのみが考慮されます。補間が無効となっている場合は、環境プレサンプリング マップのみが作成されるため、計算前の手順は必要ありません。補間が有効となっている場合は、パーティクルが計算前パスに通常の方法で放出されますが、補間ポイントとしてのみ使用されます。

イラディアンス パーティクル文字列オプション:

mental_ray_string_options.AddOption "irradiance particles" <Boolean>OnOff 

有効となっている場合、イラディアンス パーティクルは、グローバル発光フォトンがオンになっている場合はそれらを無効化しながら間接光をシミュレートするために使用されます。

ファイナル ギャザーが有効になっている場合、この設定は無視されます。

設定されていない場合の既定値はオフです。

   

mental_ray_string_options.AddOption "irradiance particles rays" <Integer>Rays

イラディアンスを予測する際に放射するレイの数をコントロールします。

最小数は 2 です。

既定数は 256 です。

   

mental_ray_string_options.AddOption "irradiance particles indirect passes" <Integer>indirectPasses 

間接光の生じ得るパス数。

この値が 0 より大きい場合、一連のパスが実行され、すべてのパーティクル位置で入ってくるイラディアンスが収集されます。このため、イラディアンス パーティクルには直接光と間接光の両方の情報が含まれます。

この値が 0(既定値)の場合、イラディアンス パーティクルには間接光の情報のみが含まれます。

値が -1 の場合、拡散反射光バウンスではなく、環境マップ ライティングのみが考慮されます。補間が無効となっている場合は、環境プレサンプリング マップのみが作成されるため、計算前の手順は必要となりません。補間が有効となっている場合は、パーティクルが計算前パスに通常の方法で放出されますが、補間ポイントとしてのみ使用されます。

   

mental_ray_string_options.AddOption "irradiance particles scale" {<Float>Scale|<Point3>RGBScale}

レンダリング時のイラディアンスの強度に関するグローバル スケール係数です。

美的観点からの制御をおこなうためのグローバル調整オプションです。

R、G、B を一度に設定するための 1 つの浮動小数点値として、または 3 つのカラー チャネルを別々にコントロールするための Point3 値として指定できます。

既定値は 1.0 です。

   

mental_ray_string_options.AddOption "irradiance particles interpolate" {<Integer>index|<String>modeName} 

このオプションは、補間の使用をコントロールするために使用されます。数値または文字列で指定されます。

0 - 補間しない

1 - 常に補間

2 - 2 番目のレイに対してのみ補間(アイ レイは補間しない。反射、屈折などは補間する)

または、"never"、"always"、"secondary" といった文字列に設定します。

既定値は 1("always")です。

   

mental_ray_string_options.AddOption "irradiance particles interppoints" <Integer>points 

補間に使用する最も近い周辺ポイントの数(上記を参照)。

既定値は 64 です。

   

mental_ray_string_options.AddOption "irradiance particles env" <Boolean>OnOff 

このフラグによって、イラディアンス計算用の環境マップの使用が有効化されます。

有効となっている場合、別個のパーティクル マップが(環境シェーダがある場合に)環境用に作成され、レンダリング時に使用されます。

既定値はオンです。

   

mental_ray_string_options.AddOption "irradiance particles env scale" {<Float>Scale|<Point3>RGBScale} 

環境が関わるイラディアンスのスケール係数。

単一の浮動小数点値または Point3 値として指定できます。

このスケール係数は、環境イラディアンスにのみ適用されるため、相対的となります。環境イラディアンスは、ユーザが「イラディアンス パーティクル スケール」の文字列オプションを使用してグローバル スケール係数を指定した場合、実際にはさらにスケールされることがあります。

たとえば、環境スケールが 2.0 に設定されていて、グローバル スケールが 3.0 の場合、環境イラディアンスの実際のスケール係数は 6.0 (2.0 x 3.0)になります。

既定値は 1.0 です。

   

mental_ray_string_options.AddOption "irradiance particles env rays" <Integer>rays

環境マップから入ってくるイラディアンスの計算に使用されるレイの数。

この数は、特に環境のほとんどがシーン ジオメトリでカバーされる場合(典型例: 1 つまたは 2 つの窓のある部屋)に、通常のイラディアンス計算に使用されるレイの数よりもはるかに多くなります。

外側シーンの場合は、より少ない数のレイで問題なく動作します。

既定値が取得され、「イラディアンス パーティクル レイ」の実際の値となります。

   

mental_ray_string_options. AddOption "irradiance particles file" <String>filename

ファイルが存在する場合、mental ray によってそこからパーティクル マップの読み込みが試行されます。

存在しない場合は、計算済みのパーティクル マップが、指定された名前でファイルに保存されます。

既定値は、ファイルなしです。

   

mental_ray_string_options.AddOption "irradiance particles rebuild" <Boolean>OnOff

true に設定すると、mental ray ではパーティクル マップが再計算されます。

false に設定すると、既存のマップが、指定のある場合には既存ファイルから読み込まれることにより、あるいはアニメーションの前のフレームから取得されることにより再利用されます。

これは、フライスルーの場合など、アニメーションのちらつきを回避するのに便利です。

オブジェクトが移動している場合、グローバル発光は不正確となることがあります。

パーティクル マップは基本的にビュー従属であるため、カメラが動くと不正確さが目立ちます。

既定値は true です。

スクリプト:

イラディアンス パーティクル レンダリング モードについて確認するためのスクリプト例を示します。

macroScript MR_IrradPart category:"MXS Help"
(
global MentalRayStringOptions_IrradianceParticles
try(destroyDialog MentalRayStringOptions_IrradianceParticles) catch()
rollout MentalRayStringOptions_IrradianceParticles "mr Irradiance Particles"
(
checkbutton chk_IrraPartOn ">Enable Irradiance Particles" width:190 align:#center
group "Global Settings"
(
spinner spn_Rays "Rays:" range:[1,4096,256] type:#integer fieldwidth:50 tooltip:"The number of rays to shoot. Default is 256."
spinner spn_Passes "Indirect Passes:" range:[-1,32,0] type:#integer fieldwidth:50 tooltip:"Number of passes. 0 means direct illumination only."
checkbox chk_LockScale "Lock" across:2 align:#left
spinner spn_ScaleR "Scale R:" range:[0,1000,1] type:#float fieldwidth:50 tooltip:"Global Scale of Red Component or Global RGB Scale if Locked."
spinner spn_ScaleG "Scale G:" range:[0,1000,1] type:#float fieldwidth:50 tooltip:"Global Scale of Green Component"
spinner spn_ScaleB "Scale B:" range:[0,1000,1] type:#float fieldwidth:50 tooltip:"Global Scale of Blue Component"
dropdownlist ddl_interpolationMode items:#("No Interpolation","Interpolate All","Interpolate Secondary") width:140 selection:2 align:#right offset:[1,0] tooltip:"Controls the interpolation mode."
spinner spn_interpPoints "Interpolate Points:" range:[8,4096,64] type:#integer fieldwidth:50 tooltip:"Number of nearest neigbor points to interpolate."
)
group "Environment Irradiance"
(
checkbox chk_envOnOff "Enable Environment Irradiance"
checkbox chk_envLockScale "Lock" across:2 align:#left
spinner spn_envScaleR "Env.Scale R:" range:[0,1000,1] type:#float fieldwidth:50 tooltip:"Scale Red Env. Component or Env. RGB Scale if Locked on top of the Global Scale."
spinner spn_envScaleG "Env.Scale G:" range:[0,1000,1] type:#float fieldwidth:50 tooltip:"Scale Green Env. Component on top of the Global Scale."
spinner spn_envScaleB "Env.Scale B:" range:[0,1000,1] type:#float fieldwidth:50 tooltip:"Scale Blue Env. Component on top of the Global Scale."
spinner spn_envRays "Env.Rays:" range:[1,4096,256] type:#integer fieldwidth:50 tooltip:"The number of Env. rays to shoot. Default is 256."
)
group "Irradiance Particles Cache File"
(
button btn_setParticleFile "Set Irradiance Particles Cache File..." width:185 align:#center
edittext edt_particleFile "" fieldwidth:185 offset:[-10,-3]
checkbox chk_rebuild "Rebuild Map" checked:true tooltip:"When checked, the map will be rebuild. When unchecked, the disk or previous animation frame map will be reused."
)
 
button btn_quickRender "QUICK RENDER" width:190 align:#center height:30
button btn_clearSettings "Remove Settings And Close" width:190 align:#center tooltip:"Pressing this button will clear the settings from memory and close. Closing with [X] will keep the settings."
fn removeOptions =
(
local m = mental_ray_string_options
for i = m.numOptions to 1 by -1 where matchPattern (m.GetOptionString i) pattern:"irradiance*"do
m.removeOption i
)
 
fn setOptions =
(
removeOptions()
local m = mental_ray_string_options
m.addOption "irradiance particles" chk_IrraPartOn.state
m.addOption "irradiance particles rays" spn_Rays.value
m.addOption "irradiance particles indirect passes" spn_passes.value
if chk_LockScale.state then
m.addOption "irradiance particles scale" spn_scaleR.value
else
m.addOption "irradiance particles scale" (Point3 spn_scaleR.value spn_scaleG.value spn_scaleB.value)
m.addOption "irradiance particles interpolate" (ddl_interpolationMode.selection-1)
m.addOption "irradiance particles interppoints" spn_interppoints.value
m.addOption "irradiance particles env" chk_envOnOff.state
if chk_envLockScale.state then
m.addOption "irradiance particles env scale" spn_envScaleR.value
else
m.addOption "irradiance particles env scale" (Point3 spn_envScaleR.value spn_envScaleG.value spn_envScaleB.value)
m.addOption "irradiance particles env rays" spn_envRays.value
m.addOption "irradiance particles file" edt_particleFile.text
m.addOption "irradiance particles rebuild" chk_rebuild.state
try (
renderers.current.FinalGatherEnable2 = false
renderers.current.CommitUI()
renderers.current.UpdateUI()
)catch()
)
fn getOptions =
(
local m = mental_ray_string_options
for i = 1 to m.numOptions do
(
local theVal = m.GetOptionValue i
case m.GetOptionString i of
(
"irradiance particles": chk_IrraPartOn.state = theVal
"irradiance particles rays": spn_Rays.value = theVal
"irradiance particles indirect passes": spn_passes.value = theVal
"irradiance particles scale": (
if classof theVal == Point3 then
(
spn_scaleR.value = theVal.x
spn_scaleG.value = theVal.y
spn_scaleB.value = theVal.z
chk_LockScale.state = false
spn_scaleG.enabled = spn_scaleB.enabled = true
)
else if classof theVal == Integer or classof theVal == Float do
(
spn_scaleR.value = theVal
chk_LockScale.state = true
spn_scaleG.enabled = spn_scaleB.enabled = false
)
)
"irradiance particles interpolate": (
ddl_interpolationMode.selection = if classof theVal == Integer then theVal+1 else
((findItem #("never", "always","secondary") theVal)+1)
)
"irradiance particles interppoints": spn_interppoints.value = theVal
"irradiance particles env": chk_envOnOff.state = theVal
"irradiance particles env scale": (
if classof theVal == Point3 then
(
spn_envScaleR.value = theVal.x
spn_envScaleG.value = theVal.y
spn_envScaleB.value = theVal.z
chk_envLockScale.state = false
spn_envScaleG.enabled = spn_envScaleB.enabled = true
)
else if classof theVal == Integer or classof theVal == Float do
(
spn_envScaleR.value = theVal
chk_envLockScale.state = true
spn_envScaleG.enabled = spn_envScaleB.enabled = false
)
)
"irradiance particles env rays": spn_envRays.value = theVal
"irradiance particles file": edt_particleFile.text = theVal
"irradiance particles rebuild": chk_rebuild.state = theVal
)--end case
)--end i loop
)
on chk_IrraPartOn changed state do setOptions()
on spn_Rays changed value do setOptions()
on spn_Passes changed value do setOptions()
on chk_LockScale changed state do
(
setOptions()
spn_scaleG.enabled = spn_scaleB.enabled = not state
)
on spn_ScaleR changed value do setOptions()
on spn_ScaleG changed value do setOptions()
on spn_ScaleB changed value do setOptions()
on ddl_interpolationMode selected itm do setOptions()
on spn_interppoints changed value do setOptions()
on chk_envOnOff changed state do setOptions()
on chk_envLockScale changed state do
(
setOptions()
spn_envScaleG.enabled = spn_envScaleB.enabled = not state
)
on spn_envScaleR changed value do setOptions()
on spn_envScaleG changed value do setOptions()
on spn_envScaleB changed value do setOptions()
on spn_envRays changed value do setOptions()
on btn_setParticleFile pressed do
(
local theVal = getSaveFileName caption:"Specify Irradiance Particles Cache Filename:" types:"Irradiance Particles Cache (*.ipc)|*.ipc"
if theVal != undefined do
(
edt_particleFile.text = theVal
setOptions()
)
)
on edt_particleFile entered txt do setOptions()
on chk_rebuild changed state do setOptions()
on btn_quickRender pressed do max quick render
on btn_clearSettings pressed do
(
removeOptions()
try(renderers.current.FinalGatherEnable2 = true)catch()
destroyDialog MentalRayStringOptions_IrradianceParticles
)
on MentalRayStringOptions_IrradianceParticles open do getOptions()
)--end rollout
createDialog MentalRayStringOptions_IrradianceParticles 200 490
)--end script
 

グローバル発光なし(左)と、イラディアンス パーティクル、既定値設定(右)

ファイナル ギャザー グローバル イルミネーション(左)と、イラディアンス パーティクル、グローバル スケール 5.0(右)

16 レイのイラディアンス パーティクル(左)と、64 レイ(右)。

256 レイのイラディアンス パーティクル、グローバル スケール 5.0、5.0、5.0(左)と、グローバル スケール 5.0、1.0、1.0(右)。

256 レイのイラディアンス パーティクル、グローバル スケール 1.0、5.0、1.0(左)と、グローバル スケール 1.0、1.0、5.0(右)。

イメージ ベース照明(IBL)/環境ライティング

mental_ray_string_options.AddOption "environment lighting mode" <String>mode 

値が "light" に設定されると、組み込みの IBL モードを有効化します。

既定値は「オフ」です。

   

mental_ray_string_options.AddOption "environment lighting quality" <Float>quality

IBL の重みの品質をコントロールします。

値は 0.0(最低品質)から 1.0(最高品質)の範囲で設定されます。

既定値は 0.2 です。

   

mental_ray_string_options.AddOption "environment lighting shadow" <String>shadowMode 

IBL によるシャドウの影付けをコントロールします。

"off" - シャドウの影付けを無効にします。

"solid" - 不透明なシャドウで影付けします。

"transparent"(既定)- シャドウ シェーダを使用した完全な影付け。

ファイナル ギャザー モード

mental_ray_string_options.AddOption "finalgather" <String>mode 

使用可能な FG モードのうち 1 つを選択します。

有効な値は次のとおりです。

"automatic"(既定)- 主に単一の静止イメージのレンダリングを対象とします。finalgather points 引数が使用されます。この引数は、補間で使用されるファイナル ギャザー ポイントのそれぞれの概算の最小数に対応します。すべての FG ポイントが FG 計算済みステージで生成されます。

"multiframe" - カメラ フライスルー アニメーションのレンダリングを対象とします。 finalgather points 引数が使用されます。この引数は、補間で使用されるファイナル ギャザー ポイントのそれぞれの概算の最小数に対応します。すべての FG ポイントが FG 計算済みステージで生成されます。finalgather accuracy R_1 が、ファイナル ギャザー ポイントの最高有効性距離を制限するために使用され、ファイナル ギャザー ポイントの密度が不十分な場合にリモート オブジェクトからの発光が取得されることを回避します。

"force" - ファイナル ギャザー キャッシングを完全に無効にして、常にフルおよび正確な計算を実行します。 時間がかかりますが、品質は向上します。

"strict 3.4" - 互換モードです。mental ray 3.4 と同一または非常に類似するレンダリング イメージにフォーカスを設定します。

"3.4" - 互換モードです。同じ引数セットの使用にフォーカスを設定しますが、レンダリングが向上します。

例:

強制ファイナル ギャザー モードを切り替える例を次に示します。

m = mental_ray_string_options
for i = m.numOptions to 1 by -1 \
where matchpattern (m.GetOptionString i) pattern:"finalgather*" do
m.removeOption 1 --remove previous options
m.addOption "finalgather mode" "force"
--Control image quality with the "Rays per FG Point" spinner.

関連事項