在计算机的三维世界中,相机如同我们的眼睛,捕捉眼前的每一副画面,反过来物体要能够被相机在指定的距离和角度下观看到,并通过屏幕像素绘制出来。
在这个过程中,物体的三维空间坐标需要经过好几层矩阵变换,最终转换到二维平面坐标,并通过像素呈现在屏幕中。我们将这几层矩阵变换过程简称为MVPW矩阵变换。
下面我们展开介绍MVPW具体内容 ~
模型(Model)
MVPW中的M是模型顶点在三维场景中的位置。
一般情况下,模型在绘制过程中都是使用模型自身坐标(通常称为模型坐标或者小坐标),模型的顶点位置称为pos,通过变换矩阵 matrix改变模型位置、姿态、大小,将模型放置在指定的三维场景中。这时候模型顶点在三维场景中的坐标位置worldPos = pos * matrix。
观察矩阵(ViewMatrix)
MVPW中的V是观察矩阵,作用是将世界坐标转为为相机坐标。在相机坐标系下,以相机作为参考,其位置为原点,world* viewMatrix可获得模型顶点在相机坐标下的位置。
- 在osg中观察矩阵接口设置如下:
osg::Matrixd::lookAt(eye,center,up)
其中eye是相机的世界坐标位置,center是相机观察的位置,up是相机向上向量。
我们可以通过建立坐标轴来说明&#