graphics.hatenablog.com

技術系テクニカルアーティストのあれこれ

Physics and Math of Shading (1)

SIGGRAPH 2013 Course
Practical Physically Based Shading in Film and Game Production
Background: Physics and Math of Shading (Naty Hoffman)
http://blog.selfshadow.com/publications/s2013-shading-course/

The Physics of Shading

光 light というのは電磁波 electromagnetic wave の一種で、縦波と横波が直角に交わりながら直進する。
f:id:hal1932:20131022010650j:plain

波を特徴づけるのが波長 wavelength で、だいたい 400~700 ナノメートルの波長が、人間の目に見える。この波長が、光の色を決める。また、様々な光の効果 effect は、屈折率 refractive index によって決まる。これは本来複素数で表現されるもので、実部が波長の長さに、虚部が光の吸収され具合に、それぞれ影響を与える。
f:id:hal1932:20131022010733j:plain


Homogeneous Media
媒質中で屈折率の変化が起こらないような均質な物体中 homogeneous medium を伝搬していくときが、いちばんシンプルなケースになる。完全に均質ではなくても、波長に与える影響が 100 ナノメートル未満程度であれば、可視光線の波長域に比べて十分短いので無視して構わない。透明な媒質中では屈折率の虚部が十分に小さくなるため光は吸収されず、反射も起こらないので光はまっすぐに進むことができる。透明ではないが均質な、すなわち屈折率の虚部が十分に小さくない場合、例えばお茶のように、媒質に色がついてみえる。また、屈折率の虚部が十分に小さい場合でも、媒質中を進む距離が十分に長ければ、その媒質に色がついてみえる。水は透明なのに海が青くみえる理由は、光が海中を進む距離が非常に長いからだ。
f:id:hal1932:20131022010905j:plain


Scattering
媒質中でゆっくりと継続的に屈折率が変化するようなものを、均質ではない媒質 heterogeneous medium という。この中を伝搬するとき、光は曲がりながら進むことになる。屈折率が急激に変化すればするほど、光が曲がるときの曲率は大きくなっていく。そして光の波長よりも短い区間で屈折率が変わると、光は散乱 scatter する。これは、媒質中を満たす(光の波長よりも)小さな粒 particle によって、光が反射することにより起こる。
f:id:hal1932:20131022010948j:plain

ただし、光の進む方向が変わるだけなので、吸収されるときのように光の総量が減ることはない。反射する光の割合は粒の密度によって、反射方向のばらつき具合は粒の性質によって異なる。また、散乱具合が非常に小さい場合でも、その中を光が進む距離が十分に長ければ、散乱する光の量は大きくなる。大気が透明なのに遠くの景色が霞んで見えるのは、光が大気中を進む距離が非常に長いからだ。
f:id:hal1932:20131022011006j:plain


Media Appearance
大抵の媒質は、散乱と吸収の両方を引き起こす。媒質の見た目 appearance というのは、散乱と吸収の度合いの差によって変化する。
f:id:hal1932:20131022011033j:plain


Scattering at a Planar Boundary
マクスウェル方程式を用いれば、屈折率の変化が光に及ぼす影響を計算することができる。しかし、これを解析的に解くことができるケースは稀だ。そこで、完全に平面な境界面上 perfectly flat planar surface を光が通過するときの屈折を考えることにする。これを数式であらわしたものがフレネルの方程式 Fresnel equations だ。実際のところ、完全に平面な表面というのは存在しない。しかし、表面上のでこぼこが可視光線の波長よりも小さければ、それは無視できる。波長との相対スケールで考えれば、フレネル方程式が有用なケースも十分に存在する。そのようなケースを、光学的に平面 optically flat な表面と呼ぶ。光学的に平面な表面を光が通過するとき、光の進む方向は反射 reflection と屈折 refraction の二通りだけを考えればいい。
f:id:hal1932:20131022011100j:plain

反射後の光の角度は入射角とまったく同じで、屈折後の角度は屈折率によって異なる。この反射と屈折の割合を決めるのが、フレネル方程式だ。


Non-Optically-Flat Surfaces
もちろん現実には、光学的に平面でない non-optically flat 表面も存在する。このケースでは表面のでこぼこが光の波長よりも大きいため、光はそのでこぼこに沿って乱反射する。
f:id:hal1932:20131022011209j:plain

反射光の進む方向のばらつき具合は、でこぼこの大きさに比例する。つるつるな表面ではある程度決まった方向に光が反射し、ざらざらな rougher 表面ではばらばらの方向に反射する。シェーディングを行う際には、こういった非常に小さなでこぼこ microgeometry を考慮する必要がある。
f:id:hal1932:20131022011234j:plain


Subsurface Scattering
屈折した光の行き先は、反射する物体表面の性質により異なる。例えば金属 metal の表面は屈折率の虚部が大きいため、光のほとんどが吸収されてしまい、屈折した光して金属中に進んだ光は自由電荷となる。一方、非金属 non-metal の場合は金属ほどの吸収が起こらず、物体内部での複雑な反射を経て表面に戻り、そこから散乱する。この現象を、表面化散乱 subsurface-scattering と呼ぶ。
f:id:hal1932:20131022011301j:plain

シェーディングにおいては、表面化散乱の度合いを、描画されるピクセルの大きさによって考えることができる。表面に対して「引き」のカメラで、1 ピクセルの占める面積が十分に大きいとき、光は、入射した地点と同じ場所から散乱しているように見える。または「寄り」のカメラで 1 ピクセルの占める面積が十分に小さいとき、入射した光が近隣のピクセルから散乱しているように見える。前者はいわゆる「ディフューズ反射」であり、後者が「表面化散乱」として表現される。
f:id:hal1932:20131022011318j:plain