版本: Unity 6 (6000.0)
语言英语
  • C#

Matrix4x4

UnityEngine 中的结构体

/

实现于:UnityEngine.CoreModule

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了来自用户的每个建议的更改,并在适用的情况下进行更新。

关闭

提交失败

由于某种原因,您的建议更改无法提交。请 <a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

标准的 4x4 变换矩阵。

变换矩阵可以使用齐次坐标执行任意线性 3D 变换(即平移、旋转、缩放、剪切等)和透视变换。您很少在脚本中使用矩阵;最常使用 Vector3QuaternionTransform 类的功能更直接。在特殊情况下,例如设置非标准相机投影时,会使用普通矩阵。

在 Unity 中,多个 TransformCameraMaterialGraphicsGL 函数使用 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); } }

静态属性

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

属性

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 *将两个矩阵相乘。