Lecture 04 Transformation Cont.(变换)(续)
补充:
五、3D Transforms(三维变换)
- 类比二维变换,先线性变换,再平移,同样引入齐次坐标
- 三维空间中仿射变换
- 三维空间中的旋转矩阵(绕x\y\z固定轴旋转)
要通过轴的顺序判断,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:
透视投影进行归一化的思想:近平面不变,将远平面的大小挤压成和近平面一样大,后面的操作和正交投影一样
推理见下节