Lecture04_转换控制_GAMES101 课堂笔记——2020.2.21

学习内容概览:

上节内容补充:

     旋转 ( heta) 角是旋转 (- heta) 角的矩阵转置,如果旋转 (R_{ heta}^T = R_{ heta}^{-1}),则该矩阵为正交矩阵。

一、3D transformations

    类似2D使用齐次坐标表示(点用1,向量用0):

  • 3D point = (left(x,y,z,1 ight)^T)
  • 3D vector = (left(x,y,z,0 ight)^T)
        通常,((x,y,z,w)(w!=0))是3D的点:

[egin{pmatrix} x^{'} \ y^{'} \ z^{'} \ 1 end{pmatrix} = egin{pmatrix} a & b&c&t_x \ d& e&f&t_y \ g&h&i&t_z \ 0&0&0&1 end{pmatrix} cdot egin{pmatrix} x \ y \ z \ 1 end{pmatrix} ]

( 一 )齐次坐标表示3D 变换

顺序:先线性变换再平移。

1. 3D 变换

  • 缩放和平移:

  • 绕着x、y、z轴旋转:
        固定旋转轴,分别绕着另外两个轴旋转。
    问题:为何绕 Y 轴旋转的旋转矩阵中 (-sin alpha)(sin alpha) 的位置不同?
    Ans:因为 (X imes Y)得到 (Z) 轴, (Y imes Z)得到 (X) 轴,连续书写字母顺序是:XYZXYZ...但是(Z imes X)得到 (Y) 轴,所以 (Y) 因此是反的。

2. 3D 旋转

    对于任意一个旋转 (R_{xyz} left(alpha,eta,gamma ight)),可以由 (R_xleft(alpha ight))(R_yleft(eta ight))(R_zleft(gamma ight)) 组成。其中,(alpha)(eta)(gamma) 称为欧拉角(Euler Angles)。通过下图中的操作,可将飞机的头朝向任意方向。

3. 罗德里格斯公式(Rodrigues’ Rotation Formula)

      在三维旋转理论中,对于给定旋转轴和旋转角度,以Olinde Rodrigues命名的罗德里格斯公式是用于在空间旋转向量的高效算法。
     旋转轴为 n 轴,旋转角为 (alpha) .默认旋转轴过原点(若不过原点,可想将其移至原点,然后做线性变换后,在将其平移至原位置)。其中,罗德里格斯公式如下:

另外提到一个概念:

四元数:便于计算旋转与旋转之间的差值。

二、观测变换(View/Camera Transformation)

( 一 )What is view transformation?


     以上三步简称"MVP"变换。

( 二 )How to perform view transformation?

1. 主要定义三个要素:
  • 位置
  • 观测方向
  • 向上的方向(类似地图上的向北指向,以便确定整个观测的位置。)
2. 进行视图变换

     约定:相机在原点,向上指向 Y,看向 Z 方向。

3. 相机转换步骤

4. 写成转换矩阵

总结

三、投影变换

( 一 )投影变换的分类


     其中,人眼成像类似于透视投影(右图);正交投影(左图)常用于工程制图。

( 二 )透视投影 VS 正交投影

     透视投影是在一个点投射成四棱锥形成;正交显示若将相机放于无限远,远、近平面将无限接近。

下面,将对透视投影和正交投影分别进行阐述。

四、正交投影

( 一 )3D化2D方法:

     主要将平移和缩放放在(left[-1,1 ight]^2)中。

( 二 )3D 常用方法

     定义一个空间中的立方体,将其映射成标准立方体(left[-1,1 ight]^3)中。“先平移再缩放”

注意:此时的([f,n])中,远平面 f < 近平面 n,因为是沿着 (-Z) 方向查看。但是在OpenGL中,由于是左手坐标系,因此f>n,是 (left[n,f ight])

     变换步骤:先平移再缩放。

( 三 )变换矩阵

     先将中心移至原点,再将其边长缩放为2。(在坐标轴[-1,1]范围内。)

     坐标系选择不同,会导致结果不同。

五、透视投影


     透视投影是目前最广泛的投影,近大远小,效果:放远处平行线不再平行,例如这个平行的铁轨。

     其中关于那个矛盾,是因为欧式几何是在同一个平面内,而这个铁轨照片里面包含了许多个平面,是在不同平面、不同角度,因此会感觉有些矛盾。

( 一 )回顾:齐次坐标性质

     其中,这里面这个结论很重要,在后面进行透视投影中会用到。

( 二 )怎样进行透视投影?(难点)

     简单说,就是把这个Frustum的远平面f挤成同近平面n一样大的平面,然后进行正交投影。
约定:

  • 近平面不变
  • 远平面f的中心点不变
  • Z值仍为f

         关于远平面挤压后坐标的变化,(通过相似三角形算出)等值关系:

         在齐次坐标中,利用乘以一个数,仍为原点,先乘以 (frac{n}{z})

         透视投影到正交投影:

         求第三行四个问号的值:
1. 观察特殊性——远、近平面的点特殊性:

2. 利用近平面的点不变性,计算出第三行的前两个问号,得出一个等式(An + B = n^2)

3. 利用远平面的点,Z坐标值不变性,得出(Af + B = f^2)


     

4.将第2、3步的等式联立,得出A、B的值。

Question:对于中间任意一点(x,y,z),在经过挤压后(将其变为立方体后),变换后的Z值会靠近远平面还是靠近近平面?
Ans:会更大一些,因为是双曲线上的一段。

原文地址:https://www.cnblogs.com/somedayLi/p/12343584.html