【DirectX11】DirectXの座標系について
目次
はじめに
この記事では、「DirectXに登場する座標系」についてまとめてできるだけわかりやすく解説していきます。
コードは出さず、概念を解説するだけになります。
どんな座標系があるのか
DirectXでは座標系が複数登場します。代表的でよく使うのが以下の4つの座標系です。
- ローカル座標
- ワールド座標系
- ビュー座標系
- プロジェクション座標系
ローカル座標系とワールド座標系について
まずは、一番基本的な座標系である、「ローカル座標系」と「ワールド座標系」の違いについて解説します。
- ローカル座標 : オブジェクトの原点からの座標
- ワールド座標 : ゲーム内のすべてのオブジェクトの元になる座標
ローカル座標系ついて
基本的に3Dモデルを作るときは、どこに表示するかということは考えずに作ります。
例えば、モデルを(1,1,1)の位置に表示させたい場合、モデルを(1,1,1)に合わせて作ってしまうと、(0,0,0)に移動させたくなった場合、再度作り直す必要が出てしまいます。
なので基本的に3Dモデルを作成するときは、モデルの原点をそのモデルの中心や角などにおいて、モデルの原点を中心に考えます。
モデルをゲームで動かす場合は、この原点を動かすことでモデルを動かします。
モデル固有の原点を(0,0,0)とした座標系を「ローカル座標系」といいます。
例 :ローカル座標系の「オブジェクトの中心」と「オブジェクトの左手前下」
立方体で原点を「オブジェクトの中心」と「オブジェクトの左手前下」に設定したときの「右手前上の頂点」のローカル座標を見比べてみます。
(どちらの原点の位置でもオブジェクト全体の位置は変えていません。変化するのは原点のみです)
中心の場合
- 原点 : 0,0,0
- 右手前上の頂点 : 1,1,1
左手前下の場合
- 原点 : 1,-1,-1
- 右手前上の頂点 : 0,2,2
この結果から、ローカル座標は、オブジェクト固有の任意の原点を基準とした座標系であることがわかります。
ワールド座標系について
次はワールド座標系についてです。
この座標系はゲーム中ですべてのオブジェクトの元になる座標系です。この座標系の子オブジェクトとしてすべてのオブジェクトの座標を計算します。
言葉だけでは理解しにくいので、具体的な例をお見せします。
例 :ワールド座標系の「オブジェクトの中心」と「オブジェクトの左手前下」
この例では、原点が「オブジェクトの中心」と「オブジェクトの左手前下」のオブジェクトをそれぞれ(0,0,0)で配置してみます。
ワールドオブジェクトでは、原点の位置と、座標系の関係に注目するのがわかりやすいかと思います。
オブジェクトの中心の場合
左手前下の場合
2つの原点のパターンを見るとワールド座標は0,0,0であってもモデルの原点がどこにあるのかによって表示位置が変わっていることがわかるかと思います。
このことから、ワールド座標とは、オブジェクトの「原点」の位置を決める座標系であるということがわかるかと思います。
ビュー座標系について
ビュー座標系は簡単で、「カメラの座標」を定義している座標系です。
どの位置からどの方向に見ると、どう見えるのかというのを計算するために使用します。
つまり、ビュー座標を動かすことで、カメラを動かすことができるようになります。
プロジェクション座標系について
プロジェクション座標系は、「カメラがどうやって映像を描画するか」という設定をする座標系になります。
現実の世界で表現すると、一眼レフのレンズを付け替えるようなイメージです。
この設定によって基本的には、以下の項目を決めています。
- 視野角(Field of View, FOV):
- 通常、垂直または水平の視野角を指します。
- カメラが見ることができるシーンの範囲を定義します。
- 視野角が広いほど、より多くのシーンが見えますが、オブジェクトは小さく表示されます。
- アスペクト比(Aspect Ratio):
- 描画対象のビューポートの幅と高さの比率です。
- 通常、スクリーンの幅÷高さで計算されます。
- ゲームやアプリケーションのウィンドウの形状に合わせて調整されます。
- 近クリップ面(Near Clipping Plane):
- カメラから最も近い位置にあるクリッピング面です。
- この面より近いオブジェクトは描画されません。
- あまりに小さな値に設定すると、深度バッファの精度に影響を及ぼすことがあります。
- 遠クリップ面(Far Clipping Plane):
- カメラから最も遠い位置にあるクリッピング面です。
- この面より遠いオブジェクトは描画されません。
- あまりに大きな値に設定すると、深度バッファの精度に影響を及ぼすことがあります。
さいごに
本記事で間違っている部分や理解ができない部分がありましたら、この記事のコメント欄かTwitter(X)までご連絡ください。
【DirectX11】DirectXの座標系について
https://daiki-iijima.github.io/2026/01/05/【DirectX11】DirectXの座標系について/
