【Unity】入门学习笔记180519——API(7)——Matrix4x4类

Matrix4x4类

脚本中通常用Vector3、Quaternion、Transform等类地属性和方法来对物体进行变换

Matrix4x4类则通常用于 摄像机的非标准投影变换 等特殊地方


A、Matrix4x4类实例方法

1、MultiplyPoint

public Vector3 MultiplyPoint(Vector3 v);

用来对点v进行投影矩阵变换

m1为Matrix4x4实例

v1为Vector3实例

Vector3 v2=m1.MultiplyPoint(v1)


MultiplyPoint主要用于Camera的投影变换,对于一般物体的矩阵变化用MultiplyPoint3x4方法

不涉及投影变换,计算速度也快


2、MultiplyPoint3x4

public Vector3 MultiplyPoint3x4(Vector3 v);

对参数点进行矩阵变换,不涉及投影变换


3、MultiplyVector

public Vector3 MultiplyVector(Vector3 v);

对方向向量v进行矩阵变换,而非点坐标进行变换


4、SetTRS

public void SetTRS(Vector3 pos, Quaternion q, Vector3 s);

pos为位置向量,参数q为旋转角,参数s为放缩向量

重设Matrix4x4变换矩阵


Matrix4x4 m1=Matrix4x4.identity;    //Matrix4x4实例m1

m1.SetTRS(pos, q, s);    //m1position增加pos,rotation旋转q,scale放缩s

Vector3 v2=m1.MultiplyPoint3x4(v1);    //m1矩阵变换赋值给v2 


矩阵变换的用途?//


B、Matrix4x4类静态方法

1、Ortho

public static Matrix4x4 Ortho(float left,float right,float bottom,float top,float zNear,float zFar);

前四个参数是正交视口的左右下上边的边长,zNear为近视口距离,zFar为远视口距离

创建一个正交投影矩阵

//一般以参数right、top为正数,left和bottom为负数

//left和right的值不能相等,bottom和top的值也不能相等

//为防止视图变形,参数的设定通常需要和Camera的aspect结合使用


2、Perspective

public static Matrix4x4 Perspective(float fov, float aspect, float zNear, float zFar);

fov为视口夹角,aspect为视口纵横比例,参数zNear为近视口距离,zFar为远视口距离

创建一个透视投影矩阵

若要更待摄像机的透视投影矩阵,可用:

Camera.main.projectionMatrix=Matirx4x4.Perspective(fov, aspect,zNear,zFar);

若要重置其投影矩阵,可用:

Camera.main.ResetProjectionMatrix();


3、TRS

public static Matrix4x4 TRS(Vector3 pos, Quaternion q, Vector3 s);

pos为位置向量,q为旋转角,s为放缩向量

使用变换参数返回一个Matrix4x4实例


猜你喜欢

转载自blog.csdn.net/Dylan_Day/article/details/80372923
今日推荐