简介
Matrix4x4是标准变换矩阵,可以执行线性变换,平移,旋转,缩放,切边等,以及使用齐次坐标进行透视变换。
U3D编程中,一般很少直接使用矩阵,因为多数变换都被封装到了Vector3和Quaternion中了。
静态属性
- identity 标准矩阵00,11,22,33的值为1,其它为0
- zero 0矩阵,所有元素都是0
属性
- FrustumPlanes decomposeProjection 将一个投影矩阵的,分解成视锥体的6个平面FrustumPlanes :
- bottom 投影近平面的底部坐标位置
- left 投影近平面的左侧坐标位置
- right 投影近平面的右侧坐标位置
- top 投影近平面的上部坐标位置
- zFar 远平面坐标位置
- zNear 近平面坐标位置
- 远平面的bottom,left,right,top,可以根据进平面相关值,以及FOV,screenWidth/screenHeight来计算
- float determinant 矩阵的行列式的值
- Matrix4x4 inverse 逆矩阵
- bool isIdentity 是否是单位矩阵
- Vector3 lossyScale 矩阵的缩放
- Quaterion rotation 助阵的旋转
- Matrix4x4 transpose 矩阵的转置
方法
- Vector3 MultiplyPoint 用该矩阵变换位置
- Vector3 MultiplyPoint3x4 用该矩阵变换位置,速度块,只能处理正常的3D变换,不能处理投影MultiplyPoint可以处理投影
- Vector3 MultiplyVector 用该矩阵对方向向量进行变换。只会应用矩阵的旋转部分,因为方向没有位置。
- Plane TransformPlane 对平面进行变换。
- bool ValidTRS 检查矩阵是否有效
静态方法
-
public static Matrix4x4 Frustum(float left, float right, float bottom, float top, float zNear, float zFar);
public static Matrix4x4 Frustum(FrustumPlanes fp);
根据用视锥体信息构造投影矩阵。
-
public static bool Inverse3DAffine(Matrix4x4 input, ref Matrix4x4 result);
计算仿射变换的逆矩阵。
专门用于非奇异矩阵。如果input是奇异矩阵,返回false(奇异矩阵没有逆矩阵)。
-
public static Matrix4x4 LookAt(Vector3 from, Vector3 to, Vector3 up);
根据观察点位置(from),观察目标位置(to),向上的方向,构建观察矩阵。
该方法于Matrix4x4.TRS(from, Quaterion.LookRotation((to-from),up), Vector3.one) 的结果相同。
-
public static Matrix4x4 Ortho(float left, float right, float bottom, float top, float zNear, float zFar);
构造正交投影矩阵。
-
public static Matrix4x4 Perspective(float fov, float aspect, float zNear, float zFar);
构造透视投影矩阵
-
public static Matrix4x4 Rotate(Quaternion q);
构造旋转矩阵
-
public static Matrix4x4 Scale(Vector3 vector);
构造缩放矩阵
-
public static Matrix4x4 Translate(Vector3 vector);
构造平移矩阵
-
public static Matrix4x4 TRS(Vector3 pos, Quaternion q, Vector3 s);
根据平移,旋转,缩放构建矩阵
-
public static Matrix4x4 operator *(Matrix4x4 lhs, Matrix4x4 rhs);
矩阵相乘