サブサーフェス・スキャッタリング

「サブサーフェス・スキャッタリング」の編集履歴(バックアップ)一覧に戻る

サブサーフェス・スキャッタリング - (2020/03/15 (日) 09:09:41) の編集履歴(バックアップ)


外観の開発:サブサーフェス・スキャタリング(表面下散乱)

このガイドで使用するモデルのデフォルトレンダリング。

Terragenのほとんどのシェーダでは、サーフェスから跳ね返る光をシミュレート出来ますが、一部のシェーダはオブジェクト内で跳ね回る光もシミュレートする事が出来ます。このガイドでは、『Glass shader』を使用して、オブジェクトを通過して散乱する光をシミュレートします。

『Default shader』(上下の画像)は、ほとんどのマテリアルを処理する事が出来ます。また、葉や紙などの希薄なオブジェクトの半透明性をシミュレートする事が出来ます。

黄色の半透明を表現した『Default shader』

適切なサブサーフェス外観を実現するには、『Glass Shader』が必要です。

さらに、レンダラーをパストレーサーに変更する必要があります。

『Glass shader』(デフォルト設定)

『Glass shader』のプロパティウィンドウには、サブサーフェスタブがあります。ここで、オブジェクト内での光の動作を調整します。

"Decay distance"は、減衰の色合いに達するまでに照明が移動する距離(メートル単位)です。純粋な赤の減衰の色合いは、マテリアルが赤以外のすべての波長を吸収する事を意味します。
リアルな結果を得るには、微妙な色を使用する事をお勧めします。減衰距離を下げると、薄い赤がどれほど濃厚になるかを確認して下さい。

"Volume density"は、モデルの内部がどの程度「密度が高いか」を定義します。これは、オブジェクト内で反射する光のすべての微細粒子をシミュレートする事を意味します。粒子が多いほど、バウンドが多くなるため、表面下の散乱が多くなります。
雲の中の水滴の量、または氷の中の気泡の量と考えて下さい。
"Volume colour"の色に使用されているのと同じ淡い赤です。"Volume density"の値を上げた時の動作を確認して下さい。

信じられないほどのサブサーフェス効果を達成するには、"Volume density"と"Decay distance"の両方のバランスを取る必要があります。
"Decay distance"を短くするほど、"Volume density"がオブジェクトに強く影響します。"Decay distance"によって光が奥深くまで伝わらない場合、オブジェクト内の密集度を散らせる必要があります。
これが、与えられたマテリアル内で光が実際にどれだけ伝わるかを考える必要がある理由です。宝石、氷、大理石、ワックス、人間の皮膚は、同じ減衰距離または体積密度を持ちません。従って、サブサーフェスの外観はモデルの比率に大きく依存します。

PT(パストレース)の照明方法には、2つのサブサーフェスオプションがあります:
"Subsurface scatter in all directions"は、閉じたオブジェクト内の光を正確に散乱するように設計されています。
"Subsurface scatter towards nomal"は、水面などのシンプルで平らなオブジェクト用に設計された高速な方法です。

オブジェクトの表面に向かってだけでなく、オブジェクト内で光が跳ね返る時に、すべての方向のサブサーフェスがより自然に見える事に注目下さい。
光はオブジェクトの縁や薄い部分をよりリアルに通過し、必要に応じてより深い陰影を作成する事もあります。

次に、色を追加します。"Decay tint"と"Volume colour"を異なる緑の値に変更します。
"Decay tint(減衰の色合い)"は、光が通過する時のマテリアルの色を決定します。
"Volume colour(ボリュームカラー)"は、内部で光が反射する時のマテリアルの色を定義します。

ここで、フラクタルノイズを作成し、"Volume density function"に差し込みます。

『Transform input shader』を作成し、それを"Use world space"に変更する必要があります。これにより、ノイズがサーフェスのUVにマッピングされるのではなく、3D空間に適用されます。
『Image map shader』を使用してテクスチャを入力する事も出来ます。

"Volume density function"で適用されるフラクタルノイズとの違いを次に示します。
光がマテリアルを通過する領域に注意して下さい。これにより、一部の領域の均一性が低下します。


『Glass shader,』の「Main」タブに戻り、"Specular roughness"を確認します。

"Specular roughness"は、より繊細でありながら、本質的なマテリアルを実現するために不可欠な役割を果たします。

オブジェクトの表面の微小な欠陥をシミュレートし、多少「研磨」します。これにより、鏡面反射と反射が制御されるため、屈折のシャープネスに影響します。

粗さが増すにつれて、ティーポットハンドルがより「グミ」に見える事に注視して下さい。
"Anti-aliasing"を3から6に増やし、"Max path per sample"を36に増やすと、かなりまともな画像が得られます。

"Volume Colour function"は、3Dノイズやテクスチャマップの両方を使用してモデルの表面の模様や質感を与える事が出来ます。
ただし、考慮すべき重要なパラメーターもあります。カラー関数を体積として数値化します。

これは、サブサーフェスの外観を意図するためにテクスチャを使用する場合に重要な役割を果たします。光線がオブジェクト内を進行する時にカラーを計算します。
このサンプルでは、テクスチャがオブジェクトに(Z軸上に)投影され、"Volume colour function"に差し込まれています。
2つの色の算出の違いをはっきりと見る事が出来ます。左図はサーフェスからテクスチャの色を保持し(ガラス効果を無視)、右図はボリューム内のポイントでテクスチャを算出します。