環境マッピングは、
3次元コンピュータグラフィックス(3DCG)において、物体の表面に周囲の環境を擬似的に映し出す
テクスチャマッピングの技術です。この手法は、
レイトレーシングを用いずに、ローカルイルミネーション計算のみで、
鏡面反射、
金属光沢、屈折などの視覚効果を表現できる点が特徴です。
概要
本来、周囲の環境を正確に映し出すためには、
レイトレーシング法によって反射を描画するのが理想的です。しかし、
レイトレーシングは画素ごとに膨大な計算を必要とし、処理負荷が大きくなるという課題があります。また、
実写映像など、別途用意された環境の映り込みを表現したい場合もあります。
環境マッピングは、このような課題を解決するために、より簡易的な手法として開発されました。この手法では、あらかじめ周囲の環境(全周囲の風景)を撮影した画像(環境マップ)を用意し、それを物体の表面にテクスチャとしてマッピングすることで、周囲が映り込んでいるように見せかけます。環境マップは通常、単一の視点から撮影された画像であるため、映り込む風景は正確ではなく、あくまで擬似的なものとなります。
反射マッピングと屈折マッピング
環境マッピングには、主に反射マッピングと屈折マッピングの2種類があります。
反射マッピング:
物体の表面の
法線ベクトルを軸として、視線ベクトルの反射ベクトルを計算します。そして、この反射ベクトルに対応する環境マップの
テクセルを物体の表面にマッピングすることで、擬似的な映り込みを再現します。
屈折マッピング:
反射ベクトルの代わりに、指定された屈折率に基づいて屈折ベクトルを計算する点を除いては、反射マッピングと同様の手順で処理を行います。ただし、屈折の計算は通常、表面で1回しか行われないため、より擬似的な表現になります。
これらのマッピング手法は、UVマッピングにおけるUV座標をレンダリングごとに変動させることに近い処理となるため、一般的なUVマッピングに対応した
レンダリングエンジンを流用して実装することが可能です。現在では、ほとんどのパーソナル
コンピュータやゲーム機のGPUでプログラマブルシェーダーがサポートされているため、リアルタイムでの動的な
テクスチャマッピングが可能であり、環境マッピングもリアルタイムで表現できます。
環境マッピングは、
Direct3Dや
OpenGLといった3DCG APIでも固定機能としてサポートされており、家庭用テレビゲーム機では第5世代ゲーム機頃から導入され始めました。例えば、1997年に発売された『グランツーリスモ』では、擬似的ながらも環境マッピングの先行的な実装例が見られます。
環境マップの形式
環境マップは、全周囲の風景を2次元の画像に収めるため、特殊な3次元ベクトルと2次元
テクセルの対応付けが必要となります。主な環境マップの形式としては、以下のものがあります。
キューブマップ:
オブジェクトの周囲を覆う立方体の6つの内面に、周囲の風景をテクスチャとして貼り付ける方式です。これにより、全方向からの反射を表現できます。
球状マップ:
全周囲を1枚の2次元画像で表したものです。
魚眼レンズで撮影したような画像になり、
実写映像を取り込む際には
球面鏡が用いられることもあります。
歴史
環境マッピングは、
1970年代にジム・ブリンとマーティン・ニューウェルによって考案されました。
参考文献
ポール・デベヴェック (2006年9月). "The Story of Reflection Mapping".
https://debevec.org/ReflectionMapping/
Mike Seymour (2012年7月24日). "Founders Series: industry legend Jim Blinn". fxguide.
https://www.fxguide.com/featured/founders-series-industry-legend-jim-blinn/
関連項目
テクスチャマッピング
ジェームス・F・ブリン
*
レイトレーシング