我有一个透视相机,具有Obs和VRP以及Up向量。
我想实现围绕自己转动,就像在场景内观察者一样。我已经实现了前进和后退,因为只需将相同数量添加到Obs和VRP的z坐标即可(两者都是vec3)。
当我尝试实现旋转时,问题出现了,是否有任何办法可以通过矩阵乘积来实现?我尝试了以下内容:
x = R * cos angle
z = R * sin angle
其中R是向量(VRP - Obs)的大小,但它不起作用。
编辑:我在这里应用视图和投影矩阵:
void MyGLWidget::projTransform(){
//fov window, ra window (anchura / altura), near, far
glm::mat4 Proj = glm::perspective(M_PI/1.3, 1.0, 0.2, 3000.0);
glUniformMatrix4fv(projLoc,1,GL_FALSE, &Proj[0][0]);
}
void MyGLWidget::viewTransform(){
//lookAt(OBS,VRP;UP)
//glm::mat4 View = glm::lookAt(glm::vec3(0,0,10),glm::vec3(0,0,-2), glm::vec3(0,1,0));
glm::mat4 View = glm::lookAt(glm::vec3(xObs,yObs,zObs),glm::vec3(xVRP,yVRP,zVRP), glm::vec3(0,1,0));
glUniformMatrix4fv(viewLoc,1,GL_FALSE, &View[0][0]);
}