学习笔记04:GAMES101现代计算机图形学入门——闫令琪

867 阅读3分钟

Lecture 04 Transformation Cont.(变换)(续)


补充:

如果一个矩阵的逆等于它的转置,这个矩阵称为正交矩阵(行和列都是标准正交基)

从几何上,如果把矩阵的元素当做是某个空间的基向量,这些基向量是两两垂直(正交)


五、3D Transforms(三维变换)

  • 类比二维变换,先线性变换,再平移,同样引入齐次坐标



  • 三维空间中仿射变换

  • 三维空间中的旋转矩阵(绕x\y\z固定轴旋转)


绕y轴旋转,为什么不太一样?

要通过轴的顺序判断,y 叉乘 z = x,x 叉乘 y = z,有一个循环对称的性质,z叉乘x才能得到y,而非x叉乘z,所以绕y轴有点不一样


  • 如何用简单的旋转描述复杂的旋转?


任意的一个3D旋转可以写成上面的形式,那α、β、γ这三个角又被称为欧拉角(Euler angles)

类比飞机:roll(滚转角),pitch(俯仰角),yaw(航偏角)


  • (Rodrigues‘ Rotation )罗德里格斯旋转公式


定义了一个旋转角度和旋转轴,实际上这里默认此旋转轴过原点

但如果想要绕一个点旋转(也就是说上面的旋转轴不过原点的话),就和二维空间类似,先将旋转点平移到原点上,再旋转,再平移回来

N是由旋转向量n生成的反对称矩阵,实际上是把向量叉乘写成矩阵的形式

通过该反对称矩阵的定义可以将叉积表示为矩阵与向量的乘法


  • 四元数(Quaterions)
四元数能避免欧拉角的万向节死锁问题,并能保证旋转和旋转之间的平滑插值



六、Viewing(观测)transformation

MVP变换:模型变换、视图变换、投影变换
  • View(视图)/Camera transformation
  • Projection(投影)transformation

      Orthographic(正交)projection

      Perspective(透视)projection(近大远小)


1、View(视图)/Camera transformation

1)确定相机的摆放:


       垂直于look-at

2)考虑将相机固定到一个位置(因为只要相机和物体的相对位置一样,结果就是一样的)


3)使用Mview将相机移到上面固定位置和朝向:


4)Mview的计算


对于旋转部分,先算出X、Y、Z到(g x t,t,-g)的变换矩阵,再求逆,因为是正交矩阵,逆=转置,所以求转置即可。

另一种个人理解:

由(g x t,t,g)构建一个源4x4矩阵 A,由(X、Y、-Z)构建目的4x4矩阵B,那由A到B的变换矩阵应该为 B乘以A的逆


2、Projection(投影)transformation

1)正交投影(Orthographic projection)

归一化:先将中心移到原点,再将其缩放到[-1,1]的一个正方体

PS:虽然此时可能会拉伸变形,但之后还会有个视口变换,还会有一次拉伸



PS:因为相机是朝向-Z的,所以实际上n>f,这也是为什么OpenGL在NDC中用左手坐标系


2) 透视投影(Perspective projection)

特点:近大远小,平行线不再平行(PS:欧式几何所说的平行线不相交指的是在同一平面内


tips:



透视投影进行归一化的思想:近平面不变,将远平面的大小挤压成和近平面一样大,后面的操作和正交投影一样

推理见下节