レンダリング

Eddyのレンダラーは、アンバイアス(不偏)で物理ベースのパストレーシングボリューメトリックレンダラーです。ボリューメトリックプリミティブの他、複数のライトタイプ、ボリューメトリックおよびメッシュのホールドアウト、モーションブラー、マルチスキャッタリングに対応し、ディープイメージデータを作成することもできます。

ご注意

パストレーシングは、モンテカルロ積分を使用し、各ピクセルの色を決定します。モンテカルロ積分は、各ピクセルに対して粗いノイズのあるサンプルを多数取得し、それらを結合して最終のピクセルカラーを見つけます。このランダムでノイズのあるサンプリングは、十分なサンプルが取得されない場合、最終画像にもノイズが残ります。画像内のノイズの誤差は、累進数の平方根に反比例します。つまりこれは、誤差を半分に減らすためには、4倍処理を進行させる必要があるということです。

ご注意

不偏レンダリングとは、レンダラーが、十分に処理を進行させられた場合は、最終的に正確な結果に収束することが保証されているということを意味します。パフォーマンスの向上や精度を重要視する場合は、制御されたバイアスを少量受け入れるほうが有益なこともあるため、対応しているすべてのレンダラーの機能が不偏という訳ではありません。不偏ではないオプションは、明示的に呼び出され、ドキュメントに記載されます。

ボリューメトリックマテリアル

Absorption

Absorption係数は、与えられた距離で媒質により光が吸収される量を制御します。

有効値の範囲は、吸収しないことを表すゼロから、完全に吸収する無限大までです。実際に使用される最大値は、約1/特徴サイズ、または1/ボクセルサイズであり、単一のボクセルが光の大半を吸収することを指定します。Absorption係数の単位は、1/mです。

Scattering

Scattering係数は、与えられた距離で媒質によって光線からどのくらいの量の光が散乱するかを制御します。この単一の係数は、この単一の係数は、光源から視線レイ内で散乱する光のような、内側に入る散乱の量と、目に到達する前に視線レイから散乱する光のような、外へ向かう散乱の量の両方を制御します。従って、Scattering係数は、反射光とボリュームの減衰または消散の両方に寄与します。

有効値の範囲は、散乱しないことを表すゼロから、完全に散乱する無限大までです。Absorption係数と同様に、実際に使用される最大値は、約1/特徴サイズ、または1/ボクセルサイズであり、単一のボクセルが光の大半を散乱させることを指定します。Scattering係数の単位は、1/mです。

Extinction

Extinction係数は、Absorption係数とScattering係数の和です。媒質全体の減衰を表し、媒質全体の透明度を決定します。Absorption係数とScattering係数を個別に調整する際に、全体の減衰を決定するものは上記2つの係数の合計であるということを覚えておくことは重要です。

有効な値の範囲は、減衰しないことを表すゼロから、完全に減衰する無限大までです。AbsorptionまたはScattering係数と同様、実際に使用される最大値は、約1/特徴サイズ、または1/ボクセルサイズであり、単一のボクセルが光の大半を消滅させることを指定します。Extinction係数の単位は、1/mです。

Emission

Emissionは、光を放出する材質を表現します。炎のマテリアルは、例えば、炎の温度に基づいて発光します。

Emissionの単位は放射輝度/mで、範囲はゼロから無限大です。

Phase Function

位相関数は、散乱がほかの方向よりも特定の方向に起こりやすい場合には不均一な散乱を表現します。光がそのまま前方方向に散乱することが多い場合は前方散乱、光が元の方向に沿って逆向きに散乱することが多い場合は後方散乱です。

ボリューメトリック媒質に最も一般的に使用されるPhase関数は、Henyey-Greenstein 位相関数です。これは、-1から1の範囲の単一パラメータ「g」によって特徴付けられます。gが0の場合は等方散乱で、g > 0の場合は前方散乱、g < 0の場合は後方散乱です。

ライト

さまざまなライトのタイプに対応しています。Nuke固有のライトノード群とカスタムのノードを組み合わせて使用し、レンダーノードへ入力として渡すことができます。

ご注意

レンダーノードに何もライトが提供されていない場合、デフォルトのポイントライトが内部的に作成されます。

ポイントライト

ポイントライトは、Nuke固有のPoint ノード、またはタイプにPointを設定したE_Lightのどちらかを使用して作成することができます。color(カラー)intensity(強度)falloff type(フォールオフタイプ)の項目のみが使用されます。

スポットライト

スポットライトは、Nuke固有のSpotLightノードにより作成することができます。color(カラー)intensity(強度)falloff type(フォールオフタイプ)cone angle(円錐角)cone penumbra angle(円錐半影角度)の項目のみが使用されます。

四辺形エリアライト

四辺形エリアライトは、E_Light ノードを使用し、タイプにQuad Areaを設定することで作成することができます。エリアライトのサイズと向きは、ノードのtransformを使用して制御することができます。

環境/IBLライト

環境/IBLライトは、Nuke固有のEnvironmentライトノードにより作成することができます。color(カラー)intensity(強度)の項目のみが使用されます。現在対応しているマップは、緯度/経度の環境マップのみのため、SphericalTransformを使用せずに、画像を直接Environmentノードに接続してください。

アンビエントライト

アンビエントライトは、全方向から一定の照明を提供します。ボリュームレンダリングの場合、これはIBLとほぼ同じくらい処理が重くなります。アンビエントライトは、画像を追加で入力せずにNuke固有のEnvironmentライトノードを使用することで作成できます。color(カラー)intensity(強度)の項目のみが使用されます。

ホールドアウト

Eddyが対応しているホールドアウトには、2つの異なる種類があります。不透明なホールドアウトは、 E_Holdoutノードにより作成され、レンダーノードに直接渡すことができます。半透明なホールドアウトは、標準のボリューメトリックチャンネルのコンポジットパイプラインにより作成され、Shaderノードへ入力として渡されます。

カラースペース

一般的に、Eddyのレンダラーは、他のレンダラーやNuke自体のように、カラースペースの選択に関しては非依存型です。出力のカラースペースは、前の入力と単に同じカラースペースになります。しかし、SunSkyノードやfireシェーダのようないくつかのノードでは、それ自体の色を生成する必要があるため、カラースペースを指定しなければいけません。

Eddyでカスタムのカラースペースを登録することもできます。これらのカスタムカラースペースは、カラースペースを指定可能なすべてのノードで使用することができます。カスタムのカラースペースを登録するには、Eddyの「nodeScripts」フォルダに新しいpythonファイルを置きます。以下は、いくつかの新しいカラースペースを登録するpythonファイルの例です。

custom_color_spaces.py

from eddy import *
from eddy.imath import M33f, V2f

# ProPhoto RGB
# Registering using primary chromaticities.
register_color_space_primaries(name="ProPhotoRGB", display_name="ProPhoto RGB",
                               red_primary=V2f(0.7347, 0.2653),
                               green_primary=V2f(0.1596, 0.8404),
                               blue_primary=V2f(0.0366, 0.0001),
                               white_point=V2f(0.3457, 0.3585))

# PAL/SECAM RGB
# Registering using conversion matrix directly.
pal_mtx = M33f((( 3.0628971, -1.3931791, -0.4757517 ),
                (-0.9692660,  1.8760108,  0.0415560 ),
                ( 0.0678775, -0.2288548,  1.0693490 )))
register_color_space_matrix(name="pal", display_name="PAL/SECAM RGB", from_xyz=pal_mtx)

詳細は、カラースペース関数 APIドキュメント(英語)を参照してください。