====== 座標変換と行列 ======
ゲームや3Dグラフィックスでは、頂点の位置を順番に座標変換していきます。
ローカル座標 → ワールド座標 → ビュー座標 → プロジェクション座標 → スクリーン座標
📍各変換の行列
ローカル座標
→ (ワールド行列) → ワールド座標
→ (ビュー行列) → ビュー座標
→ (プロジェクション行列) → プロジェクション座標
→ (ビューポート変換) → スクリーン座標
----
===== ◆1. ローカル座標 → ワールド座標 =====
* **使う行列:ワールド行列(World Matrix)**
* モデルを「世界」に配置するための行列。
* 平行移動(位置)
* 回転(向き)
* 拡大縮小(スケール)
例:キャラクターを原点からフィールド上の (10, 0, 5) に移動する。
----
===== ◆2. ワールド座標 → ビュー座標 =====
* **使う行列:ビュー行列(View Matrix)**
* カメラの位置と向きを基準にして座標を変換。
* カメラを原点にし、カメラの向きをZ軸方向にそろえる。
例:ワールド上で (10, 0, 5) にいるキャラも、カメラが動けば見える位置は変わる。
----
===== ◆3. ビュー座標 → プロジェクション座標 =====
* **使う行列:プロジェクション行列(Projection Matrix)**
* 3Dを2Dに投影するための行列。
* 種類:
* 透視投影(Perspective)… 遠くの物は小さく見える
* 平行投影(Orthographic)… 距離に関係なく大きさ一定
例:奥の敵は小さく、近くの敵は大きく見える。
----
===== ◆4. プロジェクション座標 → スクリーン座標 =====
* **使うもの:ビューポート変換(Viewport Transform)**
* 正規化デバイス座標 ( -1 ~ +1 ) を、実際の画面ピクセルに変換。
例:
* (-1, -1) → (0,0)(画面左下)
* ( 1, 1) → (1920,1080)(画面右上)
----
===== ◆まとめ(式で表すと) =====
スクリーン座標 = ローカル座標 × ワールド行列 × ビュー行列 × プロジェクション行列 × ビューポート変換