0
点赞
收藏
分享

微信扫一扫

games101笔记整理(视角变换1)

艾米吖 2022-02-15 阅读 155

        在上一部分(变换)中,关于3维空间中的物体位置的变换我们已经了解了。

一般而言,我们拥有的数据是空间中的物体的数据,而我们要做的是将三维的物体展示在一个二维的平面上,在这个过程中,我们如何在平面上表现出三维的效果,是我们要在接下来的内容中解决的。

让我们考虑一下我们在生活中使用的相机,它的功能刚好就和我们所需要的相同。对于拍摄一张招牌你,我们将相机拍摄照片的过程拆成三块,首先是相机的放置,接着是我们要拍摄的物体(或者人)的位置,接最后是相机如何成像。

或者我们按照如图的理解方式:

拍摄一张照片,需要:1.找到以一个好的地方并且安置照相的人(模型变换) 2.找到一个好的角度来摆放摄像机 (观测变化) 3.拍照(投影变换)

这被称为MVP过程

我们可以固定我们相机摆放的位置和朝向,接着旋转整个世界(笑),由于运动的相对性,这事实上和我们移动我们的摄像机的效果是一样的。

那么我们的摄像机如何摆放?

摄像机的摆放涉及到三个方面:摄像机放置的位置,摄像机的朝向,摄像机的俯仰角。

 

在games101中规定相机摆放在原点,朝向-z方向。

定义三个向量如图来表示相机的摆放。

其中e表示位置向量

g表示朝向向量

t表示俯仰角向量

要把一个任意位置的相机转化成标准的相机,需要的就是把e转到原点处

g转化到-z方向

t转化到y方向上

但是显然这并不好写,对于任意的一个相机的向量

那么我么反过来,求从原点到e,从-z到g,从y到t,得到R逆矩阵,接着由于旋转矩阵是正交阵,我们将R逆做转置得到R矩阵,就是所求的相机的标准化矩阵

 我们可以将平移和转向分成两部分。图中Tview表示的就是平移向量

Rview表示的就是旋转向量

我们已经解决了MVP中的V,接下来我们来解决Projection transformation

 

投影分为两种类型,perspective projection(透视投影)和orthographic projection(正交投影)

正交投影:具体情况可以百度或者谷歌,简单而言就是正交投影是不改变其他的坐标,而直接将投影到的平面上确定的一个维度的值置为常数。(x,y,z)->(x,y,0),就如同正午的太阳将鸟的影子映射到地面上。(此时影子的大小和鸟相同)

透视投影:透视投影是用中心投影法将形体投射到投影面上,从而获得的一种较为接近视觉效果的单面投影图。它具有消失感、距离感、相同大小的形体呈现出有规律的变化等一系列的透视特性,能逼真地反映形体的空间形象。

透视投影能够表现出近大远小的效果,而正交投影则不会,透视投影一般用于表示我们希望看到正常的世界时,而正交投影则一般用于工业软件中。

我们首先来看相对简单的正交投影。

对于任何一个三维的图形,实际上我们可以将它框在一个立方体中,我们现在要将这个物体投影到标准正方体([-1,1]*[-1.1],[-1,1])中,实际上由正交投影的定义,我们只需要直接将z坐标去掉,同时将物体的中心移到标准正方体的中心,接着进行放松就可以了。

可以简单的用如下的变换矩阵解决:

 

这实际上是两个矩阵的复合的结果。实际上应该是先平移接着缩放。记平移矩阵为A,缩放矩阵为B,M orth=B*A

如果先缩放再平移的话,由于此时坐标已经改变,导致两侧的点位置改变,而在运用齐次式的情况下,相当于直接在(x,y,z)的坐标上加上平移的值,会导致 平移不到标准正方体上。

以上我们已经解决了正交投影的问题,那么我们接下来解决透视投影的问题,我们首先考虑运用已有的结论,可以将透视投影转换成正交投影,接着直接运用正交投影的结论就可以解决问题了。

举报

相关推荐

0 条评论