レンダリング手法と大域照明

  • 直接照明と間接照明
  • 荒さ」の表現
  • 大域照明とは ?

直接照明と間接照明

Shade3Dのレンダリング手法で「レイトレーシング」を選択し、「大域照明」を「無し」にしたときは、
表面材質の「反射」または「透明/屈折」がない場合はそこで計算が打ち切られます。
「拡散反射」(Diffuse)ではレイを追跡する反射処理は行われません。

上画像では、①のレイが飛んだあとに拡散反射面に衝突した後は②には進まず、衝突位置での照明計算が行われます。
レンダリングでは照明計算の結果は、スクリーン上のピクセル色として求められます。
視点からレイを飛ばし、物体にぶつかったときの光源を考慮した照明計算時は、
衝突位置は光源から直接照らされています(もしくは衝突位置と光源の間で形状がさえぎっていて影になる)。
この状態は「直接照明」となります。
ここから、表面材質で反射/透明/屈折要素がある場合は二次レイをたどることになります。
「拡散反射」で打ち切りにした状態で照明計算をするのが、
Shade3Dのレンダリング手法での「レイトレーシング」になります。

「拡散反射」へのレイの衝突後に文字通り「拡散」させると、これは「間接照明」も計算することになります。

レイが衝突した交点位置での法線方向を軸として、半球状にランダムにレイを拡散させて二次レイ以降をそれぞれ追跡し、
それぞれの照明計算結果を平均してその位置での最終的な結果を得ることになります。
この拡散反射の計算により、光の回り込みを表現することができるようになります。

直接光が差し込むわけではなく、「間接的に」光が差し込む表現になります。
上画像の場合は、陰/影になる部分でもうっすらと光が回り込んでいるのを確認できます。
ここでレイが拡散して衝突処理が増えるため、計算時間も増えていくことになります。

Shade3Dの「レンダリング手法での」レイトレーシング

Shade3Dのレンダリング手法の「レイトレーシング」は、レンダリングアルゴリズムの「レイトレーシング」とは少し違う使われ方をしています。
レイを追跡するもっともベースとなる考え方が「レイトレーシング」となり、
今回解説する「パストレーシング」でもレイトレースは行われます。
そのため、ここでは区別するために「レンダリング手法のレイトレーシング」と書いた場合は、
Shade3Dの「レンダリング手法での」単語としています。

Shade3Dで間接照明を使用したレンダリングを行う

Shade3Dでは、レンダリング設定ウィンドウで
「手法」として「レイトレーシング」や「パストレーシング」を選択できます。
また、「大域照明」タブの「大域照明」で「無し」「パストレーシング」「フォトンマッピング」などを選択できます。


この違いは、前述した「拡散反射」での一次レイ(直接照明)と二次レイ(間接照明)以降に関係します。

「手法」での「レイトレーシング」と「パストレーシング」

「手法」では「レイトレーシング」と「パストレーシング」のほか、
「レイトレーシング(ドラフト)」や「トゥーンレンダラ」「ワイヤーフレーム」などを選択できます。
ここでは、「レイトレーシング」と「パストレーシング」に焦点を絞ります。
「トゥーンレンダラ」「ワイヤーフレーム」は、純粋なレンダラの違いによるものになります。

レイトレーシングでは、視点からレイをスクリーンに飛ばして空間をたどっていきます。

このとき、手法が「レイトレーシング」の場合はスクリーン上の1ピクセル内で1回だけレイを飛ばすことになります。
手法が「パストレーシング」の場合はスクリーン上の1ピクセル内で複数回レイを飛ばします(ピクセルサンプリングが行われます)。

なお、手法がレイトレーシングのときはアンチエイリアシング処理として、
一度スクリーン全体でレイトレーシングが行われた後に隣り合うピクセルの輝度差が大きい場合は、
1ピクセルよりも小さい単位で再度レイトレーシングが行われます。
レンダリング手法によるピクセルでのサンプリングは「アンチエイリアシング」とは別に行われるものになります。

手法が「パストレーシング」の場合はピクセルサンプリングが行われるため、
手法が「レイトレーシング」のときより計算時間がかかることになります。

手法が「パストレーシング」の場合の特徴として、以下が挙げられます。

  • アンチエイリアシング効果
  • 表面材質の「荒さ」の反映

レンダリング設定の「基本設定」の「アンチエイリアシング」よりも、
手法が「パストレーシング」の場合にかかるアンチエイリアシングのほうがより精度が高いです。
この状態は実質オーバーサンプリングしていることになり、1ピクセル内のサンプリングは固定の数だけ行われるためアンチエイリアシングの精度が高い、ということになります。
サンプリング数に相当するものは、レンダリング設定の「その他」の「レイトレーシングの画質」で調整します。

表面材質で「荒さ」を与えた場合、「反射」または「透明/屈折」があるときに
ピクセルサンプリングの効果でぼかした表現が可能になります。

以下は、左にガラスの板を配置(透明 1.0、屈折 1.33)、右の球は全反射(反射 1.0)する表面材質を配置しています。

これに対して、「荒さ」を0.9与えると以下のようにぼかしがかかりました。

「荒さ」は、手法が「パストレーシング」でないと表現できません。

これは、ピクセルサンプリングのたびに「荒さ」を見て
反射または透明/屈折時の二次レイを揺らしているために実現できています。

大域照明 (Global Illumination : GI)

レンダリング設定で「大域照明」タブを選択し「大域照明」を「パストレーシング」にすると、
間接照明が反映されます。
これは、レイが衝突した形状表面の材質が「拡散反射」の場合に、衝突位置の法線方向を中心軸として半球状にレイを分散させます。

「大域照明」は、シーン内のすべての形状/材質で反射(光の散乱)をシミュレートして、より写実的な照明計算を行う手法になります。
「Global Illumination」を略して「GI」と呼ばれたりします。
直接照明と間接照明を合わせた表現ができます。

パストレーシングのレイの動き

パストレーシングのレイの動きは以下のようになります。

この場合は、視点からのスクリーンに向かって一次レイを飛ばし、
拡散反射面に衝突した場合は衝突位置の法線方向を軸にした半球状にランダムにレイを飛ばします。
反射形状に衝突した場合は、レイは衝突位置での法線を軸として入射角度と同じ出射角度で鏡面反射することになります。
鏡面反射時のレイは、「荒さ」が0.0の場合は散乱されません。
透明/屈折を持つ形状に衝突した場合は、屈折率により定まった方向にレイが曲がって直進することになります。
透明/屈折時のレイは、「荒さ」が0.0の場合は散乱されません。

パストレーシングの場合は、拡散反射/反射/透明(屈折)の材質でレイを追跡していくことになり、実質は「すべて反射」させることになります。
そのため、膨大な計算時間がかかります。

この大域照明計算の時間を短縮する手段として、「フォトンマッピング」と「イラディアンスキャッシュ」があります。

これらについては次回説明していくことにします。

レンダリング手法の「レイトレーシング」「パストレーシング」のどちらを選択すればよいか

アンチエイリアスの精度を上げたい場合、表面材質の「荒さ」がある場合は
レンダリング手法で「パストレーシング」を選択することになりますが、
この場合は計算時間がかかります。
また「大域照明」の選択との組み合わせもあるため、慣れないとどちらを選択したらよいか判断が難しいかもしれません。

ナレッジベースの「レンダリング手法と「大域照明」の組み合わせ」にもいくつか例をあげてますので、
こちらもご参照くださいませ。

大域照明を「パストレーシング」や「フォトンマッピング」にする場合でも、
レンダリング手法を「レイトレーシング」にしたほうが
レンダリングは速くなります。

材質の「荒さ」指定がない + 細かい表現がないシーンの場合

材質の「荒さ」がない場合、形状またはテクスチャで草や髪の毛などの細い表現がない場合は、
手法「レイトレーシング」でレンダリングします。

以下、手法「レイトレーシング」 – 大域照明「パストレーシング」でレンダリング。

形状やテクスチャで細かい表現があるシーンの場合

草や髪の毛など、テクスチャとして細かい表現があるシーンの場合は、
手法「レイトレーシング」でレンダリングすると、1ピクセル以下の表現が必要な箇所で正しく表現できない箇所が出てきます。
以下は、草の表現で途切れている箇所があります。

この場合は、手法「パストレーシング」でレンダリングします。

途切れる表現が緩和されました。

もしくは、「アンチエイリアシング」を「アダプティブサンプリング」か「オーバーサンプリング」にしてピクセルサンプリングの精度を上げるようにすることでも、
ピクセル精度が足りない部分は補間できます。

材質の「荒さ」が必要なシーンの場合

すりガラスのような表現の場合、手法が「レイトレーシング」だと表面材質の「荒さ」を調整してもぼかしはかかりません。
以下、ドアのガラスを「荒さ」0.5にしていますが、荒さがかかっていません。

手法を「パストレーシング」にしました。

また、「荒さ」を使用する場合はレンダリング設定での「その他」タブで「レイトレーシングの画質」の値を大きくしないとノイズが目立つことになります。

今回は、大域照明の概要とレンダリング手法による違いについて説明しました。
次回は、大域照明での手法による最適化として何が行われているか、
フォトンマッピングとイラディアンスキャッシュの仕組みについて説明していく予定です。

カテゴリー: レンダリング