水面のライティング(1)~フレネル反射
法線マップを使ったバンプマッピングで表現する"さざ波"とは別問題で、水面の表現でキーポイントとなる要素が、そのライティングについてだ。
水面といえば、やはり、周囲の情景が映り込む「映り込み表現」がポイントになってくることは容易に想像が付くことだろう。よって、ライティングは法線マップを用いてただ鏡面反射や拡散反射のライティングを行うだけでなく、周囲の情景を描き込んだ(あるいは動的に生成した)環境マップのテクスチャを適用する必要がある。
ただ、環境マップ+バンプマッピングという表現では、水面というよりも液体が鏡になったような……いわば水銀のような表現になってしまう。水面らしいライティングが必要になるわけだ。
「水」は透明であり、適度に透き通っていることが望ましい。透き通っているということは透明ということだ。透明は水面よりも下の、水底の様子を透過させるということになる。
結局、イメージとして、水面は「水底の様子」と「環境マップ」の混ぜ具合を調整することがリアリティを高めることに繋がってくることが想像できる。
そこで応用するのが「フレネル反射」(Fresnel Reflection)という概念だ。
水面と視線の位置関係において、水面に対して視線が直角に近くなればなるほど水底が見えやすく、水面に対して視線が掠めるような浅い角度になればなるほど周囲の情景が映り込んで見えやすくなる。
遠くの水面の方が周囲の情景をよく映り込ませ、足元の水面は水底がよく見える……という実体験は誰にでもあると思うが、あれを再現してやればいいのだ(図1)。
このフレネル反射の概念は、光沢をともなった車のボディや、人間の肌表現などにも応用されることがある。(続く)
(トライゼット西川善司)