投影
我们得世界在我们得感知中是3D的,但是在我们观察这个世界的时候却是其2D的显示。为了处理这个问题,我们便引入了投影的概念。投影本质上来说是将3D世界坐标投射到2D显示屏幕上去的处理过程。
3D图形学中我们所涉及到的有两种投影。
1平行投影
2透视投影
平行投影
平行投影通常是CAD工程师在制图时用来从不同视角表现物体的,这些视角的视图也叫做正投影视图。在CAD中顶视图、前视图和侧视图最为常用。
平行投影可以分为两步来完成。第一步先要将投影平面变换到3D空间中的XY平面上,第二步就是除去所有可见点的Z项坐标信息,这也就将空间中物体的深度信息除去了,使得物体的投影保持原大小比例不变,而不考虑它们相对于观察者的距离。
虽然平行投影对于CAD应用可能很适合,但是此投影不能产生出透视投影所能生成的真实感效果,因为它丢失了深度信息。因此,3D游戏和演示程序中透视投影更为实用。
透视投影
透视投影生成图像,其中的物体的大小是基于该物体相对于观察者的距离的,举个例子来说,近大远小。
进行透视投影时,空间中物体所反射的所有光线都会聚到观察者的眼睛这一点。这与人眼睛看东西十分相似。现在想像眼球外面有一个投影平面,由于所有的光线都会聚到观察者的眼睛,这些光线就会与此投影平面相交并在其上产生相应的交点,这些点就是3D世界投射在2D平面上的影像。
透视投影的主要思路就是确定反射光线与投影平面交点的位置。这可以借助于一个透视变换矩阵来完成。不过先让我们看看焦距这个概念。
观察者与投影平面之间的距离定义为焦距。在3D图形学中,焦距特别的重要,它决定了视场角度。随着焦距的增大,视场变小或者变窄。当焦距减小时,视场变大。在开发3D游戏或演示程序时,为了获得更具有真实感的图像,通常要尝试多种焦距,这是因为透视变换的使用有可能会对图像产生扭曲失真。