![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
サブサーフェス スキャッタリング(SSS)は、オブジェクトに入り、そのサーフェスの下で散乱する光の効果をシミュレートします。すべての光がサーフェスで反射するわけではありません。 一部は照らされているオブジェクトのサーフェスを貫通します。 そこで、マテリアルによって吸収され、内部で散乱されます。 この散乱した光の一部は、サーフェスの外に戻り、カメラで確認できるようになります。 これは「サブサーフェス スキャッタリング」または「SSS」として知られます。 SSS は、大理石、スキン、リーフ、ワックス、ミルクなどのマテリアルのリアルなレンダリングに必要です。 このシェーダの SSS コンポーネントは、ブルートフォース レイトレース方式を使用して計算されます。
ジオメトリ法線が正しい方向を向いていることを確認する必要があります。そうしないと、SSS は正しくレンダリングされません。
![]() |
![]() |
外側を向いている法線(正しい)
|
内側を向いている法線(正しくない)
|
SSS は、例えばプラスチックなどのリアルなマテリアルを複製するときに重要です。
![]() |
![]() |
SSS が無効
|
SSS が有効
|
Weight
拡散反射光とサブサーフェス スキャッタリング間の「ブレンド」です。 1.0 に設定すると SSS のみになり、0 に設定すると Lambert のみになります。 ほとんどの場合は 1.0 (完全 SSS)にします。
![]() |
![]() |
![]() |
0 (既定)
|
0.5
|
1
|
[色]
サブサーフェス スキャッタリングの効果を決定するために使用されるカラーです。 たとえば、スキン マテリアルを複製する場合は、肉質のカラーを設定します。
![]() |
![]() |
![]() |
![]() |
![]() |
リンゴ
|
ニワトリ
|
クリーム
|
ケチャップ
|
大理石
|
![]() |
![]() |
![]() |
![]() |
![]() |
ポテト
|
スキムミルク
|
スキン 1
|
スキン 2
|
全乳
|
スキン カラー
スキン シェーダの設定の例
半径(Radius)
ライトがサーフェスの下に散乱できる、おおよその最大距離です。「平均自由工程」(MFP)とも呼ばれます。 このパラメータは、散乱したライトが外に戻る前にサーフェスの下に伝播する平均距離に影響を与えます。 距離に対するこのような効果は、カラー コンポーネントごとに個別に指定できます。 値を大きくするとサブサーフェス スキャッタリングの外観がスムーズになります。一方、値を小さくすると不透明な見た目になります。
![]() |
![]() |
![]() |
0.25
|
0.5
|
1 (既定)
|
カラーが明るくなるほど、光の散乱が多くなります。 値が 0 の場合、散乱効果は生成されません。
![]() |
![]() |
![]() |
0
|
0.5
|
1 (既定)
|
半径の値を大きくすると、マテリアルの外観が、皮革風から大理石風のように、大幅に変更される可能性があります。 SSS はスケールに大きく依存しています。 半径の乗数はモデルのサイズに応じて調整する必要があります。 既定の SSS 設定を使用してレンダリングすると、外観が適切に見えない場合があります。 また、シーン スケールを調整すると、同様の結果になる可能性があります。
![]() |
![]() |
![]() |
0
|
0.5
|
1 (既定)
|
すべてのカラーを同程度に分散させるのではなく、RGB のカラーごとに異なる半径値を選択することもできます。 たとえば、スキンのような マテリアルは、緑と青よりも赤い半径を大きくする必要があります。
スキンをレンダリングするときは、1.0、0.35、0.2 などの値を使用します。これは、赤が最も深く散乱し、緑と青が控えめになることを示します。 これにより、スキンの 3 層レイヤのワークフロー(深いレイヤ、中間レイヤ、浅いレイヤ)が置き換えられ、深いレイヤを赤にしてその深さではより大きな半径で散乱させることができます。scatter_radius.R をより大きな値に設定することがこれに対応します。
![]() |
![]() |
白(既定)
|
淡い赤
|
下のイメージは、赤の半径のカラーを大きくしたときの効果を示しています。円のエッジの周りの色が付いた「フリンジング」効果に注目してください。 コンポジット用ソフトウェア内のソース イメージの赤のチャネルにガウス ブラーを適用すると同じ効果が発生します。
![]() |
![]() |
R:0.5 G:0.5 B:0.5
|
R:0.1 G:0.5 B:0.5
|
Scale
反射が戻る前にライトがサーフェスの下で移動する可能性のある距離をコントロールします。 スキャッタリングの半径をスケールして、sss_radius_color を乗算します。
![]() |
![]() |
![]() |
0
|
1 (既定)
|
2
|
シーンがメートル単位の場合は、 SSS Scale を 0.01 に設定し、sss_radius をセンチメートル単位で指定することができます。たとえば、スキンの場合、sss_radius は 0.37cm、0.14cm、0.07cm のように指定できます。
![]() |
![]() |
![]() |
0
|
0.25
|
0.5
|
[タイプ]
拡散
1 つのレイヤで、サーフェスのディテールと深い散乱の両方をキャプチャできます。完全なモンテカルロ シミュレーションの特性に厳密に一致するように設計されていますが、完全な randomwalk よりもはるかに安価に評価できる近似を維持します。
Randomwalk (既定)
拡散理論に基づいた経験的 BSSRDF メソッドとは異なり、randomwalk メソッドは実際のランダム ウォークによってサーフェス下のトレースを行うため、ジオメトリは局所的にフラットであるという想定は行いません。これは、ブルートフォース ボリューム レンダリングのように、異方性スキャッタリングを考慮に入れることができ、凹面や小さいディテールでの結果がはるかに良くなることを意味します。 スキャッタリングの半径が大きい(平均自由工程が大きい)場合に、拡散に比べて処理が速くなる可能性があります。 一方 randomwalk は、高密度のメディア(平均自由工程が小さい場合)で低速になり、2 つのサーフェスをブレンドする際に sss_setname
がサポートされません。また、類似の外観を得るためにマテリアルの再調整が必要になる可能性があります。さらに、閉じていないメッシュ(mouth bag)、および影を落とす可能性のある内部ジオメトリに対してはうまく動作しないことがあります。
Randomwalk v2
この方法は、透明度が高く光学的に薄いオブジェクトを介してより正確に深く散乱します。その結果、オブジェクト表面の細部およびバックライトが強い領域の周囲に、カラーが飽和状態の SSS が生成されます。randomwalk は平均してより長くランダムになるため、レンダリングは元の方法よりもコストがかかりノイズが多くなります。
![]() |
![]() |
![]() |
拡散
|
Randomwalk (既定)
|
Randomwalk v2
|
Anisotropy
-1 (完全な後方散乱)と 1 (完全な前方散乱)の範囲の Henyey-Greenstein 異方性係数です。 既定は等方性媒質用の 0 です。これは、ライトを全方向に均等に散乱させ、均等な効果を得ることができます。 正の値は前方(ライトの進行方向)に散乱効果をバイアスします。一方、負の値は後方(光源の方向)に散乱効果をバイアスします。
このパラメータは、randomwalk SSS メソッドでのみ動作します。
![]() |
![]() |
![]() |
-0.7
|
0 (既定)
|
0.7
|
オブジェクト間の SSS
同じ SSS「セット」に属する複数のオブジェクトにタグを付けて、照明がオブジェクトの境界にまたがってぼやけるようにすることができます。 一般的な使用例は、歯と歯茎ジオメトリの間のぼかしです。 これを有効にするには、定数 STRING userdata sss_setname をセット内のオブジェクト上の同じ値に追加します。
これは現在、randomwalk SSS メソッドでは機能しません。
![]() |
![]() |
セット名なし
|
同じセット内のオブジェクト
|