ホーム >> RSS >>

RSS

  メイン  |  簡易ヘッドライン  

link (2017-9-18 0:02:18)

feed (2014-12-15 14:17:24)
お疲れ様です。
吉田です。

だいぶ前になりますが、金属反射に関して説明したので、今回は表面の粗さによって反射が変わるということを説明します。

この中で使用しているのは、mentalrayのMILAで作成した画像です。

MILAでは、Glossy Reflectionの表面の粗さをRoughnessで表現するようになり、0がつるつる、1.0が表面ざらざら(粗い)になります。mia_materialのときはGlossinessだったのでアトリビュートが違います。
しかし、どちらにせよ表面の粗さ、光沢、つるつるざらざらを決めることには変わりません。

初めに物理的に正確とはどういうことかというと・・・

物体に入射した光は一部が反射され,一部が透過し、一部が吸収されます。その関係が上の図でA+B+Cは必ず100%になります。これをエネルギー保存の法則と言います。

005


エネルギー保存の法則は、エネルギーは形はかえても、その量は増えも減りもしないという事で、入射光のエネルギーは「透過光エネルギー+反射光エネルギー+吸収されたエネルギー(熱に変換)」になるという事です。

マテリアルをレイヤリングする時は特に重要で、拡散、光沢、スペキュラ反射、透過のコンポーネントをどれだけ重ねてもエネルギー保存の法則を守っている必要があります。これが物理的に正確=物理ベースということになるかと思います。

では、本日のお題である粗さと反射です。

光が表面の境界線に衝突すると“反射”=“跳ね返り”が起こります。

Wikipediaによると鏡面反射の説明は下記になります。

++

鏡面反射(きょうめんはんしゃ、英: Specular reflection)は、鏡などによる完全な光(あるいはその他の波動)の反射であり、一方向からの光が別の一方向に反射されて出て行くこと。反射の法則により、光の入射角と反射角は反射面に対して同じ角度となる。

001

(wikipediaより図参照)

++

つまり、鏡面反射の場合、完全に光が入ってきた角度と同じ角度で反射することで、光源の映りこみ現象が起きその部分明るく光って見えるということになります。

実際の身のまわりには,ピカピカつるつるのものはそれほど多くはありません。つるつるピカピカがすくないのは、物体の表面に細かい粗さがあるためです。

Wikipediaによると拡散反射とは

++

拡散反射(かくさんはんしゃ diffuse reflection)とは、平坦でないかざらざらした表面からの光の反射のことで、入射光が様々な角度で反射しているかのように見える。乱反射(らんはんしゃ)ともいう。これは鏡面反射を補完するものである。もし、表面がまったく鏡面反射しなければ、反射光は表面をぐるっと半球状(2πsr)に一様に広がるだろう。

001

(wikipediaより図参照)

++

上記のように反射光は、物体表面の特性に応じて、鏡面反射と拡散反射の二種類に分けられますが、多くの場合、両者が組み合わされた形で反射します。どのような比率になるかは物体の表面粗さに大きく影響を受けます。

つまり、本来はモデリングでも表現できないような表面の細かい凹凸(ざらざら)によって、鏡面反射が強いのか拡散反射が強いのかということがきまります。これがRoughness(粗さ)です。

左からMILAのGlossy Reflectionにて、Roughness 0 , 0.4, 0.8, 1.0です。
006


Diffuse Reflectionの上に、Gloosy ReflectionをFrenel Layerとして重ねRoughness 0 , 0.4, 0.8, 1.0に変化させた状態です。いちばん左はDiffuse Reflectionのみです。
007


Roughnessの値が大きくなるにつれ、鏡面反射から拡散反射に近づきます。Roughnessが小さいほどつるつるなので、ハイライトは小さくなり(光源がそのままうつりこむ)、単位面積当たりの明るさは明るくなります。
それに対し、Roughnessが大きいと表面の凹凸により光が乱反射して、ハイライトが大きくなっていき、単位面積当たりの明るさは落ちるものの明るさがより均一に分配され、Lambert反射(どこから見ても均一の明るさ)
に近づきます。


ライティングされたつやつやな表面の青いプラスチックを正反射光の方向から見ると、光源の色が強く見え(サンプルの画像だと電気の白)、その部分のプラスチックの青い色はよく見えません。表面の粗さの違いによって色の見え方が違うというのは、拡散光の強さが違うということになります。

人が物の色を見るときは、拡散反射光を見ています。表面状態が変わると色が違って見えますが、素材の色は変わりません。つやつやな表面の青いプラスチックを艶消し処理(ざらざらに)をして表面からの拡散反射光の量は増しますが、逆に正反射光の量は同じ量だけ減っています。

008


上記のようにRoughnessが変化してもエネルギー保存の法則があるので、全体の反射光の強さは同じになります。つまりはどんな反射をしても、光の強さは同じといういうことですね。

001


さらに金属以外の場合、反射が角度に依存する割合は、マテリアルの反射は、最終的には視点からの入射角が考慮されます。MILAでFreneLayerとして追加する場合、マテリアルの IOR のみによって導き出されます。これは、フレネル反射として知られ、水、ガラスなどのほとんどの誘電性マテリアルの動作です。

下記はDiffuse Reflectionの上に、Gloosy ReflectionをFrenel Layerとして重ねRoughness 0としました。
IORを1.0,1.33(水),1.51(ソーダ石灰ガラス),1.66(エボナイト、ボーリングの玉)と変化させています。
009


IOR1.0は大気と同じになり、光は反射および屈折を起こしません。IORを変化させていくと、カメラの正面に位置するサーフェスの反射(または入射光線)から、カメラに対して垂直に位置するサーフェスの反射に対して反射率が変化していくことがわかります。ほとんどのマテリアルはグレージング角度によって強い反射を示し、上記の画像ではすべて同じ反射(1.0、全反射)の状態であることがわかります。

下記は左右ともに全く同じ設定ですが、カメラの角度によって反射率が全く異なることがわかります。
010


リアルタイムのShaderによっては、IORでの反射の違いは金属と金属以外ほどの差はないとしてオプションとしてIORを持たないものもあるとのことです。

ちなみに金属ではないのによく反射する素材というのは、表面に透明のコーティングが施されているものです。
透明成分が光を取り込み、その下にある素材の表面の粗さによってよって光が乱反射するためです。

たとえば、煉瓦は通常ほぼ反射をしませんが、その上に雨が降るとよく反射するようになります。
011


上に透明な水の層ができ、それが下にある煉瓦の表面で反射するので上記のような状態になります。
また、水はメタル素材ではないため、手前と奥では反射率が違ってきます。

どんな素材が重なっているかによって、反射が変わってくるのでよく観察すると面白いですね。

でも、文章で説明してもわかりにくいですよね。
ざっくりまとめると表面の非常に細かい凹凸の具合によって、鏡面反射と拡散反射の間を補完しつつ、エネルギー保存で反射する光のエネルギーは常に同じになるというお話でした。
Shader内部でエネルギー保存は通常デザイナーの方が考える必要はありません。重要なのは、つくりたい素材の表面がつるつる(Roughness = 0)からざらざら(Roughness = 1.0)の間のどのレベルなのかということです。

参考になったでしょうか?いや、わかりにくいですよね。
何回か推敲したのですが、うまい言葉で説明できなくて申し訳ないです。
少しでもご参考になれば幸いです。

吉田


execution time : 0.030 sec

ホーム ニュース フォーラム UserBlog 道場Wiki
Powered by XOOPS Cube Legacy 2.1.7 2001-2009 XOOPS Cube Project
cvELD.net project [ Softimage & XSI道場 ] since 2004 1/1