欢迎光临散文网 会员登陆 & 注册

games101学习笔记02-MVP变换p4

2023-06-05 17:38 作者:白菜儿先生  | 我要投稿

目录

一、MVP变换

模型变换 视图变换 投影变换

二、视图变换

三、投影变换

正交投影 透视投影


正文

一、MVP变换

mvp包括模型变换(model transportation),视图变换(view transportation)和投影变换(projection transportation)。

以现实中拍照为例,模型变换即摆放场景中物体位置,视图变换即摆放摄像机的位置,投影变换即拍照成像。

相机如何定义:相机位置Position、相机朝向Look-at、向上方向up(决定画面是否倾斜)


二、模型变换

将局部坐标转换到世界坐标。

三、视图变换

将世界坐标转换到视图坐标。

当相机场景中所有其他物体相对位置不变时,呈现画面一定不变,因此画面的变换只需要看相对位置的变换。为了方便起见,图坐标把相机看做是静止的,把相机的位置看做是坐标轴的原点,相机的向上方向为y轴,相机的朝向为-z轴。而其他所有物体在相机的坐标系中移动。


步骤如下

1.先把相机局部坐标中的中心点e平移到世界坐标的原点。平移矩阵如下:


2.把g旋转到与-z平行

把一个一般的向量旋转到与坐标轴平行比较麻烦,但把坐标轴旋转到与一般的向量平行很简单,因此这一步可以先写出-z轴旋转到g的变换,再求矩阵的逆(转置)。

-z旋转到g的旋转矩阵:

再求转置:

3.把t旋转到与y平行

与2同理。

当相机进行视图变换移动到坐标轴时,场景中的物体也进行相同的视图变换,就可以保证成像依然没有变化。

二、投影变换

将视图坐标转换成裁剪坐标。可以理解为,在物体和相机位置之间设置一个屏,把物体的坐标变换为在屏上的坐标。

分为透视投影perspective projection与正交投影orthographic projection。


1.正交投影

设想把相机拉到无穷远位置,则无论物体的远近,其拍摄的物体的投影大小都与物体本身是一致的。即忽略深度信息,没有近大远小

对于正交投影,把摄像机看作原点,朝向看作-z轴,向上方向看作y轴。如下图。在这张图中,只是简单地把物体坐标信息中z轴的信息去掉,变成只含x,y的二维坐标,就得到了字母E的正交投影的坐标了。在该图中,E在屏幕后方,点在屏幕前方,但是投影在屏幕上却无法看出前后关系。

为了方便后续工作,在正式的正交变换中,会把一个一般的立方体变成标准立方体。

先把物体中心移动到原点,即每条边挪动中点到坐标轴的距离(下图右边的矩阵)。再进行缩放(左边矩阵)。

2.透视投影

满足近大远小,许多平行关系在投影中不再平行。

透视投影变换如何进行

先变成正交,再进行正交投影。

(1)把透视投影转换成正交投影

如下图,这个六面体向左侧延伸汇聚的点就是相机中心点。n处表示近处的平面,f处表示远处的平面。其中的实线表示了f平面到n平面的透视关系。

想象将f处平面挤压,变成一个和n处平面大小一致的平面,那么其中的透视线也将变得平行。也就是变成了正交投影。这一步具体来讲,应该是保持近平面不变,远处的平面的前后距离不改变,而围绕中心点进行放缩。





接下来将求出变换矩阵。

侧面图如下。只看特定点(x,y,z),在平面上的投影点为该点挤压后的结果,根据相似三角形得到。同理x'=n/z*x。

则(x',y',z')用齐次坐标表示为(n/z*x,n/z*y,?,1)T,相当于(nx,ny,?,z)T。

也就是说,对(x,y,z,1)T进行透视转正交的变换后(左乘变换矩阵M),得到(nx,ny,?,z)T。则可以计算出这个变换矩阵如下。

(在下文中用M代称)

不妨设四个问号的值为P,Q,A,B。为了解出它们的值,还需加入新的条件。

条件一,在距离n所在的平面上(即近平面)的点,在近平面上投影不变。在近平面上的点,就是把(x,y,z,1)T中的替换成n,也就是(x,y,n,1)T。为方便计算,乘个n转化为(nx,ny,n²,n)T。

数学表示为M·(x,y,n,1)T=(nx,ny,n²,n)T。对于第三项n²的计算,有n²=Px+Qy+An+B。

则结论为P=Q=0,An+B=n²,A、B未知。

条件二,远平面上的中心点的位置不发生改变。

数学表示为M·(0,0,f,1)T=(0,0,f²,f)T。

则结论为Af+B=f²

根据两个结论,解方程组即可。

(2)进行正交投影变换



games101学习笔记02-MVP变换p4的评论 (共 条)

分享到微博请遵守国家法律