本章主要进行了视图/相机变换的求解,和两种投影变换的求解(正交投影、透视投影),并且简单的完善了3D旋转变换的介绍。
主要的学习过程来自下面的视频,本文只会有主要的基础内容,默认一些知识大家是掌握的,该精简的地方一定会精简。原视频非常好,我会在文章中插入视频的具体节点位置,更详细的内容可以观看原视频,教程网站上有课件和作业。个人也会在后续的学习过程中不断的向文章做补充,有问题大家可以在评论区探讨。文章的最后有一些小问题可以尝试回答,有些问题比较重要。
3D矩阵变换
3D旋转
1.欧拉角
欧拉角。非常常用,在著名引擎Unity和UE4中都有应用。视频位置P4-13:03
2.默认所有的旋转都围绕原点,如果让物体围着一个轴K旋转角θ呢?视频位置P4-15:37
罗德里格旋转公式
3.四元数(跳过后面不再使用)
四元数能避免欧拉角的万向节死锁问题并能保证旋转的平滑插值
观测变换Viewing
视图/相机变换
如何拍一张照呢?找个好地方,找个好角度,拍照。这里有着3种变换,本篇只探讨视图变换与投影变换
如果相机与物体相同的方式一起移动,那么得到相同的“照片”。
大家都动来动去的不好计算也不好定义,于是为了简化操作,约定俗成总是将相机变换到:
1.原点,上为Y,看向-Z。
2.然后将其他物体也随着相机做相同的变换 视频位置P4-29:19
具体的数学做法
旋转变换的逆变换是怎么来的呢?将XYZ三轴与逆变换相乘确实得到了原来的相机位置,就是试出来的。转变换的逆变换求逆变换,可见上一篇文章的课后第3个问题
投影变换
投影就是将三维变成二维的过程,例如你的屏幕就是投影得到的图像。
投影分为透视投影和正交投影。
两种投影
1.正交投影
正交投影比较简单。视频位置P4-39:09
2.透视投影
对于透视投影应该知道这几点:(视频位置P4-50:56)
1.应用最广泛且随处可见
2.近大远小(物体越远越小)
3.平行线不再平行,而是交于一点
4.见图
第四点
在我们求透视投影的变换矩阵之前,我们回忆知道一件事
见前一篇文章后第4个小问题
过程似乎很简单
过程1,找关系
过程2,也是找关系
过程3,求对应关系的矩阵
过程4,得到第三行?处需要的信息
过程5,得到第一个关系式An+B=n的平方
过程6,得到Af+B=f的平方
过程7
过程8
问题测试:
1.物体在相机坐标系中的Z轴是近大远小吗?
2.下图中的中心点经过透视变换后,还是在n,f面的中心吗?如果不是,更靠近n还是f呢?(可以用中心点的z代入的方法求,还有一种直接看的方式,在后面章节我会帮你点出来)
下一部分