座標系Coordinate systems

通常、3D グラフィック アプリケーションでは、2 種類のデカルト座標系、つまり左手系と右手系が使用されます。Typically 3D graphics applications use one of two types of Cartesian coordinate systems: left-handed or right-handed. いずれの座標系においても、x 軸の正の向きは右を指し、y 軸の正の向きは上を指します。In both coordinate systems, the positive x-axis points to the right, and the positive y-axis points up.

左と右の座標を渡されます。Left and right handed coordinates

どちらの方向を z 軸の正の向きが指しているかは、左手または右手の指で x 軸の正の向きを指し、指を y 軸の正の向きに曲げることによって、思い出すことができます。You can remember which direction the positive z-axis points by pointing the fingers of either your left or right hand in the positive x-direction and curling them into the positive y-direction. 親指が指している方向は、自身に向かうかまたは離れる方向のいずれかとなり、その座標系の z 軸の正の向きが指す方向となります。The direction your thumb points, either toward or away from you, is the direction that the positive z-axis points for that coordinate system. 次の図は、これらの 2 つの座標系を示しています。The following illustration shows these two coordinate systems.

左手と右手によるデカルト座標系の図

Direct3D は、左手座標系を使用します。Direct3D uses a left-handed coordinate system. 左手および右手座標が最も一般的な座標系ですが、さまざまな他の座標系が 3D ソフトウェアで使用されています。Although left-handed and right-handed coordinates are the most common systems, there is a variety of other coordinate systems used in 3D software. たとえば、y 軸がビューアーに向かうかまたはビューアーから離れる方向を指し、かつ z 軸が上を指す座標系を使用することも、3D モデリング アプリケーションでは珍しくはありません。For example, it is not unusual for 3D modeling applications to use a coordinate system in which the y-axis points toward or away from the viewer, and the z-axis points up.

頂点とベクターVertices and vectors

座標系が与えられると、x、y、z 座標を使って空間の点 (「頂点」) および 3D 方向 (「ベクトル」) を定義することができます。Given the coordinate system, an x, y and z coordinate can define a point in space (a "vertex"), or a 3D direction (a "vector").

頂点の集合は、線と図形を定義するために使用できます。A collection of vertices can be used to define lines and shapes. 頂点によって定義可能な最も単純なオブジェクトはプリミティブと呼ばれ、プリミティブのセットによって定義される、より複雑なオブジェクトは「メッシュ」と呼ばれます。The simplest objects definable by vertices are called Primitives, and a more complex object defined by a set of primitives is called a "mesh."

3D 座標系で定義されたメッシュに対して実行される基本的な操作は、移動、回転、拡大縮小です。The essential operations performed on meshes defined in a 3D coordinate system are translation, rotation, and scaling. これらの基本的な変換を組み合わせて、変換マトリックスを作成することができます。You can combine these basic transformations to create a transform matrix. 詳しくは、「変換」をご覧ください。For details, see Transforms.

これらの演算を組み合わせると、結果は非可換です。行列を乗算する順序が重要です。When you combine these operations, the results are not commutative; the order in which you multiply matrices is important.

右手座標系の座標系からの移植Porting from a right-handed coordinate system

右手座標系に基づいたアプリケーションを移植する場合、Direct3D に渡すデータに 2 つの変更を行う必要があります。If you are porting an application that is based on a right-handed coordinate system, you must make two changes to the data passed to Direct3D:

  • 三角形頂点の順序を反転させて、システムがそれらの三角形頂点を正面から時計方向にトラバースするようにします。Flip the order of triangle vertices so that the system traverses them clockwise from the front. つまり、頂点が v0、v1、v2 とすると、それらを Direct3D に v0、v2、v1 として渡します。In other words, if the vertices are v0, v1, v2, pass them to Direct3D as v0, v2, v1.
  • ビュー行列を使用し、ワールド空間で z 方向に -1 のスケーリングを適用します。Use the view matrix to scale world space by -1 in the z-direction. これを行うには、符号を反転、 _31、 _32、 _33、および_view 行列を使用して、行列構造体のメンバーを 34。To do this, flip the sign of the _31, _32, _33, and _34 member of the matrix structure that you use for your view matrix.

関連トピックRelated topics

座標系とジオメトリCoordinate systems and geometry