文章目录
Transformation Cont
补充上节课内容
旋转角的矩阵表示:
结论:在旋转里,旋转矩阵的逆就是旋转矩阵的转置。
正交矩阵:矩阵的逆=矩阵的转置
本节内容
- Viewing transformation(视图变换)
- View/Camera transformation
- Projection(投影)transformation
- Orthographic(正交) Projection
- Perspective(透视)
View/Camera transformation
变换目的:将三维空间的物体变换成二维空间的照片。
MVP变换三步骤:
- 模型变换(Model transformation):摆好模型
- 视图变换(View transformation):改变相机的角度、位置等
- 投影变换(Projection transformation):三维投影到二维
视图变换:
- 首先定义相机:位置、往哪看(Look-at/gaze direction)、向上方向(相机头部的方向,向左偏、向右偏之类的)观察方向和向上方向是垂直的(因为镜头方向和相机头部垂直)
- Key observation观察点
- 如果相机和所有物体一起移动,则其相对位置没有改变,拍的照片也是一样的。
- 如果相机和所有物体一起移动,则其相对位置没有改变,拍的照片也是一样的。
- 设定相机的位置作为原点固定,永远朝向-z方向看,向上方向为y轴方向——相机在标准位置,其他物体跟随相机移动。
如何改变:
先把平移到原点,观察方向旋转到-Z方向,向上方向旋转到Y方向,自然也旋转到了X方向
矩阵表示:
先平移到原点:
再将观察方向 旋转到-Z方向,向上方向 旋转到Y方向,旋转到X方向这样很困难。
换一种思考方式,将X旋转到,将Z旋转到,Y旋转到 ,然后该矩阵的逆即为所求矩阵。
因为旋转矩阵是正交矩阵,所以直接将计算得到的逆矩阵转置即得到所求的矩阵。
Projection transformation
两种投影方式:
Orthographic(正交) Projection
Perspective(透视)Projection:会有近大远小的现象
区别:正交对应平行线条还是平行的,透视对应平行线条延长后会相交。是否有近大远小的现象。
正交投影是假设把相机拿到无限远,越远,物体的近处和远处的区别越不明显。
Orthographic(正交) Projection
相机按标准摆放位置。
假设把Z给扔掉,则’E’和‘■’都挤在了xy平面,再缩小范围,将图片缩放到矩形上。
正交投影的正式操作:
- 首先定义一个空间中的立方体,定义立方体的左右在x轴的哪一部分范围,下上在y轴的哪一部分范围,前后在z轴的哪一部分范围。
因为右手坐标系,观察方向是沿着-Z方向,所以远坐标f的z值比近坐标n的z值更小。而OPENGL是左手坐标系,所以他的远坐标f的z值比近坐标n的z值更大。 - 将该立方体映射到正则立方体(规范、标准立方体)上。先将定义的立方体的中心移动到原点,然后将立方体xyz轴拉成[-1,1]的范围。
矩阵表示变换矩阵:(依旧是先平移到原点,再缩放)
Perspective(透视)Projection
应用的最广泛的投影。
平行线不再平行:
强调:与表示的是同一个点。那么也表示的是。
透视的远平面更大。
透视操作:
先把远平面f“挤成”和近平面n一样,即将锥体变成柱体,这样就从透视变成了正交。注意以下需要遵循的规则:
- 近平面n永远不变,远平面f的z值不变
- 远平面f的中心点不变
然后就按照正交投影的操作进行。
挤压的详细步骤:
侧视图:
挤压后的坐标,同时乘z后依旧是那个坐标:
矩阵表示挤压:
将坐标与矩阵相乘后:
① 在近平面(z轴坐标为n)上的任意一点不会发生任何变化。
即:
对于矩阵第三行可列方程:
即
② 在远平面(z轴坐标为f)上的任意一点它的z坐标f不会发生任何变化。
f平面的中点变换后坐标不变:
(1)(2)联立,解得:
故透视变正交矩阵:
透视矩阵: