Microsoft DirectX 8.0 (Visual Basic) |
環境マッピングの対象となる各頂点に指定するテクスチャ座標は、テクスチャを湾曲したサーフェスに映るゆがみの関数として処理する必要がある。アプリケーションでは、各頂点のテクスチャ座標を計算して、目的のエフェクトを実現しなければならない。テクスチャ座標を簡単かつ効果的に生成する方法は、頂点法線を入力として使用することである。方法には何種類かあるが、次の公式は、球状マップによる環境マッピングを実行するアプリケーションで共通の公式である。
この公式では、u および v は計算するテクスチャ座標、Nx および Ny はカメラ空間の頂点法線の x および y 要素である。この公式は単純で有効である。法線に正方向の x 要素がある場合、法線は右方向を指しており、u 座標はテクスチャを適切に処理できるように調整される。v 座標も同様、正方向の y は、法線が上方向を指していることを示す。各成分の負の値に対しては、この反対が成り立つ。
法線が直接カメラを指している場合、結果の座標にはゆがみが生じない。両方の座標に +0.5 バイアスを加えると、ゆがみのないポイントは球状マップの中央に配置され、(0, 0, z) の頂点法線によってこのポイントが処理される。この公式では、法線の z 要素は考慮されない。ただし、この公式を使用するアプリケーションでは、正方向の z 要素のある法線を持つ頂点を省略することで計算を最適化できる。このような処理が行われるのは、カメラ空間で法線がカメラから離れる方向 (z の正方向) を指している場合、オブジェクトのレンダリング時に頂点がカリングされるためである。