2.4 相机
当我们谈论摄像机/视图空间时,我们谈论的是从摄像机视角看到的所有顶点坐标作为场景的原点:视图矩阵将所有世界坐标转换为相对于摄像机位置的视图坐标和方向。要定义一个摄像机,我们需要它在世界空间中的位置,它所看到的方向,一个指向右边的矢量和一个从摄像机向上指向的矢量。细心的读者可能会注意到,我们实际上将创建一个具有3个垂直单位轴的坐标系,并将相机的位置作为原点。
2.4.1 相机的位置
获得相机位置很容易。摄像机位置基本上是世界空间中的矢量,指向摄像机的位置。假设我们设置的相机位置为(0, 0 , 3)。此时,坐标系的Z轴通过屏幕朝向我们。
2.4.2 相机的方向
现在我们让相机指向我们场景的起源(也叫相机的焦点):(0,0,0)。请记住,如果我们从彼此中减去两个向量,我们得到的向量就是这两个向量的差异吗?从场景的原点矢量中减去相机位置矢量因此产生方向矢量。由于我们知道相机指向负z方向,我们希望方向矢量指向相机的正z轴。如果我们切换减法顺序,我们现在得到一个指向摄像机正z轴的向量
2.4.3 右轴
代表相机空间的正x轴。为了得到正确的,我们先在世界空间指定一个向上矢量。然后我们对向上矢量和相机方向和原点得到的方向向量进行交叉积。由于交叉积的结果是垂直于两个向量的向量,我们将得到一个指向正x轴方向的向量。
2.4.4 向上轴
现在我们同时拥有x轴向量和z轴向量,检索指向摄像机正y轴的向量相对容易,我们采用右向量和方向向量的叉积计算得到。
我们直立看东西,方向为头朝上,看到的东西也是直立的,如果我们倒立看某个东西,这时方向为头朝下,看到的东西当然就是倒立的。相机位置、相机焦点和朝上方向三个因素确定了相机的实际方向,即确定相机的视图。