Unity中的矩阵含义
本人第一次写博文,不足的地方请大家指出来,我不会详解它的计算是什么样的,因为同类文章有很多,这个如果读者感兴趣可以自己学习一下相关的手册和知识。
什么是矩阵
简单的说,矩阵就是一个4*4的二维数组,在Unity中为结构体,Matrix4x4就是Unity中的矩阵,你可以通过这个结构体来申请一个矩阵,当然这是个三维矩阵。
1.矩阵每一列的意义:
如果是一个单位正交矩阵,那么在Unity中他就是这样的
如果这是一个游戏物体的变换矩阵,那么就可以得出以下信息,
1.该游戏物体的X,Y,Z,轴的方向与世界坐标系的X,Y,Z轴的方向保持一致,简单的来说,该物体相对于世界坐标系没有发生任何旋转;
2.该物体的在世界坐标系中的坐标为(0, 0, 0)。
矩阵的作用:
- 矩阵可以说是Transform组件工作的根本,Transform所需的基本信息都从该单位的矩阵中获得;
- 旋转矩阵: 我这里不贴出旋转矩阵,因为你几乎用不到它,而且网上关于旋转矩阵的文章也有很多,我不做详述,告诉读者两个矩阵相乘是没有意义,这个过程太过于抽象,我会在“实践”中具体讲解。
结构体Matrix4x4
接下来介绍Matrix4x4结构体(当然我不会把所有的方法和变量都讲出来,我会说一些我们可能会经常用到的方法或者变量):
1.变量:
Rotation:这里的Rotation是对应Transform组件里的Rotation的,也就是说,你可以通过重构旋转矩阵来得到一个Rotation并且运用到任意一个游戏物体上;
lossyScale:你可以通过这个值来得到一个矩阵所代表物体的尺寸大小;
inverse:倒置,你可以用这个变量来获取一个矩阵的倒置矩阵。
2.函数:
public Matrix4x4(Vector4 column0, Vector4 column1, Vector4 column2, Vector4 column3) :通过该构造函数来构造出一个自己的矩阵;
public static Matrix4x4 Inverse(Matrix4x4 m) : 获取一个矩阵的倒置矩阵。
实践
我之前说过,矩阵矩阵中每一列的含义,接下来我会在Unity中证明这些含义的真确性:
1.前三列的意义:
如果把矩阵的前三列拿出来,每一列数据都可以组成一个Vector3变量