标准 4x4 变换矩阵。
变换矩阵可以使用齐次坐标执行任意线性 3D 变换
(即平移、旋转、缩放、扭曲等)和透视变换。脚本中很少使用矩阵;通常
使用 Vector3、Quaternion 和 Transform 类的功能会更加简单直接。普通矩阵用于特殊情况,
如设置非标准摄像机投影。
在 Unity 中,有几个 Transform、Camera、Material、Graphics 和 GL 函数会使用 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); } }
decomposeProjection | 此属性采用投影矩阵,返回定义投影锥体的六个平面坐标。 |
determinant | 矩阵的行列式。(只读) |
inverse | 此矩阵的逆矩阵。(只读) |
isIdentity | 检查这是否为单位矩阵。(只读) |
lossyScale | 尝试从矩阵获取缩放值。(只读) |
rotation | 尝试从此矩阵获取旋转四元数。 |
this[int,int] | 访问 [row, column] 处的元素。 |
transpose | 返回此矩阵的转置(只读)。 |
GetColumn | 获取矩阵的某一列。 |
GetPosition | Get position vector from the matrix. |
GetRow | 返回矩阵的某一行。 |
MultiplyPoint | 按此矩阵变换位置(普通)。 |
MultiplyPoint3x4 | 按此矩阵变换位置(快速)。 |
MultiplyVector | 按此矩阵变换方向。 |
SetColumn | 设置矩阵的某一列。 |
SetRow | 设置矩阵的某一行。 |
SetTRS | 将此矩阵设置为平移、旋转和缩放矩阵。 |
ToString | Returns a formatted string for this matrix. |
TransformPlane | 返回在空间中变换的平面。 |
ValidTRS | 检查此矩阵是否为有效变换矩阵。 |
Frustum | 此函数返回一个投影矩阵,其视锥体的近平面由传入的坐标定义。 |
Inverse3DAffine | 计算 3D 仿射矩阵的逆矩阵。 |
LookAt | 创建“look at”矩阵。 |
Ortho | 创建正交投影矩阵。 |
Perspective | 创建透视投影矩阵。 |
Rotate | 创建旋转矩阵。 |
Scale | 创建缩放矩阵。 |
Translate | 创建平移矩阵。 |
TRS | 创建平移、旋转和缩放矩阵。 |
operator * | 使两个矩阵相乘。 |