チュートリアル / Maya V-ray アーティスト ワークフロー~レンダリングテクニックを学ぶ~
					第4回:V-Ray導入編~MayaでV-Rayを使いこなすために~ GIグローバルイルミネーション編
				
				- Maya
 - コラム
 - コロッサス
 - チュートリアル
 - レンダリング
 - 中級者
 - 映画・TV
 
前回はV-Rayのカメラとカラーマッピングについてお話しました。
	今回はグローバルイルミネーションとアニメーションレンダリングの設定について説明します。
GI(グローバルイルミネーション)
		グローバル・イルミネーション (global illumination)は、光エネルギーの大域的な輸送を光学的・物理学的に正確に扱おうとするレンダリング技法のことです。(wiki)
		つまり、光の振る舞いをレンダラーが自動的に計算することによって、現実世界と同じようにリアルな画像を得ることが出来るのです。
		V-RayはそんなGIレンダラーの先駆者的な存在でありながら、現在に至るまで常に発展し続けてきた、実に許容範囲の広いレンダラーです。
		3ds Maxのプラグインとして開発され、そのGIレンダリングは主に建築ビジュアライゼーションで用いられてきました。
		Mayaにも移植され、今では多くのアニメーション映像に用いられています。
		
しかし、V-Rayはモダンなレンダラーとしては珍しく間接照明の計算方法(アルゴリズム)が複数実装されています。
プライマリエンジン
		・イラディアンスマップ
		・フォトンマップ
		・ブルートフォース
		・ライトキャッシュ
		・スフィリカルハーモニクス
セカンダリエンジン
		・フォトンマップ
		・ブルートフォース
		・ライトキャッシュ
最初はどれをどのように使えばいいのかわからないかもしれませんが、 各アルゴリズムにはそれぞれ異なる長所と短所があるので、理解した上で目的に合わせてアルゴリズムを選択する必要があります。
Irradiance map (イラディアンス・マップ:照度分布マップ)
長所:
			・ブルートフォースに比べて演算が高速。ノイズが殆ど見られない。
			・キャッシュをとる事ができ、次回以降のレンダリングで再使用する事ができる。
			短所:
			・詳細な間接照明(極小オブジェクトの影など)がイラディアンスマップの補完やぼかしなどで失われる。
			・低いセッティングを使用した場合、アニメーション中にフリッカーが発生する。
			・イラディアンス・マップキャッシング用の追加メモリーが必要になる。
			・高速運動している物の間接照明は完全に正確ではない。
Photon map (フォトンマップ)
長所:
			・シーンの間接照明の荒い近似値を非常に高速に生成することができる。
			・キャッシュをとる事ができ、次回以降のレンダリングで再使用する事ができる。
			・シーン全体の(カメラから見えない部分に対しても)照明がキャッシングされる。
			・コースティクスを得ることができる。
短所:
			・フォトンマップのみで間接照明を表現する事は推奨されない。
			・フォトンマップ・キャッシング用の追加メモリーが必要になる。
			・高速運動している物の間接照明は完全に正確ではない。
			・フォトンの発生源となる実態のある光源が必要。(VRayではVRayLightがグローバルフォトン発生源)従って形のない光源(例えば、環境光、スカイライト)等からの間接照明計算に使用する事ができない。
			 
Brute force(総当り:モンテカルロ・パストレーシング)
			長所:
			・間接照明を詳細に表現できる。(例えば、非常に小さなオブジェクトや影なども)
			・アニメーションした際、間接照明のフリッカー(明滅)がない。
			・イラディアンスマップ・キャッシュなどを使用しないので、余分なメモリは必要ない。
			・高速運動、変形している物にも正確な間接照明が計算される。
			
			短所:
			・アルゴリズム的に非常に計算が遅い。
			・光源が少ないシーンでは、著しくノイズが多くなる。
			 
Light cache(ライトキャッシュ)
長所:
			・セットアップが非常に簡単。
			・フォトンマップでは扱えない光源、スカイライト、発光オブジェクト、非物理的なライト、フォトメトリックライト(配光データによる光源)に対してもうまく働く。
			・コーナー部分や小さなオブジェクト周辺の照明も正確に生成する事ができる。
			・シーンの滑らかなGIプレビューを素早く得る事ができる。
短所:
			・イラディアンスマップのように、ライトマップの計算は視点に依存(カメラから見える範囲)。
			・フォトンマップと同じように、ライトキャッシュはサンプルが十分な場所、不要な場所などに別けた可変的なサンプリングができない。照度はユーザーが決定した固定された解像度で計算される。
			・ライトキャッシュは、バンプのディテールを持つ事ができない。
			・高速運動している物の間接照明は完全に正確ではない。
			 
さらに、最初の間接照明(プライマリエンジン)とそれに以降の間接照明(セカンダリエンジン)を個別に選択できるようになっているため、以下のような組み合わせが可能になります。
※この中でスフィリカルハーモニクスはベイクエンジンとしての役割が主なため、今回の検証からは外します。
コーネルボックスシーンで12パターンの組み合わせをテストしました。パラメータの設定はデフォルトのままです。
		コーネルボックス(Cornell Box)とは,米国のCornell University(コーネル大学)がレンダリング研究者のためにフリー素材として提供しているGIレンダリング用テストシーンのことです。
		縦軸がプライマリーエンジン、横軸がセカンダリーエンジンです。
V-RayのGIエンジンは、全てのエンジンで同じレンダリング結果にはならないため、よく理解した上で選択することが重要です。
プライマリーにイラディアンスマップを使用した場合、セカンダリーがどのタイプであってもノイズの無いクッキリしたレンダリング結果が得られています。しかし隅にはイラディアンスマップ特有のアーティファクトが現れています。
(アーティファクトとはGI計算の段階で発生したデータのエラーや信号のゆがみ。つまり本来意図しないものが表れること。)
	プライマリーにフォトンマップを使用した場合、計算は速いですが非常にラフなレンダリング結果となっています。つまりプライマリーエンジンとして選択できますが、実際に使用することはないでしょう。
	プライマリーにブルートフォースを使った場合は、ノイジーですがアーティファクト見られません。
	プライマリーにライトキャッシュを使用した場合、計算は速いですが強いアーティファクトが発生しています。 ライトキャッシュはプライマリーエンジンとして選択できますが、実際に使用することはないでしょう。
	以上の結果から、実際にプライマリーエンジンとして使用に耐えられるのはイラディアンスマップとブルートフォースということになります。
グローバルイルミネーションを使ったアニメーション
静止画作成では上記の組み合わせの中から最適なものを選択し、後は品質を調整するだけでいけるのですが、GIを使ってアニメーションをレンダリングする場合、GIエンジン特有の問題が出てきます。
		イラディアンスマップとブルートフォースをプライマリーとした場合のGIアニメーションレンダリングについて考察していきましょう。
イラディアンスマップ
イラディアンスマップをプライマリーにしたアニメーションでは、セカンダリーに何を使用しても、毎フレームごとにグローバルイルミネーションの結果が異なるので、アーティファクトによるフリッカーが発生しています。
ブルートフォース
ブルートフォースをプライマリーにしたアニメーションでは、セカンダリーにもブルートフォースを使用した場合はかなりノイズが発生しています。
ブルートフォースとライトキャッシュ
セカンダリーにライトキャッシュを使用した場合、ブルートフォースだけの場合と比べてノイズはかなり軽減されています。
イラディアンスマップでアニメーションを使う方法
ではイラディアンスマップはアニメーションに使えないかというとそうではありません。
		イラディアンスマップの場合はレンダリングの前に毎フレームごとのイラディアンスキャッシュを計算し、そのキャッシュを前後フレームでブレンドし、フリッカーを軽減することができます。
		この場合、レンダリングは2段階で行います。まずプライマリーにイラディアンスキャッシュを選択し、以下のように設定をして、キャッシュを取得するためのレンダリングを行います。このとき、セカンダリーには何を選んでも構いません。セカンダリーのGI結果はプライマリーに引き継がれてキャッシュに格納されます。
		第1段階はイラディアンスキャッシュをとるためのレンダリングなので、最終レンダリングイメージの計算を省いたほうが速くなります。
キャッシュはこのように連番ファイルとして保存されます。
	第2段階では先に取得したイラディアンスキャッシュを読み込み、最終レンダリングイメージを計算します。
イラディアンスキャッシュは毎フレームごとに異なる結果ではなく、滑らかに補完されスムースなアニメーションがレンダリングされます。
コーネルボックスのアニメーションではフリッカーがみごとに消えました。このようなシーンではアニメーションモードが有効であることがわかります。
	しかし、このアニメーションモードはどのようなシーンでもフリッカーを消せるわけではなく、素早い動きのあるシーンや、動きはゆっくりでも輝度差が激しいシーンなどではフリッカーが出ます。
オブジェクトが高速で移動するアニメーションにおけるGI問題
例えば広大な背景をバックにオブジェクトが高速で移動するようなシーンを想定してみましょう。
このようなアニメーションレンダリングでGIだけに注目してみると
プレパスによるキャッシュ取得を行わずに、毎フレームごとにイラディアンスマップ計算を行った場合、大量のフリッカーが発生していることがわかります。
	では、上記のような設定でプレパス計算を行い、キャッシュを取得してレンダリングを行うと、
動きのない背景のフリッカーは抑えられていますが、高速で動く飛行機はとんでもないことになっています。
	これは、前後数フレーム間でイラディアンスマップをブレンドするという性質上、高速で動く物体にはブレンド効果が得られず、エラーとなって現れてしまうためです。
	残念ながらイラディアンスマップを使ったGIではこのようなシーンは苦手なのです。
	では、別のGIを選択した場合はどうでしょうか。
	プライマリーにブルートフォースを使ってみました。
	ブルートフォースにはキャッシュを取るということがないため、1回の計算でレンダリングが完了します。
イラディアンスマップ程ではないですが、背景のビルに激しいフリッカーが見られます。
	これはセカンダリーに使用しているライトキャッシュの性質によるものです。しかもライトキャッシュはキャッシュとは名が付くものの、前後フレームによるブレンドができないため、高速なアニメーションではフリッカーの影響が避けられません。
	ではどうすればいいのでしょうか?
V-Rayクイックセッティング
V-RayではいくつものGIエンジンが搭載されていますが、V-RayのGIに精通していないと、レンダリングしたいシーンにどのGIエンジンが最適な組み合わせなのかわからなくなってしまいますよね。
	V-Rayではそのような場合に備えて、いくつかの典型的なシーンにはこの組み合わせが最適ですと指南してくれるツールが備わっています。それがV-Rayクイックセッティングです。
	V-Rayクイックセッティングはこのようなパネルになっていて、主に4つのシーンに対して最適なレンダー設定とスピードとクオリティの調整が容易にできるようにパラメーターがピックアップされています。
	 
  
	中でも注目に値するVFXプリセットでは、あえてGI計算は外されています。
	素早く動くオブジェクトや爆発などのエフェクトがあるシーンでは、上手く機能しないGIを外してしまっても、最終的なコンポジットで上手く加工すれば、それほど影響は無いという判断なのかもしれません。
あえてGIを使わないアニメーション
実際に先ほどのアニメーションシーンをGI無しでレンダリングした場合はこのようになります。
V-Rayドームライトからのライティングだけになりますが、このようなシーンでは計算も速いし、フリッカーの影響もまったくありません。
ブルートフォースによるアニメーション
最後にもう一つ。プライマリー、セカンダリーともにブルートフォースを使用した場合です。
高速にオブジェクトが動くアニメーションで、どうしてもGI効果が必要な場合は、V-RayのGIエンジンの中で唯一この組み合わせだけがアンバイアス(偏りの無い)で、アニメーションでもフリッカーが発生しないアルゴリズムになります。ブルートフォース特有のノイズは発生しますが、レンダリング速度と品質のトレードオフの関係にあります。
インテリア(内観)アニメーション
窓から差し込む光によってライティングされるようなインテリアシーンをアニメーションする場合にも注意が必要です。
	ただし、ライティングが一定で、カメラだけがウォークスルーするような場合はユーズカメラパスによるキャッシュの取得が最適です。
	V-Rayクイックセッティングでも推奨されているイラディアンスマップとライトキャッシュの組み合わせを使用します。
	ユーズカメラパスも2段階のレンダリングを行います。といってもキャッシュの計算は1回(1フレーム分)だけで完了します。
	ユーズカメラパスの場合はカメラから見えている範囲のGIキャッシュを1つのキャッシュファイルに保存します。 レンダービューで状態を確認しながらレンダリングすることもできますが、全てのフレームを1回で計算するので見た目はおかしな状態になっています。
キャッシュが取得できたらそれを使って第2段階のレンダリングを行います。
	これにより、フレームごとにGI計算の結果が変わることなく、フリッカーの無いアニメーションがレンダリングできます。
しかし、あくまでもカメラしか動くものが無いシーンの場合だけです。
	このようなインテリアシーンの場合は、光の拡散反射が見栄えを決定付けてしまうため、先のVFXシーンのようにあえてGIを外すということはできません。
	では、このような輝度差が激しいライトが動くシーンの場合は、どのGIが最適なのでしょうか。
イラディアンスマップ
プライマリーにイラディアンスマップを使用した場合はかなり激しいフリッカーになっています。
イラディアンスマップとアニメーションプレパス
プレパス計算を行い、キャッシュを取得してレンダリングを行うと、天井辺りのフリッカーは軽減されますが、書庫などの細かな部分にはフリッカーが残っています。
ブルートフォースとライトキャッシュ
続いてプライマリーにブルートフォースを使用した場合ですが、セカンダリーにライトキャッシュを使用すると、同じく書庫の辺りにフリッカーが発生しています。
ブルートフォースのみ
プライマリーにもブルートフォースを使用した場合は、ブルートフォース特有のノイズは激しく発生していますが、GI計算によるフリッカーは見られません。
			インテリアシーンの場合はGI計算を外すわけにはいきませんが、ブルートフォース以外のGIアルゴリズムは、GI計算を速くするためにバイアスの掛かった(偏りのある正確ではない)値を返します。このため、照明が少ないシーンだとGIフリッカーが生じやすいのです。
解決法としては、
			・時間がかけられるならブルートフォースを使用して品質を上げる。
			・インテリア全体に照明がいきわたるようにライトを増やし、GIエンジンの付加を軽減させた上でイラディアンスマップを使用する。
総括
V-RayのGIエンジンは、3ds Max版がリリースされた当初からクオリティとスピードのバランスに秀でていました。
		それは、たとえアンバイアス(偏りの無い正確な)ではなかったとしても、現実の光の振る舞いに近い値を素早く計算できるアルゴリズムを複数用意することによって、美しい絵を素早く得たいというユーザーの利便性に答えてきたからに他ならないと思います。
		ぜひ、複数搭載されたGIエンジンをいろいろ試して楽しいでもらいたいと思います。
次回は導入編から応用編へ、エフェクトにおけるV-Rayの使い勝手を見ていきます。