目录
一、视图变换简介
视图变换的任务是将三维位置 ( x , y , z ) (x,y,z) (x,y,z) 映射到图像中的二维坐标。它取决于相机的位置与方向,投影的类型,视野和图像的分辨率。但是整个过程可以被细分为如下几个步骤:
- 模型变换(Modeling transformation): 调整场景中物体位置
- 摄像机变换(Camera transformation): 调整摄像机位置,以及物体与摄像机相对位置。
- 投影变换(Projection transformation): 根据摄像机变换得到了所有可视范围内的物体对于摄像机的相对位置坐标 ( x , y , z ) (x,y,z) (x,y,z) 之后,便是根据是平行投影还是透视投影,将三维空间投影至标准二维平面 [ − 1 , 1 ] 2 [-1,1]^2 [−1,1]2 之上。
二、模型变换(Modeling transformation)
利用矩阵基本变换进行模型变换;具体参考:【Computer Graphics】计算机图形学之基础变换矩阵
三、视图变换(Camera Transformation)
Camera Transformation
目的是得到所有可视物体与摄像机的相对位置。
-
建立摄像机坐标系
u , v , w u,v,w u,v,w分别对应标准坐标系下的 x , y , z x,y,z x,y,z。
-
将相机位置移动至原点
平移矩阵
-
通过旋转矩阵将两者坐标系重叠
最终变换矩阵 M c a m M_{cam} Mcam 定义如下:
(左为旋转矩阵,右为平移矩阵)
四、投影变换(Projection Transformation)
如何将摄像机变换之后得到点映射至二维空间坐标就由投影变换完成,投影变换包括正交投影(Orthographic projection)
和透视投影(Perspective projection)
。
1. 正交投影(Orthographic projection)
&esmp;正交投影是相对简单的一种,坐标的相对位置都不会改变,所有光线都是平行传播,我们只需将物体(可视部分,即上图的那个长方体)全部转换到一个
[
−
1
,
1
]
3
[-1,1]^3
[−1,1]3 的空间之中即可。
定义视图空间:
由此定义正交变换矩阵
M
o
r
t
h
M_{orth}
Morth定义如下
2. 透视投影(Perspective Projection)
透视投影就是最类似人眼所看东西的方式,遵循近大远小,如果说正交投影都是水平光线,那么透视投影则显然不是了(左透视,右正交)
此时,投影过程可用下图解释,将
(
x
,
y
,
z
)
(x,y,z)
(x,y,z) 一点投影至投影屏幕之后,他的坐标变为
(
x
′
,
y
′
,
z
′
)
(x',y',z')
(x′,y′,z′)
M
p
e
r
s
p
−
>
o
r
t
h
o
=
[
n
0
0
0
0
n
0
0
0
0
n
+
f
−
n
f
0
0
1
0
]
M_{persp->ortho} = \begin{bmatrix} {n}&{0}&{0}&{0}\\ {0}&{n}&{0}&{0}\\ {0}&{0}&{n+f}&{-nf}\\ {0}&{0}&{1}&{0}\\ \end{bmatrix}
Mpersp−>ortho=⎣⎢⎢⎡n0000n0000n+f100−nf0⎦⎥⎥⎤
故定义透视投影变换
M
p
e
r
M_{per}
Mper定义如下: