Microsoft DirectX 8.0 (C++) |
簡単に言えば、テクスチャ ラッピングとは、Microsoft® Direct3D® で各頂点に対して指定されたテクスチャ座標を使用して、テクスチャ処理したポリゴンをラスタ化する際の基本的な方法を変更する処理である。ポリゴンのラスタ化中に、システムはポリゴンの各頂点のテクスチャ座標の間を補間して、ポリゴンのすべてのピクセルに使用するテクセルを決める。通常、システムはテクスチャを 2D 平面として扱い、テクスチャ内のポイント A から ポイント B までの最短経路をとることで新しいテクセルを補間する。ポイント A が u, v 位置座標 (0.8, 0,1) で、ポイント B が (0.1,.9) の場合、補間の線は次の図のようになる。
上の図では、AB 間の最短距離がテクスチャのほぼ中央を通っている。u または v のテクスチャ座標のラッピングを有効にすると、u および v 方向でのテクスチャ座標間の最短経路を Direct3D が認識する方法が変化する。定義では、0.0 と 1.0 が同じ位置座標を占めると仮定して、テクスチャ ラッピングによってラスタライザがテクスチャ座標間の最短経路をとる。最後のビットは扱いにくいが、次のように考えるとわかりやすい。一方向のテクスチャ ラッピングを有効にすると、システムはテクスチャがあたかも円柱の周囲に巻き付いているかのようにテクスチャを扱う。たとえば、次の図を考える。
上の図は、u 方向のラッピングによって、システムによるテクスチャ座標の補間方法がどのように変化するかを示している。この例で使用した同じ点を、正常なまたは巻き付けていないテクスチャに使用すると、点 A と B の最短距離がテクスチャの中心にないことがわかる。この場合、最短距離は 0.0 と 1.0 が共に位置する境界を通っている。v 方向のラッピングも同様である。ただし、側面が下になっている円柱の周囲にテクスチャが巻き付いている。u および v の両方向のラッピングの場合はさらに複雑である。この場合は円環、つまりドーナツを想像するとよい。
テクスチャ ラッピングを実際に使用した最も一般的なアプリケーションは、環境マッピングの実行である。通常、環境マッピングでテクスチャ処理したオブジェクトは非常に反射的であり、シーンのオブジェクトの周囲に画像が反映する。これを説明するため、四方が壁で囲まれた部屋を考える。壁にはそれぞれ R、G、B、および Y という文字が付けてあり、それに対応する赤色、緑色、青色、および黄色で塗られている。このような単純な部屋の環境マッピングであれば、次のようになる。
この部屋の天井が、4 面からなる非常に反射しやすい柱で支えられているとする。この柱に環境マッピングを実行するのは非常に簡単である。しかし、壁の文字と色が柱に反射しているように見せるのは簡単なことではない。次の図は、上方の頂点の近くのテクスチャ座標を適用した、柱のワイヤ フレームを示している。ラッピングがこのテクスチャのエッジを横切る「継ぎ目」は、点線で示す。
u 方向でラッピングが有効になっているので、テクスチャ処理した柱には、環境マッピングからの色とシンボルが正しく表示されており、テクスチャの前面の継ぎ目では、ラスタライザがテクスチャ座標間の最短経路を正しく選択している (u 座標 0.0 と 1.0 が同じ位置を占めるという前提)。テクスチャを適用した柱は、次の図に示すようになる。
テクスチャ ラッピングが有効でない場合、ラスタライザは、実物のように反射した画像を生成するために必要な方向に補間を行わない。逆に、柱の前面部分では、u 座標の 0.175 および 0.875 間のテクセルが、テクスチャの中心を通るときに水平方向で圧縮され、ラップ エフェクトは崩れる。