Scripting API

Matrix4x4

struct in UnityEngine · UnityEngine.CoreModule

51 of 56 of Unity's membersUnity's documentation
In Tassix

4x4 matrix, column-major like Unity (fields in memory order m00, m10, m20, m30, m01, ...). Projection helpers use OpenGL clip space. Verified against Unity in conformance/recordings/math_rotations.jsonl.

Constructors 1

Matrix4x4(Vector4 column0, Vector4 column1, Vector4 column2, Vector4 column3)
Matrix4x4(in Vector4 column0, in Vector4 column1, in Vector4 column2, in Vector4 column3)

Fields 16

float m00
float m01
float m02
float m03
float m10
float m11
float m12
float m13
float m20
float m21
float m22
float m23
float m30
float m31
float m32
float m33

Properties 9

float determinant { get; }
static Matrix4x4 identity { get; }
Matrix4x4 inverse { get; }

The inverse, or the zero matrix if this matrix is singular.

bool isIdentity { get; }
Vector3 lossyScale { get; }

Lengths of the basis columns; X is negated for mirrored matrices.

Quaternion rotation { get; }

The rotation part, with scale removed.

float this[int row, int column] { get; set; }
float this[int index] { get; set; }

Column-major index: row + column * 4.

Matrix4x4 transpose { get; }
static Matrix4x4 zero { get; }

Methods 22

static float Determinant(Matrix4x4 m)
static float Determinant(in Matrix4x4 m)
bool Equals(Matrix4x4 other)
bool Equals(in Matrix4x4 other)
bool Equals(object? other)
Vector4 GetColumn(int index)
int GetHashCode()
Vector3 GetPosition()
Vector4 GetRow(int index)
static Matrix4x4 Inverse(Matrix4x4 m)
static Matrix4x4 Inverse(in Matrix4x4 m)
static Matrix4x4 LookAt(Vector3 from, Vector3 to, Vector3 up)
static Matrix4x4 LookAt(in Vector3 from, in Vector3 to, in Vector3 up)

Object-to-world matrix at from facing to.

Vector3 MultiplyPoint(Vector3 point)
Vector3 MultiplyPoint(in Vector3 point)

Full projective transform: divides by w.

Vector3 MultiplyPoint3x4(Vector3 point)
Vector3 MultiplyPoint3x4(in Vector3 point)

Affine transform (ignores the projective row).

Vector3 MultiplyVector(Vector3 vector)
Vector3 MultiplyVector(in Vector3 vector)
static Matrix4x4 Ortho(float left, float right, float bottom, float top, float zNear, float zFar)

Orthographic projection (OpenGL clip space).

static Matrix4x4 Perspective(float fov, float aspect, float zNear, float zFar)

Perspective projection (OpenGL clip space); fov is vertical, in degrees.

static Matrix4x4 Scale(Vector3 vector)
static Matrix4x4 Scale(in Vector3 vector)
void SetColumn(int index, Vector4 column)
void SetColumn(int index, in Vector4 column)
void SetRow(int index, Vector4 row)
void SetRow(int index, in Vector4 row)
void SetTRS(Vector3 pos, Quaternion q, Vector3 s)
void SetTRS(in Vector3 pos, in Quaternion q, in Vector3 s)
static Matrix4x4 TRS(Vector3 pos, Quaternion q, Vector3 s)
static Matrix4x4 TRS(in Vector3 pos, in Quaternion q, in Vector3 s)
string ToString()
string ToString(string? format)
string ToString(string? format, IFormatProvider? formatProvider)

Rows separated by newlines, elements by tabs.

static Matrix4x4 Translate(Vector3 vector)
static Matrix4x4 Translate(in Vector3 vector)
static Matrix4x4 Transpose(Matrix4x4 m)
static Matrix4x4 Transpose(in Matrix4x4 m)

Operators 3

static bool operator !=(Matrix4x4 lhs, Matrix4x4 rhs)
static Matrix4x4 operator *(Matrix4x4 lhs, Matrix4x4 rhs)
static Vector4 operator *(Matrix4x4 lhs, Vector4 vector)
static bool operator ==(Matrix4x4 lhs, Matrix4x4 rhs)

Approximate, column by column (see Vector4 equality).

Not in Tassix yet 5

Frustum Inverse3DAffine TransformPlane ValidTRS decomposeProjection