WAYNETS.ORG

Game and Program

变换(Transformation)

作者:

发表于

Context Polling System Post-Processing Renderer

1. 缩放

(1)均匀缩放

(2)不均匀缩放

(3)反射

(4)切变矩阵(Shear Matrix)

(5)旋转矩阵

2. 齐次坐标

主要用于应对平移操作,因为该变换不能写成上面的线性变换形式,只能写成:P24

由于它是一个特殊情况,为了统一所有的变换表示,引入了齐次坐标。

通过将二维的点和向量,增加一个维度,使得平移操作也可以写成一个矩阵*向量的形式P25

最终得出来Affine仿射变换P27

代价:引入了额外的数字,任何点变成xy1,任何向量变成xy0

注意:只有在仿射变换时,齐次坐标矩阵最后一行才是001,并非任何情况都是001.比如投影变换,它是有意义的。

逆变换:逆矩阵

正向旋转和反向旋转:想要求出一个相反的旋转,只需要先写出正向旋转,然后将它转置,得出的就是逆。在数学上,如果一个矩阵的逆等于它的转置,那么这个矩阵就是正交矩阵。

3. 变换的组合与分解

复杂的变换可以通过简单变换组合得到,但是要注意变换顺序(即:矩阵乘的顺序,因为矩阵不满足交换律)。

先用线性变换然后再用平移变换?在三维空间也一样。

组合的应用顺序要和矩阵的乘法顺序反过来。

变换不仅可以组合也可以分解

4. 3D变换

旋转:如果是按着某一个轴旋转,那么该轴的值不变P8

对于复杂旋转,都是可以用x,y,z旋转进行组合

P10罗德里格斯旋转公式:与2D的思想一致,把轴n的起点移到起点,然后再旋转?

5. Viewing Transformation

(1) View / Camera transformation

P12如何得到“一张照片”?MVP变换

view transformation:摆放一台“相机”

我们需要:相机位置 + 相机Look-at + 向上方向(Up Direction)

我们规定:相机位置Origin + Look at Z + up at Y(写成矩阵形式为P16

(2) Projection Transformation

正交投影

P21通俗做法

P22正规做法:把一个三维空间的正方体,首先平移到原点位置,然后缩放到空间【-1, 1】形成一个标准正方体。

由于我们是沿着-Z方向去看,所以会导致远处的Z值比近处的Z值小,这样是为了抱着右手坐标系。而OpenGl则假设为左手坐标系,因为更方便。

透视投影

特点:假设相机无限远,平行线不再平行,近大远小。

齐次坐标将被应用到透视投影中。

P29规定:近平面的四个点(平面上的任何一个点)不变 + 远平面上Z方向不变 + 远近平面中心点不变

挤压这一步怎么做?

P30:点x和y的求法:基于相似三角形,知道Z就能求出prime X和Y

Read Next:


Leave a comment