ラップは、面やメッシュのテクスチャ座標の計算に使用することができる。ラップを作成するには、アプリケーションは、ラップのタイプや参照フレーム、原点、方向ベクトル、上ベクトルを指定しなくてはならない。また、スケーリング係数とテクスチャ座標の原点も指定する必要がある。
アプリケーションは、IDirect3DRM3::CreateWrapメソッドを呼び出してIDirect3DRMWrapインターフェイスを生成する。このインターフェイスには、IDirect3DRMWrap::ApplyとIDirect3DRMWrap::ApplyRelativeの2つの特有なメソッドが含まれている。IDirect3DRMWrap::Applyは、オブジェクトの頂点にラップを適用する。IDirect3DRMWrap::ApplyRelativeは、適用されたラップの頂点を変換する。
サンプルでは、方向ベクトル(vベクトル)はz軸に沿い、上ベクトル(uベクトル)はy軸に沿っている。原点は[0, 0, 0]である。
IDirect3DRMWrapインターフェイスのメソッドのリファレンスは「IDirect3DRMWrap」を参照すること。
このセクションでは、ラッピングフラグと4つのラッピングタイプについて説明する。
D3DRMMAPPING型には、D3DRMMAP_WRAPUフラグとD3DRMMAP_WRAPVフラグが含まれている。これらのフラグによって、ラスタライザがテクスチャ座標を解析する方法が決定される。ラスタライザは、常にテクスチャ座標間の最短距離 (つまり直線) を補間する。この直線のパスと、有効なuおよびv座標の値は、ラッピングフラグの使い方によって異なる。フラグの片方あるいは両方がセットされると、直線はuまたはv方向のテクスチャの辺に沿って、円柱状かドーナツ状の形状かのようにラップアラウンドされる。
- ラッピングフラグがセットされていない平面ラッピングモードでは、uまたはv座標で指定された平面には、テクスチャが無限にタイリングされる。この場合、有効なuおよびv座標値は1.0以上である。点(0.1, 0.1)と(0.9, 0,9)を結ぶ最短の直線は、点(0.5, 0.5)を通過する。
- D3DRMMAP_WRAPUまたはD3DRMMAP_WRAPVのいずれかがセットされた場合、テクスチャは円周1.0の終わりのない円筒形になる。1.0以上のテクスチャ座標は、ラップされていない範囲内のみ有効である。テクスチャ座標間の最短距離はラッピングフラグによって異なる。D3DRMMAP_WRAPUがセットされているときは、点(0.1, 0.1)から(0.9, 0.9)までの最短の直線は、点(0, 0.5)を通過する。
- D3DRMMAP_WRAPUとD3DRMMAP_WRAPVフラグの両方がセットされたときは、テクスチャは円環体(ドーナツ)状になる。システムは閉鎖しているため、1.0以上のテクスチャ座標は無効である。点(0.1, 0.1)から(0.9, 0.9)までの最短の直線は、点(0, 0)を通過する。
無効領域にあったテクスチャ座標を有効領域に収めたとしても、そのときの動作は保証されていない。
一般にアプリケーションは、テクスチャの交線が面の辺と一致しないとき、円柱状にラップするためにラッピングフラグをセットする。1つの面にテクスチャの半分以上が使用される場合には、ラッピングフラグは設定しない。
平面ラップでは、テクスチャは、オブジェクト上にストレッチされたゴムのようにオブジェクトの面に一致する。
次の等式により、ベクトル[x y z]から[u v]座標が求められる。
これらの公式において、sはウィンドウのスケーリング係数、oはウィンドウの原点を示している。アプリケーションは、1組のスケーリング係数と、uおよびvが有効な値を取るようにxとyを0から1の範囲にマップするためのオフセットを決定しなくてはならない。
円柱ラップでは、テクスチャは円柱の回りを包む紙のように扱われ、その左端は右端につながっている。オブジェクトは円周の中央に配置され、オブジェクトのサーフェスに合わせてテクスチャが変形される。
次の図は、円柱テクスチャマップにおける各ベクトルの効果を示したものである。
方向ベクトルは円柱の軸を示し、上ベクトルは円筒の外側のu = 0である点を示す。システムは、ベクトル[x y z]に対するテクスチャの[u v]座標を計算するために、次の等式を使用する。
通常、uはスケーリングされないままである。vが有効な値を取るように zを0から1の範囲にマップして、vのスケーリングと変換が行われる。
球体ラップでは、ベクトル[x y 0]とx軸の角度から(円柱ラップと同様に)u座標が求められる。v座標は、ベクトル[x y z]とz軸の角度から求められる。このマッピングでは、z軸上に歪みが生じることに注意が必要である。
これは次の等式で表される。
ここでは、スケーリングされていないuとvの範囲は常に0から1であるため、スケーリング係数とテクスチャの原点は必要とされないことが多い。
クロムラップは、テクスチャがオブジェクト上に反射して見えるようにテクスチャ座標を割り当てる。クロムラップは参照フレームの位置を取得し、反射ベクトルを計算するためにメッシュの頂点法線を使用する。その後、メッシュを取り囲む仮想の球体を利用して、反射ベクトルの交線からテクスチャのuおよびv座標を計算する。これによって、球体に何がラップされていても、メッシュに反射効果が与えられる。
トップに戻る
© 1999 Microsoft and/or its suppliers. All rights reserved. Terms of Use.