拡散反射と鏡面反射の違いは物理的にどの程度ですか?


34

リアルタイムのコンピュータグラフィックスで表面をシェーディングする古典的な方法は、(ランバート)拡散項と鏡面反射項の組み合わせであり、最も可能性が高いのはPhongまたはBlinn-Phongです。

ウィキペディアからの画像

現在、FrostbiteUnreal EngineUnity 3Dなどのエンジンの物理ベースのレンダリング、したがってマテリアルモデルに向かう傾向により、これらのBRDFは変更されました。たとえば、最新のアンリアルエンジンはまだランバートディフューズを使用していますが、鏡面反射にクックトーランスマイクロファセットモデルと組み合わせて使用​​します(特にGGX / Trowbridge-Reitzとフレネル項の修正されたスリック近似を使用) )。さらに、導体と誘電体を区別するために「金属性」の値が使用されています。

誘電体の場合、拡散はマテリアルのアルベドを使用して色付けされますが、鏡面反射は常に無色です。金属の場合、拡散は使用されず、鏡面反射項には材料のアルベドが乗算されます。

現実世界の物理マテリアルに関して、拡散反射と鏡面反射の厳密な分離は存在しますか?存在する場合、それはどこから来たのですか?なぜ一方が着色されているのに、もう一方は着色されていないのですか?導体の動作が異なるのはなぜですか?

回答:


30

最初に、レンダリングの物理学を扱ったNaty HoffmanのSiggraph プレゼンテーションを読むことを強くお勧めします。そうは言っても、彼のプレゼンテーションから画像を借りて、あなたの特定の質問に答えようとします。

単一のライトパーティクルがマテリアルの表面上のポイントに当たると、反射または屈折の2つのことができます。反射光は、鏡のように表面から跳ね返ります。屈折した光は材料内部で跳ね返り、入射した場所から少し離れて材料から出る場合があります。最後に、光が材料の分子と相互作用するたびに、いくらかのエネルギーが失われます。エネルギーが十分に失われた場合、完全に吸収されたと見なされます。

Natyを引用すると、「光は電磁波で構成されています。そのため、物質の光学的性質はその電気的性質と密接に関連しています。」これが、材料を金属または非金属としてグループ化する理由です。

非金属は反射と屈折の両方を示します。 非金属

金属材料には反射のみがあります。屈折した光はすべて吸収されます。 金属

軽い粒子と材料の分子との相互作用をモデル化しようとすると、法外な費用がかかります。代わりに、いくつかの仮定と単純化を行います。

屈折の単純化

ピクセルサイズまたはシェーディングエリアが出入口距離と比較して大きい場合、距離が事実上ゼロであると仮定できます。便宜上、光の相互作用を2つの異なる用語に分割します。表面反射の用語を「鏡面反射」と呼び、屈折、吸収、散乱、再屈折から生じる用語を「拡散」と呼びます。 拡散反射と鏡面反射に分割する

ただし、これはかなり大きな仮定です。ほとんどの不透明な素材の場合、この仮定は問題なく、現実とあまり変わりません。ただし、あらゆる種類の透明性を持つマテリアルの場合、仮定は失敗します。たとえば、牛乳、肌、石鹸など。

材料の観察される色は、吸収されない光です。これは、反射光と、素材から出る屈折光の両方の組み合わせです。たとえば、純粋な緑色の材料は緑色ではないすべての光を吸収するため、目に届く光は緑色の光だけです。

したがって、アーティストは、マテリアルの減衰関数、つまりマテリアルが光をどのように吸収するかを与えることにより、マテリアルの色をモデル化します。簡略化された拡散/鏡面反射モデルでは、これは拡散色と鏡面反射色の2色で表すことができます。物理ベースの素材が使用される前は、アーティストはこれらの色をそれぞれ任意に選択していました。ただし、これら2つの色が関連していることは明らかです。これがアルベド色の出番です。たとえば、UE4では、次のように拡散および鏡面反射色を計算します。

DiffuseColor = AlbedoColor - AlbedoColor * Metallic;
SpecColor = lerp(0.08 * Specular.xxx, AlbedoColor, Metallic)

ここで、Metallicは非金属の場合は0、金属の場合は1です。「鏡面反射光」パラメータは、オブジェクトの鏡面反射性を制御します(ただし、通常は材料の99%に対して一定の0.5です)


1
反射/屈折後に入射光線が分割されるのはなぜですか?ライトがパーティクルの場合、それはこのパーティクルが再帰的に分割されることを意味しますか?そして、光が波である場合、それは周波数によって分割されることを意味します(しかし、この場合、なぜ2番目/ 3番目などがヒットした後に分割するのですか?)
ニキータブラック

5
パーティクルは分割されません。むしろ、画像はそれが取る可能性のあるパスを示しています。
-RichieSams

2
多くのパーティクルが(ほぼ)同じ角度から(ほぼ)同じスポットにヒットします。出て行くすべての粒子には、(通常)入った粒子があります。つまり、特定のスポットで特定の角度からの粒子のビームを平均化すると、いくつかの(たくさんの)反射に分割されます。
ラチェットフリーク

1
私の質問のほとんどに光を当てる素晴らしい答え。非金属の鏡面部分が無色で、アルベドの影響を受けないのはなぜですか?分極はどのように、どこで作用しますか?
デビッドクリ

1
「材料の観察される色は、吸収されない光です。」この時点で、RGBでうまく表現されていない一般的なマテリアルはありますか?蛍光材料が頭に浮かぶので、議論。
サイモンF

23

私は実際に数日前にまさにこれについて疑問に思っていました。グラフィックコミュニティ内でリソースを見つけられなかったため、実際に大学の物理学部に行き、尋ねました

グラフィックスの人々が信じている多くの嘘があることがわかります。


まず、光が表面に当たると、フレネル方程式が適用されます。反射/屈折光の割合はそれらに依存します。あなたはおそらくこれを知っていたでしょう。

「鏡面反射色」のようなものはありません

屈折率は波長に基づいて変化するため、フレネル方程式は波長に基づいて変化するということを知らなかったかもしれません。バラツキは誘電体(分散、誰か?)では比較的小さいですが、金属では非常に大きくなる可能性があります(これはこれらの材料の異なる電気構造に関係していると思います)。

したがって、フレネル反射の項は波長によって異なるため、異なる波長が優先的に反射されます。広域スペクトル照明の下で見ると、これが鏡面反射色につながります。しかし、特に、表面で魔法のように起こる吸収はありません(他の色はちょうど屈折します)。

「拡散反射」のようなものはありません

Naty Hoffmanが他の回答にリンクされた講演で述べているように、これは実際に外散乱表面下散乱の近似です。

金属は光を透過します

Naty Hoffmanは間違っています(より正確には、単純化)。光はしないすぐに金属に吸収され。実際、数ナノメートルの厚さの材料を非常に簡単に通過します。(たとえば、金の場合、587.6nmの光(黄色)を半分に減衰させるには11.6633nmが必要です。)

誘電体の場合のように、吸収はランベルトベールの法則によるものです。金属の場合、吸収係数は非常に大きくなります(α=4πκ/λ、ここでκは屈折率の虚数成分(〜0.5以上の金属の場合)、λはメートルで与えられます)。

この透過(より正確には、それが生成するSSS)は、金属の色のかなりの部分を実際に担っています(ただし、金属の外観は鏡面反射によって支配されているのは事実です)。


3
ありがとうございました!私は単純化だけを知っていました。これらの追加の詳細は素晴らしいです
-RichieSams

1
これは魅力的な答えです。頭字語SSSを明確/リンクしてください。
trichoplax

@trichoplaxありがとう!SSS ==表面下散乱。
イマレット

ありがとう:)質問でそれを明確にすると、コメントの削除後も存続します(長命の保証はありません)。リンクとホバーテキストを編集しました。これにより、意図したプレゼンテーションがそのまま残されることが期待されます。
センモウヒラムシ

2
私はこの答えの素朴さに感謝しています。サブ表面散乱はmmスケール効果と見なされますが、分子範囲ではすべてがある程度表面を通過します。しかし、基本的な制約は、一般にmmスケール効果をカウントし、統計モデルとして下位レベルを抽象化しようとしていることです。したがって、ほとんどのピクセルはこれよりもはるかに大きな領域を見るため、マイクロメートルはすぐに等しくなります。私たちの目や脳がそれを予測するのと同じように、物理学に有意義に存在しない色にも同じことが当てはまります
joojaa
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.