Platform SDK: DirectX

球体環境マップのテクスチャ座標

環境マッピングの対象となる各頂点に指定するテクスチャ座標は、テクスチャを湾曲したサーフェスに映るゆがみの関数として処理する必要がある。アプリケーションでは、各頂点のテクスチャ座標を計算して、希望のエフェクトを実現しなければならない。テクスチャ座標を簡単かつ効果的に生成する方法は、頂点法線を入力として使用することである。方法には何種類かあるが、次の公式は、球体マップによる環境マッピングを実行するアプリケーションで共通の公式である。

この公式では、u および v は計算するテクスチャ座標、Nx および Ny はカメラ空間の頂点法線の x および y 成分である。この公式は単純であるが、有効である。法線に正方向の x 成分がある場合、法線は右方向を指しており、u 座標はテクスチャを適切に処理できるように調整される。v 座標も同様、正方向の y は、法線が上方向を指していることを示す。もちろん、各成分の負の値に対してはこの反対が成り立つ。

法線が直接カメラを指している場合、結果の座標にはゆがみが生じない。両方の座標に +0.5 バイアスを加えると、ゆがみのない点は球体マップの中央に配置され、(0, 0, z) の頂点法線によってこの点が処理される。この公式では、法線の z 成分は考慮されないことに注意する。ただし、この公式を使用するアプリケーションでは、正方向の z 要素のある法線を持つ頂点を省略することで計算を最適化できる。このような処理が行われるのは、カメラ空間で法線がカメラから離れる方向 (z の正方向) を指している場合に、オブジェクトのレンダリング時に頂点が省かれるためである。