コンピュータグラフィックスの変換行列

コンピュータグラフィックスで変換行列が移動、回転、スケーリングをどのように組み合わせるかを学びます。同次座標とモデル-ビュー-プロジェクションパイプラインを理解します。

Applications

詳細な説明

グラフィックスにおける変換行列

コンピュータグラフィックスは同次座標の 4x4変換行列 を使用して、すべての一般的な変換を統一的に表現します。

同次座標

3D点 (x, y, z) は同次座標で (x, y, z, 1) になります。これにより移動も行列乗算として表現できます。

基本変換

移動 (tx, ty, tz):

T = | 1  0  0  tx |
    | 0  1  0  ty |
    | 0  0  1  tz |
    | 0  0  0   1 |

スケーリング (sx, sy, sz):

S = | sx  0   0   0 |
    | 0   sy  0   0 |
    | 0   0   sz  0 |
    | 0   0   0   1 |

Z軸周りの回転 角度a:

Rz = | cos(a)  -sin(a)  0  0 |
     | sin(a)   cos(a)  0  0 |
     |   0        0     1  0 |
     |   0        0     0  1 |

MVPパイプライン

標準的なグラフィックスパイプラインでは、頂点は3つの変換を通過します:

  1. モデル行列: ワールド空間にオブジェクトを配置
  2. ビュー行列: カメラを配置(カメラの変換の逆)
  3. プロジェクション行列: 3Dを2Dにマッピング(透視投影または正投影)
clip_position = Projection * View * Model * vertex

変換の組み合わせ

複数の変換は行列乗算で結合されます。順序は右から左:最も右の行列が最初に適用されます。

M = Translation * Rotation * Scale

これはまずスケーリング、次に回転、最後に移動 — ほとんどのオブジェクト変換で正しい順序です。

ユースケース

変換行列はすべての3Dレンダリングの基礎です。3Dシーンのすべての頂点は最終的な画面位置を生成するために一連の行列乗算を通過します。UnityやUnrealなどのゲームエンジン、OpenGLやVulkanなどのグラフィックスAPI、3Dモデリングツールはすべて内部で4x4変換行列に依存しています。

試してみる — Matrix Calculator

フルツールを開く