チュートリアル / 宋さんの3ds Max キッチンスタジアム
第7回:周囲光 ファイナルギャザーを理解しよう
- 3ds Max
- コラム
- チュートリアル
- ビジュアライゼーション
- レンダリング
ファイナルギャザー
ファイナルギャザー(以下 FG)は、パストレーシング法という計算を行ってビジュアルを作成する手法です。ではパストレーショング法とはどういった計算手法なのでしょうか?パストレーシング法は視点から光線(レイ)を段階的に定義したFGポイントへ飛ばし、オブジェクトにヒットした時点で拡散させ、他のポイントにヒットした時点でその個所のRGB値を採取し、イメージを作成するものです。つまりオブジェクト自体の輝度値をベースにイメージを作成する構造を持っているので、シーン内にライトがなくてもイメージを作成することができます。
中央の発光マテリアルが設定された球体の輝度値だけでシーンをライティング(シーン内ライトなし)
床に4色の自己発光マテリアルを設定したケース(シーン内ライトなし)
FGなしの状態
外部から入った光は、窓枠の一部と床面とだけを照射しています。この部屋の中にある壁や球体の色情報を決定するためには、窓から入った光によって照らされた床の色情報を採取するしかありません。
次にFGをONにして、計算を行います。
天井や壁面、さらには球体に輝度情報が加えられます。この輝度情報は窓枠と、床面に存在している輝度情報を採取して作成されます。左の画像を見るとわかりますが、部屋の中のオブジェクトはそのほとんどが床面の色情報に支配されますが一部窓枠の白の要素も混じっています。
解りやすくするために、次は床のマテリアルを赤に設定して計算します。
直接光があたっている窓枠の拡散反射光は白、床面の拡散反射光は赤になります。窓枠の高さより上に位置する部分は白いポイントと赤いポイントが混じってます。しかし、窓枠より下に位置する部分はすべて赤い拡散反射光だけになります。つまり採取するオブジェクトの拡散反射光情報によってのみFGの計算は成り立っているのがわかります。
FGの計算とは、光の伝播をシミュレートするというよりも、シーン内の各ポイントの色情報を決定するためにそのポイントの周辺の色情報を採取して、その平均値をオブジェクトの色として決定しているにすぎません。前ページでライトがなくてもレンダリングが可能だという事はこの処理を行っているからです。それではシーン内の色を採取するポイントとそれに関係する各種パラメータの解説に移ります。
サンプリングポイント(FGポイント)
オブジェクトの拡散反射光の情報を採取するためのポイントを決定する計算をFGの計算と同時に行います。FGでは情報を採取するポイントをスクリーン上で決定します。つまり、同じカメラアングルでなければFGの結果を再利用することができません。3次元空間上で輝度情報をマップさせるフォトンマップとは計算結果の2次利用の活用法として、この部分が異なります。
採取するポイントの密度が低いと、ノイズの目立つ結果となります。ただし、過剰にポイント密度を上げると、オブジェクトのディテイル表現の品質は向上しますが計算時間が極端にかかる結果となります。ポイント密度は[初期ポイント密度]パラメータで設定します
ポイント密度 上から 0.1、0.5、1.5
サンプリングポイントの密度は最大でも5.0程度に抑えましょう。
サンプリングポイントの状態は、診断ロールアウトメニュー内の[ファイナルギャザー]にチェックを入れると確認ができます。ノイズが激しい場合などは、診断ツールで確認をとるのもよい方法です。
ファイナルギャザリングでは、サンプリングポイントにレイがヒットした段階でその例は半球形に拡散します。拡散したレイは別のオブジェクトにヒットし、その色情報を採取します。この工程を指定した回数分繰返します。
ファイナルギャザー設定画面の[各FGポイントごとの光線数]はヒットした時点でのレイの分裂数です。 この光線数の値は、サーフェイスの滑らかさに影響を及ぼします。
光線数が「10」
光線数が「100」
光線数が「1,000」
[各FGポイントごとの光線数]は不用意に値を上げると計算時間が極端に上がるので注意が必要ですが、FGだけでグローバルイルミネーション効果を生むには、7,000-8,000ぐらいの値にする場合もあります。
拡散反射光バウンス
拡散反射光バウンスは、短時間でフォトンマップを用いたような、3次、4次反射をシミュレートするのに便利です。 下図のイメージの最初はFGを設定してますが、バウンスの設定は「0」にしています。窓から入った一次的な拡散反射光を各オブジェクトは2次反射として受けていますが、それ以降の計算は行っていません。結果的に室内は暗いイメージのままになっています。バウンスの設定を行うと、2次反射以降の計算を繰り返して行います。下図のサンプルを見ると、バウンス2回目以降はさほどイメージの変化が見受けられません。バウンス回数を1上げると計算にかかる時間は0の時に比べて約2倍弱ほどかかります。回数を上げると全体の明度が上がりますので、計算後 露出補正をかける必要があります。
拡散反射光バウンス = 0 (31秒)
拡散反射光バウンス = 1 (57秒)
拡散反射光バウンス = 2 (1分13秒)
拡散反射光バウンス = 3 (1分28秒)
GI + FG (2分32秒)
グローバルイルミネーションを使用した際には、バウンスは自動的にキャンセルされます。左図はフォトンマップとFGを使用した例です。結果的にはこの例が最も好ましい結果を生みます。計算時間はもっともかかりますが、GIの結果はキャッシュして再利用できるので、もっとも効率のよいレンダリングといえます。
グローバルイルミネーションを使用した際には、バウンスは自動的にキャンセルされます。左図はフォトンマップとFGを使用した例です。結果的にはこの例が最も好ましい結果を生みます。計算時間はもっともかかりますが、GIの結果はキャッシュして再利用できるので、もっとも効率のよいレンダリングといえます。
FGポイント数上の補間
各サンプリングポイントの色情報は、拡散したレイで採取した情報で成り立ちます。しかし、サンプリングポイントはレンダリングする全ピクセルにあるわけではありません。ですので、最終的にレンダリングする各ピクセルの色情報を決定する際に、そのピクセルを中心に[FGポイント数上の補完]で設定した下図のサンプリングポイントの色情報を採取して、レンダリングピクセルの色を決定します。
右図はレンダリングイメージのピクセルを拡大したものです。緑のピクセルがサンプリングポイントです。右図ではピクセルの周囲11個のサンプリングポイントのデータを採取しています。つまり[FGポイント数上の補完]の値は「11」となります。この値はさほどレンダリング時間に影響を及ぼしませんが、シーンによっては極端に大きくするとイメージの詳細情報が弱くなる傾向があります。
この[FGポイント数上の補完]と[FGポイント密度] の両方が低い場合は、低周波ノイズで荒れたイメージになります。また逆に[FGポイント数上の補完]が低く、[FGポイント密度]が高い場合は、高周波のノイズ(砂目のような)が目立つ結果となります。反面[FGポイント数上の補完]が高く、[FGポイント密度]が低い場合は、詳細なディテイルが表現されない結果となります。
[FGポイント数上の補完]=1
[FGポイント密度]=0.1
[FGポイント数上の補完]=1
[FGポイント密度]=3
[FGポイント数上の補完]が低いと、砂目のような結果をもたらすことがわかります。
[FGポイント数上の補完]=50
[FGポイント密度]=0.1
[FGポイント数上の補完]=50
[FGポイント密度]=3
[FGポイント密度]=が低いまま[FGポイント数上の補完]を上げると、ディテイル情報が失われます(左図)。
結果として、FGを上手に使用するコツは、FGポイントの密度と各FGポイントごとの光線数、さらには補完の値が重要であることがわかります。
ピクセル補完の方法はもう一つ要してあります。[拡張機能]のグループにある[半径の補完法を使用]です。
この補完法は [FGポイント数上の補完]が周囲にあるFGポイントの数で設定するのに対して、作成するピクセルの周囲何cm半径にあるFGポイントを採取するかという計算になります。FGポイント密度が低い場合には良い結果を生みません。また不要に半径を広げると、ディテイルの表現が甘くなります。どうしても[FGポイント数上の補完]で良い結果が生まれない場合の回避策としてとらえていれば大丈夫です。