2012年6月29日金曜日

「光があたる面が明るい」というのは本当?

中学校の授業で画用紙にいくつもの直方体を描いたのを今でも覚えています。透視図法の授業だったでしょうか。
先生に教わったのは「光があたっているところを明るく塗りましょう」という主旨のこと。
当時は特に疑いもしませんでした。

しかし長く絵を描き続けていると、何度も「あれ?」と思う場面に行き当たります。

「光があたっているところが明るい」では説明がつかない絵や写真の数々。
実物を見れば、不規則なんじゃないかと思えるほどの複雑な陰影に混乱させられるばかり。
なにより、教わったとおり描いた絵に現実感というものが出てきません。


"どうやら「光があたる面が明るい」という考え方を無条件に信じてはいけないらしい"


そんな答に行き着いたのは、私が未だ黎明期だった3DCGの知識に触れるようになった頃です。
そして飛び交う難しい知識の中でひとつ、私に大きな転機をもたらした「ランバート反射」という言葉に出会いました。


「ランバート反射」という言葉、絵を描く知識を求めていると出会いにくいかもしれません。
それもそのはず、これこそ中学で教わった「光があたる面が明るい」というまさにあの理論で、その名前など気にした事がない人の方が遥かに多いでしょう。
どちらかというとイラストよりも3DCG分野の用語で、絵描きよりもプログラマの方が詳しい場合が多いんじゃないでしょうか。

ランバート反射で絵を描くとこんな感じです。
面の明るさを決めるのは光源に対する角度と光の強さのみ。
球の表面はなだらかなグラデーションとなり、平らな面の明るさは一様に同じです。

点光源やグラデーションを飛ばすほどの光があたるとまた条件が変わってきますが、面倒になるのでここでは置いてっちゃいます。



 Wikipedia で調べるとこんな風に書いてありました。

以下引用
ごつごつした面がすべて完全なランバート反射をするわけではないが、面の特性が分からないときにはしばしばよい近似になる。
ここまで
↓Wikipedia「ランバート反射」リンク時最終更新 2012年5月21日 (月) 02:38
http://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%B3%E3%83%90%E3%83%BC%E3%83%88%E5%8F%8D%E5%B0%84



近似ってことは似てるけど違うということ・・・?

もちろん考え方そのものが間違っているわけじゃありません。
計算が楽なので、コンピュータグラフィックスの進化の中で「近似」として重宝されてきました。
言うまでもなく、古来絵を学ぶ者に親しまれた分かりやすい初歩でもあります。

しかしこの「ランバート反射」、よく似た結果になる概念を代替として使ってきたに過ぎず、現実世界では非常に限定的にしか見られない、普遍的というには程遠いものらしいのです。

名前も知らぬままそれを拠り所にに絵を描いていた当時の私には、足元がひっくり返るようなお話でした。




それじゃ私たちが最もよく目にしているであろう現象はなんていうんでしょう。

実際にはここで挙げればキリがないほどのいろんな現象が私たちの視覚を刺激しているわけですが、今回はそのうちのひとつ、拡散反射をランバート反射の対比としてまとめてみました。

拡散反射は殆どの素材表面で起こる一般的なもので、恐らく日常生活で最も多く私たちが目にしている現象です。
ものすご~く乱暴な言い方をすれば、鏡面反射もランバート反射も、ごく限られた条件で起こる拡散反射の一形態にすぎません。

拡散反射を模式的に描くとこうです。

ランバート反射と拡散反射が大きく違うのは、「光がどこからあたっているか」だけではなく、「どこから見ているか」によっても陰影の見え方が変わるところ。
(※正確には「ランバート反射」の方に見ている方向によって明るさが変化しないという特徴があります)




これを考慮するかどうかで、絵の描き方は大きく変わってきます。



球の例から見てみましょう。
左図、ランバート反射で面の明るさを決めるのは光源と面との角度 θ です。

計算式に三角関数が出てきますが、絵描きに数値は重要じゃありません。この際ほっといてもいいでしょう。
球は光源を向いている点が最も明るくなり、そこを中心に同心円を描くなだらかなグラデーションが現れます。



対して、拡散反射で最も明るくなるのは右図のように法線と光源の方向、法線と視点の方向で角度が等しくなる面です。

法線というのは、ある面に垂直に引いた線のことで、その面がどちらを向いているかを表します。

これも詳しい計算式はほっといていいでしょう。
絵にする際に気をつけなきゃならないのは、明るい部分が手前側にずれるということ。光源を向いている点が最も明るい点とはなりません。

また、両者の陰の位置関係に注意してみてください。
明るい部分はランバート反射と拡散反射で異なりますが、陰は「光があたっていない」部分なのでどちらでも同じです。

これによって、明るい面が手前にくる拡散反射では同じ光の強さでも陰との境界がはっきり見える場合が多くなります。
陰影を描く場合、丸いものにもグラデーションではなくはっきりした明暗の境界を描いた方が "らしく"なるのはこのあたりに原因があるんじゃないでしょうか。



立方体、平面でも表現に違いが出てきます。
ランバート反射では、平行光源を平面上のどこに受けても面と光源の角度は変わりませんから明るさは一様になります。



一方拡散反射では、並行光源でも面の角度が同じだからといって同じ明るさにはなりません。

面の位置によって視点との角度θも変わり、反射した光が眼に届く量も変わります。

ここでも三角関数が出てきますがこの際・・・(略)

結果として右図のように、平行光源かつ、平らな面でもグラデーションが現れることになります。


こう考えるとつまり、平面にもグラデーションを描きこんだ方が自然に見えるということになります。
グラデバカ(死語?)なんて言われても気にせずがんがんグラデーションを描きこんでいっちゃいましょう。
ただし用法、用量はよく守って・・・




この他にも、ランバート反射では説明できなかった陰影のいくつかが拡散反射によって理論的に裏打ちできます。
多くの場合、それは絵を描く上で経験則的に語られている理論、セオリーへの帰結なのでしょう。
もしかしたら随分な遠回りをしているのかもしれません。




「ランバート反射」という考え方からの脱却。理解した上での消化というべきでしょうか。
それは私にとって大きなブレイクスルーのひとつでしたが、ここを御覧の方にはいかがだったでしょう。

既に御存知の方もいらっしゃれば、違うよーという方もいらっしゃるかもしれません。
微妙すぎて変わらないよという方もいらっしゃるかもしれませんネ。

所詮理論は理論ですから、"それらしさ"への道は各自異なってもいいのでしょう。