learnOpenGL camera
glm库中有实现好的lookAt矩阵,我们要做的只是定义一个摄像机位置,一个目标位置和一个表示世界空间中的上向量的向量(我们计算右向量使用的那个上向量)
glm::mat4 view;
view = glm::lookAt(glm::vec3(0.0f, 0.0f, 3.0f),
glm::vec3(0.0f, 0.0f, 0.0f),
glm::vec3(0.0f, 1.0f, 0.0f));
lookAt函数实现的是下面这个矩阵
LookAt=⎣⎡RxUxDx0RyUyDy0RzUzDz00001⎦⎤∗⎣⎡100001000010−Px−Py−Pz1⎦⎤ 
位移矩阵好理解,生成一个沿相机反方向移动的矩阵即可
⎣⎡100001000010−Px−Py−Pz1⎦⎤ 重点看下坐标的旋转矩阵
⎣⎡RxUxDx0RyUyDy0RzUzDz00001⎦⎤ 它实际上是相机旋转矩阵的逆矩阵,即对将相机旋转
⎣⎡RxRyRz0UxUyUz0DxDyDz00001⎦⎤ 补充说明下,上面这个为什么是相机旋转:
空间变换时,变换矩阵的本质就是基向量的变换,原始的基向量可以看成(先不管齐次坐标):
⎣⎡1000010000100001⎦⎤ 
反向作用到物体上,即对上面的矩阵求逆,因为该矩阵是正交单位矩阵,所以逆和转置相等