摄像机+LookAt矩阵+视角移动+欧拉角
一: 摄像机 OpenGL本身没有摄像机(Camera)的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种我们在移动的感觉,而不是场景在移动。 以摄像机的视角作为场景原点时场景中所有的顶点坐标:观察矩阵把所有的世界坐标变换为相对于摄像机位置与方向的观察坐标。 要定义一个摄像机,我们需要它在世界空间中的位置、观察的方向、一个指向它右测的向量以及一个指向它上方的向量。 实际上创建了一个三个单位轴相互垂直的、以摄像机的位置为原点的坐标系。 摄像机位置:摄像机位置简单来说就是世界空间中一个指向摄像机位置的向量。 glm::vec3 cameraPos = glm::vec3(0.0f, 0.0f, 3.0f); ** 摄像机方向 :这里指的是 摄像机指向哪个方向。 现在我们让摄像机指向场景原点:(0, 0, 0)。 2.1 用场景原点向量减去摄像机位置向量的结果就是摄像机的指向向量。 2.2 由于我们知道摄像机指向z轴负方向,但我们希望方向向量(Direction Vector)指向摄像机的z轴正方向。如果我们交换相减的顺序,我们就会获得一个指向摄像机正z轴方向的向量: glm::vec3 cameraTarget = glm::vec3(0.0f, 0.0f, 0.0f);//表示摄像机指向的地方,即原点 glm::vec3