Games101-02 Transformation变换
2D变换
线性变换
可以用矩阵直接表示
Scale 缩放
Reflection 反射/对称
Shear 切变
Rotate 旋转
齐次坐标系(Homogeneous)
线性变换+平移,不能用矩阵直接表示,添加第三个坐标即使用齐次坐标表示
齐次坐标就是用N+1维来代表N维坐标,在笛卡尔坐标系下加额外变量w形成齐次坐标
2D 点 =
2D向量 =
针对点/向量具有平移不变性,为0或1时才是有效操作,需要变成
把齐次坐标转化为笛卡尔坐标的方法是前面n-1个坐标分量分别除以最后一个分量即可
向量+向量=向量
点-点=向量
- 点+向量=点
- 仿射变换 Affine:线性映射+平移使用齐次坐标系为:
缩放/ 旋转/ 平移
Scale
Rotation
Translation
组合变换
设有仿射变换……
由矩阵乘法组合对性能影响很大,可以将n个变换先合成一个计算
3D变换
四元数
3D 点 =
3D向量 =
矩阵的逆为转置:
3D变换
- Scale
- Translation
- Rotation
- 旋转-欧拉角:绕x、y、z轴旋转
- 旋转-任意方向
View / Camera视图变换
拍照:①确定好模型位置 ②调整相机位置(视图变换)③3D->2D,通过投影变换
视图变换:通过相机拍摄,相机随物体一起变换,目的是将相机位置调整为标准坐标轴位置
定义相机:位置,拍摄方向,向上方向
相机模型转化在坐标轴上:为原点,为-Z,为Y
由于难以转换,通过计算由标准坐标轴转化为相机视图
Projection 投影变换
正交投影
正交投影:直接将3D拍扁就是上面的图,通过平移和缩放使其变为1x1x1的立方体
- 由于摄像机看向-Z方向,物体在-Z轴上,因此z越大越近 (l, r)X(b, t)X(n, f)为在x, y, z轴上的范围
透视投影
透视投影:近大远小,不平行的平行线,收敛到单点;通过挤压变换投影到另一个面
- z值不变,切面上中心点不变,近平面不变(z=n的平面)
- 则对于任一点(x, y, z)在齐次坐标下表示为:
构造矩阵为:
- 由于近平面(最近即z=n的情况)上任意点不变z值不变,将z替换为n,中心坐标不变:
因此:
- 由于最远平面(最远即z=f,只剩原点(0,0)的情况)中心不变
因此:
- 最终
即
视野:垂直可视角度,上下中点与视锥点的夹角决定范围大小
纵横比:宽高比
视锥点:相机位置
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 五里霧中!