我们观察真实世界会发现一种现象,就是同一个物体离得近的时候看着大,离得远的时候看着就变小了,这种现象叫做透视。为了在计算机中模拟透视现象,需要在把场景中的物体在渲染是进行透视投影。
我们先举个投影仪的例子:假设从上图的相机位置放置一台投影仪,从投影仪的发射出呈棱锥体分布的光线。首先光线打在图中标示为模型物体上,然后按照数学和物理规律肯定会投影在图中标示为远平面的画布上。按照透视原理,原平面上会呈现一个放大版的模型的轮廓。这个过程我们成为透视投影。
而3D程序中的透视投影其实是反过来的过程,不是把物体投影在物体之后的远平面上,而是反向投影在物体之前的近平面上(如上图中标示的那个平面)。这个过程也是相机拍照成像的过程,通俗地说就是把世界中的物体投影在相机的感光元件上。
如上图中所示,远平面和近平面以及四棱锥的四条棱构成的形体称为视锥体。视锥体之间的物体会投影到近平面,最终渲染成画面。
能进行透视投影的相机称为透视相机,透视相机的3个主要属性是:
●Near(近平面):表示近平面与相机距离的数值,有时候也简称为近平面
●Far(远平面):表示远平面与相机距离的数值,有时候也简称为远平面
●Fov:表示视锥体的开角角度(就是视锥体对应的四棱锥的那个尖尖的展开角度)
从上文描述的原理我们也可以推断出:与相机距离小于近平面(上文说到近平面是Near这个数值的简称)和大于远平面的物体都将不可见,因为无法投影到近平面上。而Fov越大,能看到的物体就越多,类似于摄影中的广角镜头。