标准的 4x4 变换矩阵。
变换矩阵可以使用齐次坐标执行任意线性 3D 变换(即平移、旋转、缩放、剪切等)和透视变换。您很少在脚本中使用矩阵;最常使用 Vector3、Quaternion 和 Transform 类的功能更直接。在特殊情况下,例如设置非标准相机投影时,会使用普通矩阵。
在 Unity 中,多个 Transform、Camera、Material、Graphics 和 GL 函数使用 Matrix4x4。
Unity 中的矩阵是列优先的;即变换矩阵的位置位于最后一列,前三列包含 x、y 和 z 轴。数据访问方式为:row + (column*4)
。矩阵可以像二维数组一样索引,但请注意,在 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); } }
decomposeProjection | 此属性获取投影矩阵,并返回定义投影视锥体的六个平面坐标。 |
determinant | 矩阵的行列式。(只读) |
inverse | 此矩阵的逆矩阵。(只读) |
isIdentity | 检查此矩阵是否为单位矩阵。(只读) |
lossyScale | 尝试从矩阵中获取一个缩放值。(只读) |
rotation | 尝试从该矩阵获取旋转四元数。 |
this[int,int] | 访问 [行,列] 处的元素。 |
transpose | 返回此矩阵的转置矩阵(只读)。 |
GetColumn | 获取矩阵的一列。 |
GetPosition | 从矩阵中获取位置向量。 |
GetRow | 返回矩阵的一行。 |
MultiplyPoint | 通过该矩阵变换一个位置(通用)。 |
MultiplyPoint3x4 | 通过该矩阵变换一个位置(快速)。 |
MultiplyVector | 通过该矩阵变换一个方向。 |
SetColumn | 设置矩阵的一列。 |
SetRow | 设置矩阵的一行。 |
SetTRS | 将此矩阵设置为平移、旋转和缩放矩阵。 |
ToString | 返回此矩阵的格式化字符串。 |
TransformPlane | 返回在空间中变换的平面。 |
ValidTRS | 检查此矩阵是否为有效的变换矩阵。 |
Frustum | 此函数返回一个投影矩阵,该矩阵具有一个投影视锥体,其近平面由传递进来的坐标定义。 |
Inverse3DAffine | 计算 3D 仿射矩阵的逆矩阵。 |
LookAt | 创建“看向”矩阵。 |
Ortho | 创建正交投影矩阵。 |
Perspective | 创建透视投影矩阵。 |
Rotate | 创建旋转矩阵。 |
Scale | 创建缩放矩阵。 |
Translate | 创建平移矩阵。 |
TRS | 创建平移、旋转和缩放矩阵。 |
operator * | 将两个矩阵相乘。 |