Unityで3Dゲームを作っていると、オブジェクトの位置や回転、拡大縮小を操作する場面が頻繁に訪れます。
これらを個別に扱うと、コードが複雑になりがちです。
4×4行列を使えば、位置・回転・拡大を1つのデータでまとめて管理できます。
なぜ4×4なのか、ゲーム制作でどう活用するのか、この記事で整理しましょう。
4×4行列とは何か(ゲーム制作目線)

4×4行列は、4行4列の数値の表です。
ゲーム開発では、3D空間での位置・回転・拡大を同時に表現するために使われます。
なぜ3つではなく4つなのか。
これは、同次座標系という考え方によるもんです。
3D空間の座標(x, y, z)に、4つ目の値「w」を加えることで、移動と回転を1つの計算式で扱えるようになります。
Unityでは、Transformコンポーネントが内部的に4×4行列を使っています。
Inspectorでpositionやrotation、scaleを変更すると、その裏で4×4行列が更新されているんです。
つまり、4×4行列を知らなくてもUnityでゲームは作れますが、理解していると、より高度な制御が可能になります。
カメラの視点変換、ローカル座標とワールド座標の変換、シェーダーでの頂点変換など、3Dゲームの根幹で4×4行列が活躍しています。
ゲームでの具体的な使い道

4×4行列がゲームでどう使われているか、具体例を確認してみましょう。
オブジェクトの位置・回転・拡大をまとめて管理
プレイヤーキャラクターが移動し、回転し、時にはサイズが変わる。
これらを個別に扱うと、コードが散らばりがちです。
4×4行列を使えば、Transformの状態を1つの行列として保存・復元できます。
例えば、アニメーションのキーフレームを保存する際、位置・回転・拡大をバラバラに保存するのではなく、4×4行列として保存すれば、データ量も削減でき、計算も効率的になります。
カメラの視点変換
3D空間の座標を、画面に表示する2D座標に変換する処理で4×4行列が使われます。
これはビュー行列とプロジェクション行列の組み合わせで実現されます。
UnityのCameraコンポーネントは、内部でこれらの行列を計算し、すべてのオブジェクトを正しい位置に描画しています。
FPSカメラやTPSカメラでも、カメラの位置と向きを4×4行列で管理すれば、滑らかな視点移動が可能になりますね。
ローカル座標とワールド座標の変換
親オブジェクトのTransformに影響を受けながら、子オブジェクトが動く仕組みは、4×4行列の掛け算で実現されているんです。
子オブジェクトのローカル座標(親からの相対位置)を、ワールド座標(シーン全体での絶対位置)に変換する際、親のTransformから作った4×4行列と掛け合わせます。
逆に、ワールド座標をローカル座標に戻すには、逆行列を使います。
この仕組みがあるからこそ、キャラクターの手に持った武器が、キャラクターの動きに連動して動くんです。
シェーダーでの頂点変換
3Dモデルの頂点は、モデル空間からワールド空間、さらにビュー空間、最後にスクリーン空間へと変換されます。
この一連の変換も、4×4行列の掛け算で行われます。
シェーダーでカスタムエフェクトを作る際、この変換行列を理解していると、より自由度の高い表現が可能になりますね。
4×4行列を使わない場合のデメリット
- 位置・回転・拡大を個別に扱うため、コードが複雑になる
- 親子関係での座標変換が煩雑になる
- カメラやシェーダーの制御が難しくなる
- アニメーションや物理演算との連携が非効率になる
作り方は分かった。
でも完成まで行けない人へ
当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。
※ まずは内容を見るだけでOK
考え方・仕組みを図解イメージで説明

4×4行列を理解するには、「座標変換のための道具」と考えると分かりやすいです。
4×4行列の構造を確認しましょう。
左上の3×3部分が回転と拡大を担当し、右端の列(上から3つ)が位置(移動)を担当します。
右下の要素は、通常は1に固定されています。
移動だけの行列(平行移動行列)
オブジェクトを移動させるだけなら、位置情報だけを更新すればOKです。
4×4行列では、右端の列に移動量を入れることで実現します。
例えば、X軸方向に5、Y軸方向に3、Z軸方向に2移動させる場合、行列の右端の列に(5, 3, 2, 1)を設定します。
回転だけの行列(回転行列)
オブジェクトを回転させる場合は、左上の3×3部分を使います。
X軸、Y軸、Z軸それぞれの回転に対応する3×3行列があり、これらを組み合わせることで、任意の方向への回転を表現できます。
拡大だけの行列(スケール行列)
オブジェクトを拡大縮小する場合も、左上の3×3部分を使います。
対角線上に拡大率を配置すれば、X軸、Y軸、Z軸それぞれの方向に独立して拡大できます。
すべてを組み合わせる
移動・回転・拡大を同時に行いたい場合、それぞれの行列を掛け算します。
ただし、掛ける順番が重要です。
「拡大→回転→移動」の順で掛けるか、「移動→回転→拡大」の順で掛けるかで、結果が変わります。
Unityでは、通常「拡大→回転→移動」の順(TRSの順)で適用されます。
⚠️ 重要なポイント
- 行列の掛け算は順番が重要(A × B と B × A は結果が異なる)
- 移動・回転・拡大を組み合わせる際は、適用順序を意識する
- 逆変換が必要な場合は、逆行列を計算する(ただし、すべての行列が逆行列を持つとは限らない)
Unityで実装する際の注意点(代表例)

Unityで4×4行列を直接扱う場合の注意点を見ていきましょう。
Matrix4x4クラスの使い方
Unityでは、Matrix4x4という構造体が用意されています。
Transformから4×4行列を取得するには、localToWorldMatrixやworldToLocalMatrixプロパティを使います。
|
1 2 3 4 5 6 7 8 9 10 11 12 |
// Transformから4x4行列を取得 Matrix4x4 worldMatrix = transform.localToWorldMatrix; // 行列から位置を取得 Vector3 position = worldMatrix.GetColumn(3); // 行列から回転を取得 Quaternion rotation = Quaternion.LookRotation( worldMatrix.GetColumn(2), worldMatrix.GetColumn(1) ); |
行列の掛け算の順番に注意
Unityでは、行列の掛け算を左から右に適用していきます。
つまり、matrixA * matrixBは、まずmatrixBを適用し、その結果にmatrixAを適用するという意味になります。
Transformの親子関係では、子オブジェクトの行列に親オブジェクトの行列を左から掛けることで、ワールド座標が求められます。
回転の表現方法
UnityのTransformは、内部的にはクォータニオンで回転を管理しています。
4×4行列に変換する際、クォータニオンから回転行列を作成する必要があります。
|
1 2 3 4 5 6 7 8 9 10 11 |
// クォータニオンから回転行列を作成 Quaternion rotation = transform.rotation; Matrix4x4 rotationMatrix = Matrix4x4.Rotate(rotation); // 位置、回転、拡大を組み合わせた行列を作成 Matrix4x4 trs = Matrix4x4.TRS( transform.position, transform.rotation, transform.localScale ); |
パフォーマンスへの配慮
4×4行列の計算は、16個の数値の掛け算が含まれるため、毎フレーム大量に計算すると負荷が高くなります。
必要に応じてキャッシュを活用し、不要な計算を避けましょう。
また、位置だけが必要な場合は、行列全体ではなくVector3のpositionを使う方が効率的です。
座標系の違いに注意
Unityは左手座標系を使用しています。
他のツール(Blenderなど)と行列をやり取りする際、座標系の違いで結果が異なることがあるため、必要に応じて変換が必要です。

まとめ

この記事では、4×4行列がゲーム開発でどう使われるかを見てきました。
重要なポイントをおさらいします。
重要なポイント:
- 4×4行列は、位置・回転・拡大を1つのデータでまとめて管理できる便利な道具
- ゲームでは、オブジェクトの変換、カメラの視点変換、座標系の変換などに使われる
- UnityではMatrix4x4クラスが用意されており、Transformから取得することも可能
- 行列の掛け算は順番が重要で、適用順序によって結果が変わる
- 4×4行列を理解すれば、より高度なゲーム制御やシェーダー処理が可能になる
4×4行列は、数学的な概念ですが、ゲーム開発では「座標変換のための便利な道具」として考えると理解しやすいです。
Unityでゲームを作るだけなら、必ずしも4×4行列を直接扱う必要はありません。
ただし、カメラ制御やシェーダー、物理演算と連携する処理など、より高度な実装を目指すなら、4×4行列の理解が役立ちます。
数学的な理論だけでなく、実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。
Unity入門の森では、ゲーム開発で使う数学を、実装しながら体系的に学べます。
ぜひチェックしてみてください。
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます





コメント