Platform SDK: DirectX

テクスチャ ラッピングとは

テクスチャ ラッピングとは、簡単に言えば、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 間のテクセルが、テクスチャの中心を通るときに水平方向で圧縮され、エフェクトが壊れる。