Share via


Sphere Map サンプル

Sphere Map サンプル

説明

Sphere Map サンプルでは、球状マッピングと呼ばれる環境マッピングの手法を示す。環境マッピングは、3D オブジェクトの周囲の環境 (ライトなど) をテクスチャ マップに配置し、ライティングの計算を行わずにオブジェクトに複雑なライティング エフェクトを適用できる手法である。

環境マッピングの手法 (キューブ マッピングや射影テクスチャなど) の一部の機能しかサポートしていないカードもある。ディスプレースメント マッピングの詳細については、「環境マッピング」を参照すること。

パス

ソース ファイル : (SDK ルート)\Samples\C++\Direct3D\EnvMapping\SphereMap

実行可能ファイル : (SDK ルート)\Samples\C++\Direct3D\Bin

ユーザーズ ガイド

次の表は、実装されているキーを示している。メニュー コマンドを使って同じ操作を行うことができる。

キー 動作
Enter シーンを開始および停止する。
Space キー シーンを少しずつ進める。
F2 新しいレンダリング デバイスまたはディスプレイ モードを選択するようユーザーに指示する。
Alt+Enter フルスクリーン モードとウィンドウ モードを切り替える。
Esc アプリケーションを終了する。

プログラミング上の注意

球状マッピングでは、モデリング時にあらかじめ計算された、クロームの球体によって反射された環境全体を含むテクスチャ マップを使う。この手法では、各頂点について、その法線を計算し、その法線がクロームの球体上で一致する位置を見つけて、そのテクスチャ座標を頂点に割り当てる。

マッチングは複雑ではないが、各フレームの各頂点について計算が必要である。この計算は、Microsoft® Direct3D® のテクスチャ座標生成機能を使って行うことができる。関連するレンダリング ステート処理は D3DTSS_TCI_CAMERASPACENORMAL で、カメラ空間での頂点の法線を使用し、テクスチャ トランスフォームによって変形し、テクスチャ座標を生成する。次に、テクスチャ行列を設定して残りの処理を行う。この単純なケースでは、行列は、カメラ空間 (-1, +1) からテクスチャ空間 (0,1) を取得するために、テクスチャ座標をスケーリングして、平行移動するだけである。

このサンプルでは、ヘルパー関数などのプログラミング要素から構成される Microsoft DirectX® コードを使用する。このコードは DirectX ソフトウェア開発キット (SDK) の他のサンプルと共有されている。サンプル フレームワークのヘッダーは (SDK ルート)\Samples\C++\Common\Include、ソース コードは (SDK ルート)\Samples\C++\Common\Src にある。