Version: 2021.3

Matrix4x4

struct in UnityEngine

切换到手册

描述

标准 4x4 变换矩阵。

变换矩阵可以使用齐次坐标执行任意线性 3D 变换 (即平移、旋转、缩放、扭曲等)和透视变换。脚本中很少使用矩阵;通常 使用 Vector3QuaternionTransform 类的功能会更加简单直接。普通矩阵用于特殊情况, 如设置非标准摄像机投影。

在 Unity 中,有几个 TransformCameraMaterialGraphicsGL 函数会使用 Matrix4x4。

Unity 中的矩阵是列主序的;即,变换矩阵的位置在最后一列中, 前三列包含 x、y 和 z 轴。数据访问方式如下: 行 + (列*4)。矩阵可以 像 2D 数组一样进行索引,但是请注意,在 mat[a, b] 这类表达式中,a 引用行索引,而 b 引用 列索引。

using UnityEngine;

public class ExampleScript : MonoBehaviour { void Start() { // get matrix from the Transform var matrix = transform.localToWorldMatrix; // get position from the last column var position = new Vector3(matrix[0,3], matrix[1,3], matrix[2,3]); Debug.Log("Transform position from matrix is: " + position); } }

静态变量

identity返回单位矩阵(只读)。
zero返回所有元素都设置为零的矩阵(只读)。

变量

decomposeProjection此属性采用投影矩阵,返回定义投影锥体的六个平面坐标。
determinant矩阵的行列式。(只读)
inverse此矩阵的逆矩阵。(只读)
isIdentity检查这是否为单位矩阵。(只读)
lossyScale尝试从矩阵获取缩放值。(只读)
rotation尝试从此矩阵获取旋转四元数。
this[int,int]访问 [row, column] 处的元素。
transpose返回此矩阵的转置(只读)。

公共函数

GetColumn获取矩阵的某一列。
GetPositionGet position vector from the matrix.
GetRow返回矩阵的某一行。
MultiplyPoint按此矩阵变换位置(普通)。
MultiplyPoint3x4按此矩阵变换位置(快速)。
MultiplyVector按此矩阵变换方向。
SetColumn设置矩阵的某一列。
SetRow设置矩阵的某一行。
SetTRS将此矩阵设置为平移、旋转和缩放矩阵。
ToStringReturns a formatted string for this matrix.
TransformPlane返回在空间中变换的平面。
ValidTRS检查此矩阵是否为有效变换矩阵。

静态函数

Frustum此函数返回一个投影矩阵,其视锥体的近平面由传入的坐标定义。
Inverse3DAffine计算 3D 仿射矩阵的逆矩阵。
LookAt创建“look at”矩阵。
Ortho创建正交投影矩阵。
Perspective创建透视投影矩阵。
Rotate创建旋转矩阵。
Scale创建缩放矩阵。
Translate创建平移矩阵。
TRS创建平移、旋转和缩放矩阵。

运算符

operator *使两个矩阵相乘。