座標系 (Direct3D 9)
通常、3D グラフィックス アプリケーションでは、左利きと右利きの 2 種類のデカルト座標系が使用されます。 どちらの座標系でも、正の x 軸は右を指し、正の y 軸は上を指します。 左手または右手の指を正の x 方向に向け、正の y 方向にカールすることで、正の z 軸が指す方向を覚えることができます。 サムが指す方向は、その座標系の正の z 軸が指す方向です。 次の図は、これら 2 つの座標系を示しています。
左利きと右利きのデカルト座標系の
Direct3D では、左利きの座標系が使用されます。 右利きの座標系に基づくアプリケーションを移植する場合は、Direct3D に渡されるデータに 2 つの変更を加える必要があります。
- 三角形の頂点の順序を反転して、システムが前方から時計回りに走査するようにします。 つまり、頂点が v0、v1、v2 の場合は、v0、v2、v1 として Direct3D に渡します。
- ビュー マトリックスを使用して、z 方向に -1 してワールド空間をスケーリングします。 これを行うには、ビュー マトリックスに使用する D3DMATRIX 構造体の _31、_32、_33、および _34 メンバーの符号を反転します。
右利きの世界に対する量を取得するには、D3DXMatrixPerspectiveRH を使用し、D3DXMatrixOrthoRH関数をしてプロジェクション変換を定義します。 ただし、対応する D3DXMatrixLookAtRH 関数を使用し、バックフェイスカリングの順序を逆にして、それに応じてキューブ マップをレイアウトするように注意してください。
左利き座標と右利き座標は最も一般的なシステムですが、3D ソフトウェアでは他にもさまざまな座標系が使用されています。 たとえば、3D モデリング アプリケーションで、y 軸がビューアーの方向または離れた位置を指し、z 軸が上を指す座標系を使用することは珍しくありません。
正式には、一連の基底ベクトル(すなわち座標系)の向きは、特定の基底ベクトルのセットによって定義される行列の決定要因を計算することによって見つけることができます。 決定要因が正の場合、基礎は "正" 方向 (または右利き) と言われます。 決定要因が負の場合、基礎は "負の" 方向 (または左利き) と言われます。 決定要因の詳細については、線形代数リソースを参照してください。
非公式には、"右/左手ルール" を使用して、特定の基底ベクトルのセットが右または左手の座標系を形成するかどうかを判断できます。
3D 座標系で定義されているオブジェクトに対して実行される重要な操作は、平行移動、回転、スケーリングです。 これらの基本的な変換を組み合わせて変換行列を作成できます。 詳細については、変換 (Direct3D 9)を参照してください。
これらの演算を組み合わせると、結果は可換ではありません。行列を乗算する順序が重要です。
関連トピック