乐乐姐给的图形学知识点(2)

该系列内容,是对乐乐姐所著的《Unity Shader入门精要》中图形学理论部分知识点进行简单概括

对Unity shader没有任何解释!!

 

Unity中主要是对顶点着色器、片元着色器以及测试阶段进行编程

表面着色器是Unity自己创建的着色器代码类型,本质上是顶点/片元着色器,但是Unity将其进行封装,但是渲染的代价比较大。

顶点/片元着色器,我们主要在此处控制渲染的实现细节。

固定函数着色器,早期的shader,不支持可编程的管线着色器,完成一些简单的效果,开关式操作。

 

三维笛卡尔坐标系,坐标轴是该坐标系的基矢量,互相垂直且长度为1,也成为标准正交基,长度不为1的称为正交基。

三维笛卡尔坐标系分为左手坐标系(OpenGL/Unity中使用这种)和右手坐标系(DirectX中使用这种)

矢量的点积(内积),计算两个矢量的相似性,几何意义是投影,结果是标量,所以能用交换律

矢量的叉积(外积),计算两个矢量所在平面的法向量,而该法向量的方向根据左右手法则可确定,交换两个矢量相乘的位置可得相反的结果,因为结果是矢量,所以不能用交换律

矩阵的乘法 不满足交换律

方块矩阵,简称方阵,三维渲染中,最常使用的是3*3 和 4*4的矩阵

对角矩阵,除了对角线上的元素以外,其他元素都为0。

单位矩阵,对角线元素为1,其他元素为0,一般用  “I”  来表示,且MI = IM = M

转置矩阵,矩阵的行和列进行互换,即c*r 变为 r*c

逆矩阵,一个矩阵的行列式不为0,那么该矩阵是可逆的,

正交矩阵,一个矩阵和其转置矩阵相乘为单位矩阵,那么该矩阵是正交的,且该矩阵的转置与该矩阵的逆矩阵相同。

矩阵的几何变换

矩阵的变换中,使用4*4 的变换矩阵进行变换,把原矢量或点也转换为4*1的齐次坐标,第4维为0(方向矢量)或1(点)。

平移矩阵   \begin{bmatrix} &1 &0 &0 &Tx\\ &0 &1 &0 &Ty\\ &0 &0 &1 &Tz\\ &0 &0 &0 &1 \end{bmatrix}  ,这是右手坐标系中的,左手坐标系把该矩阵转置。

缩放矩阵\begin{bmatrix} Kx & 0& 0& 0&\\ 0& Ky& 0& 0&\\ 0& 0& Kz& 0\\ 0 & 0& 0& 1 \end{bmatrix},左右手坐标系无变化

在旋转中,矩阵旋转要区分绕哪个轴旋转,常用其他旋转为四元数旋转和欧拉角旋转

矩阵旋转中,绕x(y或z)轴旋转,该轴所在分量值为1,其他分量为其正负正弦值或正负余弦值。绕任意轴旋转,根据其法向量来确定旋转矩阵。

四元数为 p=(w,v)=(w,(x,y,z))= w+xi+yj+zk,其中 v为向量,w为实数,i\j\k为虚数,x\y\z为坐标值的分量

欧拉角旋转,是根据一定的先后顺序从而将物体转至想要的角度,但会遇到万向锁(两个旋转轴重叠在一起)问题

旋转问题较为复杂,并且值得细细推敲,这里只是给出最最最最最最简单的介绍,详细的请参考其他博文!

复合变换中,乐乐姐约定的变换顺序是先缩放,再旋转,最后平移。

从原点缩放,其坐标不会发生改变 因为0*n=0,而平移以后,对象坐标会发生变化比如(0,0,5),那么缩放后就会变为(0,0,10),与结果不符。

坐标空间的变换:模型空间——>世界空间——>观察空间——>裁剪空间——>屏幕空间

模型空间:物体本身所在的空间坐标,也称为局部坐标

世界空间:整个场景空间

观察空间:摄像机空间,对象物体相对于摄像机的空间坐标系。

裁剪空间:即齐次裁剪空间,该空间是由视锥体决定的,视锥体有两种类型,即正交投影和透视投影

透视投影:根据摄像头的横纵比、近裁剪平面、远裁剪平面、竖直方向的张开角度来决定。

正交投影:其视锥体是一个长方体,根据远近裁剪平面的高度和远近来决定。

屏幕空间:通过标准齐次除法(透视除法),将视锥体投影到屏幕空间。

 

 

 

你可能感兴趣的:(计算机图形学)