game-engineer:classes:2025:ge2-gameprograming2:first-term:9:09-12-zz

座標変換と行列

ゲームや3Dグラフィックスでは、頂点の位置を順番に座標変換していきます。

ローカル座標 → ワールド座標 → ビュー座標 → プロジェクション座標 → スクリーン座標

📍各変換の行列

ローカル座標 
   → (ワールド行列) → ワールド座標
   → (ビュー行列)   → ビュー座標
   → (プロジェクション行列) → プロジェクション座標
   → (ビューポート変換) → スクリーン座標

  • 使う行列:ワールド行列(World Matrix)
  • モデルを「世界」に配置するための行列。
    • 平行移動(位置)
    • 回転(向き)
    • 拡大縮小(スケール)

例:キャラクターを原点からフィールド上の (10, 0, 5) に移動する。


  • 使う行列:ビュー行列(View Matrix)
  • カメラの位置と向きを基準にして座標を変換。
  • カメラを原点にし、カメラの向きをZ軸方向にそろえる。

例:ワールド上で (10, 0, 5) にいるキャラも、カメラが動けば見える位置は変わる。


  • 使う行列:プロジェクション行列(Projection Matrix)
  • 3Dを2Dに投影するための行列。
  • 種類:
    • 透視投影(Perspective)… 遠くの物は小さく見える
    • 平行投影(Orthographic)… 距離に関係なく大きさ一定

例:奥の敵は小さく、近くの敵は大きく見える。


  • 使うもの:ビューポート変換(Viewport Transform)
  • 正規化デバイス座標 ( -1 ~ +1 ) を、実際の画面ピクセルに変換。

例:

  • (-1, -1) → (0,0)(画面左下)
  • ( 1, 1) → (1920,1080)(画面右上)

スクリーン座標 = ローカル座標 × ワールド行列 × ビュー行列 × プロジェクション行列 × ビューポート変換
  • game-engineer/classes/2025/ge2-gameprograming2/first-term/9/09-12-zz.txt
  • 最終更新: 5カ月前
  • by root