变换Transformation(2)(笔记)


三、三维变换

预览变换Transformation(1)(笔记)

三维旋转变换在这里插入图片描述上图为三维物体围绕x轴,y轴,z轴旋转的公式。当围绕x轴旋转时,对于任意一个点,x轴都不变,对于y,z也是这样。注意绕y轴旋转的公式有一点奇怪,似乎是反着的。原因是因为绕y旋转时是从z到x,而绕x和绕z分别是从y到z和x到y。

欧拉角(Euler angles)在这里插入图片描述为了方便理解三维旋转,将三维旋转看作是绕x轴,y轴,z轴旋转组合的结果。

罗德里格旋转公式(Rodrigues’ Rotation Formula)在这里插入图片描述
罗德里格旋转公式能够表述任意的旋转,方法也就是将旋转分解为x,y,z三轴上分别做旋转得到的。

四、视图/摄像机变换(View/Camera Transformation)

视图变换
在这里插入图片描述三维物体要显示出来要变换到二维屏幕。视图变换就是二维视图/摄像机的变换。要理解什么是视图变换可以思考一下现实中我们是如何拍照的:
首先我们选好位置再安排好拍照对象(模型变换model transformation),再将摄像机摆放到一个好的角度(视图变换view transformation),最后才是按下快门键(投影变换projection transformation)

视图变换的执行在这里插入图片描述
1.要执行视图变换,首先要定义摄像机的位置,摄像机看的方向,以及摄像机的向上方向。
在这里插入图片描述
2.如果相机和所有的物体一起移动,得到的图像是不变的,所以我们永远会把摄像机变换到坐标原点,并且永远往-z方向看,以y轴为向上方向,其他所有物体也跟随着相机一起发生变换。将相机放在这个所谓“标准位置”可以简化操作。
在这里插入图片描述
3.对于摄像机e,为了执行上述操作,需要对摄像机进行Mview变换,Mview变换需要我们先将摄像机平移到原点,再将g旋转到-Z,将t旋转到Y,将(g X t)旋转到X。
在这里插入图片描述
4.将摄像机按Tview矩阵变换,平移到原点。
在这里插入图片描述
5.对于旋转来说,将g旋转到-Z,似乎不是很好写出来,但是将-Z旋转到g似乎就很好写出来。也就是说,我们想要的变换不是很好求,但是他的逆变换很好求,我们就可以先将他的逆变换写出来。接下来对他的逆矩阵再求逆就行了。
6.由于其他物体的模型变换要和摄像机的视图变换一起做一样的变换,所以上述过程也称为模型视图变换(ModelView Transformation)。

五、投影变换(Projection Transformation)

投影变换在这里插入图片描述在计算机图形学中,投影是指从3D到2D的过程,分为透视投影(Perspective Projection),正交(正射)投影(Orthographic Projection)。

透视投影和正交投影在这里插入图片描述对于透视投影,我们认为摄像机是一个点,视线是一个四棱锥,透视投影更接近人眼的观察效果,有近大远小的特点。对于正射投影,我们假设摄像机放在无限远,那么物体的远近不再影响物体的大小。

正交投影的简单理解方式在这里插入图片描述摄像机在原点,看向-Z方向,舍弃掉z轴信息,再将得到的只有x,y轴信息的结果图移动到一个-1到1的矩形上(这样做可以方便之后的计算),得到就是正交投影。

正交投影的正式操作方式在这里插入图片描述
1.首先定义一个空间中的立方体,我们要确定他的左右在X轴上是多少,上下在Y轴上是多少,远近在Z轴上是多少,将它映射到标准立方体([-1,1]^3),也就是将他的中心放在原点,将x,y,z轴分别拉扯到-1到1。公式如上。这样所有的物体都会被拉升到一个标准立方体中。
注意:由于我们是看向-Z的,所以近其实大于远(n>f)。这就是为什么OpenGL的API要选用左手坐标系。
在这里插入图片描述
2.做完以上,还会进行一个叫做视口变换的事情,再进行一次拉伸。这里暂时未谈到。

透视投影在这里插入图片描述
透视投影是使用的最广泛的投影方式,满足近大远小,视觉效果上平行线不再平行,而是会汇聚到一点。

齐次坐标的一个性质在这里插入图片描述
(x,y,z,1),(kx,ky,kz,k != 0),(xz,yz,z^2,z != 0)全都表示三维空间中的同一个点(x,y,z)。这是一个简单但有用的性质。

透视投影的操作方式在这里插入图片描述
1.将空间中的一个截头锥体“挤压”成一个长方体(这样做了以后,近平面还是那么大,远平面变小了)。
2.做正交投影。

将截头锥体“挤压”成长方体的操作方式
在这里插入图片描述
1.首先找到变换后(要达到)的点(x’,y’,z’)和原来的点(x,y,z)之间的关系。就x和y而言,很明显是相似三角形,n/z的关系。
在这里插入图片描述2.写出齐次坐标式,此时我们还不知道z轴的变换关系。
在这里插入图片描述3.由于我们并不知道z轴的变换,所以对齐次坐标进行一些变换可以得到变换矩阵M(persp->ortho)的一部分。
在这里插入图片描述4.通过观察可以发现,不管远近屏幕,z轴都没有发生变化。
在这里插入图片描述
5.对于在近点的情况,由于n/z为1,z=n,所以将z替换为n,能直接得到近点变换之后的结果,由此推测出结果的第三行为n^2,矩阵的第三行形式为0 0 A B,A B不能确定,但是An+B=n ^2。
在这里插入图片描述
6.对于远点(0,0,f)(截头锥体远平面中点)同样在发生变换后保持不变。也就能得到式子Af + B = f^2。
在这里插入图片描述
7.通过两个式子解出A和B,矩阵完成了。


课程的最后

在这里插入图片描述
中间的Z点在挤压以后怎么变?

猜你喜欢

转载自blog.csdn.net/qq_37856544/article/details/112909064