====== 座標変換と行列 ====== ゲームや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)(画面右上) ---- ===== ◆まとめ(式で表すと) ===== スクリーン座標 = ローカル座標 × ワールド行列 × ビュー行列 × プロジェクション行列 × ビューポート変換