グローバル・イルミネーション


コンピュータ・グラフィックによるグローバル・イルミネーション

ローバル・イルミネーションとは、3Dシーンのよりリアルな照明を追加する事を意味する3次元コンピュータ・グラフィックで使用されるアルゴリズム群の総称です。こうしたアルゴリズムは、反射やそれ以外(間接照明)かどうかに関わらず、直接光源(直接照明)から来る光だけでなく、同じ光源からの光線がシーン内の他の表面によって反射された後の事象にも考慮します。 参照wiki

Terragenのグローバル・イルミネーション

(Ulco Glimmerveen氏提供のシーン、左から直接照明、間接照明、直接+間接照明のサンプルです)

Terragenの直接照明は、太陽や他の特定の光源から直接照明が発せられるもので、発光オブジェクトからは発しません。Terragenのグローバル・イルミネーション(GI)は、特定の光源ではなく、明るい発光オブジェクトによって引き起こされた照明と同様に、間接照明を含めた他のどこからもの発せられた照明を意味します。Terragenのシーンでは、GIの強度は唯一の『Enviro Light』ノードを使ってコントロールします。

TerragenにおいてのGIは以下の通りです:
  • 影は黒とは限りません。
  • 照明は空から降り注ぎます。
  • 照明は、光が他オブジェクトから跳ね返る事で生じます。
  • 照明は、光輝(発光オブジェクトとして溶岩、炎、蛍などの生物発光など)から放たれた光によって生じます。
  • 雲と大気における「多重散乱」。ボリュームのおける「多重散乱」は、多くの場合グローバル・イルミネーションとは別個の現象として考えられますが、実際には散乱がボリュームに照明効果としてレンダリングされた場合、それはグローバル・イルミネーションの一種として扱う事が出来ます。Terragenでは、グローバル・イルミネーション・キャッシュを使って多重散乱を近似します。雲や大気は、多重散乱をシミュレーションする方法で自身を照らします。グローバル・イルミネーション・システムの一部であるボリュームにおけるGIは、サーフェスからのGIと完全に統合されています。跳ね返ったりサーフェスから放射された光は、雲や大気を照らし、雲や大気を通過する光の散乱によって表面を照らします。
Terragen 4において、新しい雲の種類『Cloud Layer V3』と『Easy Cloud』はGIキャッシュとは別の、品質管理機能(「Quality」タブ)を備えた別個のGIシステムを採用していますが、視覚的には古い雲の『Cloud Layer V2』と同じ位適切にGIシステムの残りの部分で融合します。


GIによるレンダリング


GIキャッシュファイルに頼らないレンダリング

GIキャッシュファイルを使用せず、Terragenのグローバル・イルミネーションを持つ画像をレンダリングするには、以下が必要です:
  1. シーン内の『Enviro Light』ノードが有効であり、パラメータの「Mode」が"Global Illumination"に設定。
  2. 『Render』の「GI Settings」で、「GI cashe detail」が1以上に設定。
『Enviro Light』を無効にしグローバル・イルミネーションを消す事が出来ますが、Terragenはプレ(前処理)パスで時間を無駄にするかもしれません。GIを完全に消す場合は、「GI cashe detail」を0に設定して下さい。それ以外のGI設定を残す事が出来ます。

覚書: 本当に必要な場合以外は、シーン内に複数の『Enviro Light』を有効にしないで下さい。『Enviro Light』の効果を上げる場合は、『Enviro Light』パラメータにある「Strength(強度)」の設定を上げて下さい。複数の『Enviro Light』はGIのクオリティを向上させる事が出来ますが、レンダリング時間を無駄に増大させてしまい最良の手段ではありません。『Render』の「GI Settings」で、「GI sample quality」の数値を上げる事でより効率的にクオリティの向上を達成する事が出来ます。これは複数の『Enviro Light』を有効にするよりも短いレンダリング時間でより高いクオリティを提供します。もしこれらの効果を望むならば、複数の『Enviro Light』を有効にする唯一の方法として、1つの『Enviro Light』では"Global Illumination"モードに設定し、もう1つを"Ambient Occlusion(アンビエント・オクルージョン)"モードに設定する事です。もちろん、あなたのプロジェクトで多くの無効状態の『Enviro Light』を好きなだけ設定する事は出来ます。

通常グローバル・イルミネーションで画像をレンダリングすると、Terragenは2回のパスで画像を描きます。プレパスがレンダリングされ、画像のグローバル・イルミネーションを計算し、GIキャッシュと呼ばれる空間データ構造に格納されます。実際のレンダリングが始まる前に、たくさんの小さなドットが画像を満たしていくのを見ると、プレパスがGIキャッシュを生成してるのが分かります。プレパスが完了すると、最終パスのレンダリングが開始されます。

GIキャッシュファイルによるレンダリング

Terragen 2.4(Free版を除く)以降の新機能に、GIキャッシュファイルの読込み、書き込みが行える事です。これらを使用する事で、プレパスの結果をディスク、またはファイルネットワークに書き込んだり、画像をレンダリングする時にこのキャッシュを読み取ったりする事が出来ます。GIキャッシュを使用すると、2段階工程を行います。最初に、画像(または画像)のためのグローバル・イルミネーションを計算するプレパスをレンダリングし、結果としてのGIキャッシュを、GIキャッシュファイル(またはシーケンスGIキャッシュファイル)形式でディスクやネットワークに書き込みます。これらのGIキャッシュファイルを作成後は、画像をレンダリングするたびにGIを再計算する代わりにキャッシュファイルのGIを使用して最終画像をレンダリングする事が出来ます。

GIキャッシュファイルを使ってグローバル・イルミネーションを享受する必要はありませんが、GIキャッシュは以下のような多くの用途に役立ちます:
  • アニメーションでのGIフリッカーの除去。これを行うために、1つのキャッシュファイルを読込むか、シーケンスのキャッシュファイル間で補完します。
  • 個別にレンダリングしたタイルを、大きな画像やパノラマ、スカイボックスなどに統合する際にGIを調和します。これは1つのキャッシュファイルを読込むか、異なるカメラでレンダリングされた複数のキャッシュファイルを混合することで実現します。
  • 全ての照明を無効にし、GIキャッシュファイルからGIを読込むことでGIパス(間接照明パス)をレンダリングします。
  • 様々な照明やシーンへの他の変更(例えばいくつかのオブジェクトが追加・削除されたなど)で生成されたGIを使用した特殊効果のレンダリング。 あなたが望むGIを生成するシーンを使ってGIキャッシュファイルを書き込む事が出来るので、そのGIキャッシュファイルから最終画像をレンダリングする事が出来ます。
  • "GI cashe detail"の設定で、GIの前処理パスのディティールレベルに関するコントロールが出来ますが、これは整数値のみ可能です。GIキャッシュに書き込む際、レンダリングする別の画像サイズ、または"ディティール"の別の値を選択する事が出来ます。通常、"ディティール"はレンダリングされた画像の多くに影響しますが、GIキャッシュを別々にレンダリングする場合、GIにそれぞれのディティールを選択する事が出来ます。

アニメーション用GIキャッシュファイル・シーケンスを生成

  1. 任意の照明を設定し、『Render』ノードの「GI Settings」で"No GI cache file"にチェックされている状態(デフォルト)で、テストレンダリングを実行します。
  2. "Write to GI cache file"に切り替えます。GIキャッシュファイルの保存場所とファイル名を指定します。ファイル名の語尾に'%04d'を付けます。デフォルトのファイル名は「gicache_%04d.gic」に設定されています。このファイル形式はフレーム番号に置き換えられ、シーケンス・キャッシュファイルをレンダリングする事が出来ます。レンダリングしたフレームごとに1つのファイルが生成されます。
  3. シーケンス画像をレンダリングするのと同じように、シーケンスをレンダリングしてGIキャッシュファイルを生成します。"Write to GI cache file"にチェックされている場合、最終画像はレンダリングや保存は行われません。あなたはすべてのフレームをレンダリングする必要がありません。キャッシュファイルが複数のフレームによって区切られた"Time-sparse(『Render』ノードの[Sequence/Output]タブ、"Sequence step"により反映される内部キャッシュ)"キャッシュは、フレーム間でフリッカー(小刻みなブレ動画)をさせるのではなく、最終画像を徐々にGIソリューション間で混合させるのに便利です。"Render Sequence"ボタンを使い、コンピュータ上でシーケンスをレンダリングするか、最終画像の場合と同じようにレンダーファーム上に分配する事が出来ます。アニメーション用のキャッシュを生成する事は、各フレームが異なるGIキャッシュファイルを生成するため多くのマシンに分配させる事が出来ます。
"time-sparse"技術を活用する事は、単にフレームステップが1よりも大きいシーケンスを使用し、より少ないファイルを生成する事に過ぎません。例えば、"Sequence step"パラメータに10を設定する事で、フレームの10、20、30などのレンダリングを選択するとしましょう。ただし、ステップ数を変更した場合、以前のレンダリングで既存の古いファイルは最新のレンダリングによって上書きされた場合にのみ削除される事に特に注意が必要です。新しいシーケンスのレンダリングが始まると、古いファイルは自動で削除されません。最終的な画像パスのためにキャッシュを読込む時、Terragenは、あなたが読むように指示したファイルシーケンスと一致するファイルが存在するかどうかを調べます。

最終的なアニメーションのレンダリング

  1. 『Render』ノードの「GI Settings」で"Read GI cache file(s)"に切り替えて下さい。生成したGIキャッシュファイルのファイル名を指定します。シーケンス内のすべてのファイルでも行えます。
  2. "Blend mode"を"Interpolate (for animation)"に設定します。ほとんどの場合、これはアニメーションに最適なモードです。これは"Time-sparse"キャッシュで動作し、フレーム番号に従ってファイルのセットを徐々に混合させるように設計されています。フレームごとにキャッシュファイルがある場合にも機能しますが、その状況において、"Equal blend in range"モードと同等ですが、補完アルゴリズムの性質上1以下のキャッシュファイルを混合する点が異なります。その他のブレンドモードについては『Render GI Settings』ノードのページで説明します。
  3. 各フレームのGIソリューションを作成するために、混合させるキャッシュファイル数を選択します。この数が高いほど、GIのクオリティが高くなり、シーケンスを再生する間の変動が小さくなります。全てのフレームにGIキャッシュファイルがある場合、それはGIフリッカーがどれ位減少するかに影響するのでとても重要です。ただし、高い数値ほど最終画像のレンダリング時間を増大させます。GIキャッシュファイルが非常に大きい場合、特に"GI sample quality"の設定で作成された場合は、レンダリング時間への影響は大きくなる可能性があります。
  4. GIの変動量が大きい場合、3つの選択肢があります。A) いくつかのGIファイルをフォルダから移してさらにまばらにする事で、変動を緩和する事が出来ます。ただしこれは、現在のフレームから遠く離れた時間のファイルを使用するため、カメラの動きが速すぎるとGIの適用範囲が不十分、またはクオリティーが低下する可能性があります。B) "number of files to blend"を増大します。通常、これは変動やフリッカーを減らしますが、レンダリング時間に影響する事があります。余分なファイルがレンダリングされている3D空間の領域をカバーしないようにカメラが高速で動いている場合、余分なファイルが役に立たないかもしれません。A、Bのどちらも失敗した場合、より高い"GI cache files"の値によってGIキャッシュファイルを再生成する必要があるかもしれませんが、最終画像のレンダリング時間も長くなる可能性があります。
不確かである場合は、満足している静止画像に適したクオリティ設定のGIキャッシュファイルを生成し、全部で10個のGIキャッシュファイルを生成して、そこから最終シーケンスのために3~5つのファイルを混合するように設定する事をお勧めします。