[英]Opengl Camera rotation around X
在 Visual Studio 中处理 opengl 项目。我试图围绕 X 和 Y 轴旋转相机。 这就是我应该使用的数学
我遇到了麻烦,因为我将 glm::lookAt 用于相机 position 并且它需要 glm::vec3 作为 arguments。 有人可以解释我如何在 opengl 中实现这个吗?
PS:我不能使用四元数
外观 function 应采用三个输入:
vec3 cameraPosition
vec3 cameraLookAt
vec3 cameraUp
根据我过去的经验,如果要移动相机,首先找到移动的变换矩阵,然后将矩阵应用到这三个向量上,结果将是三个新的 vec3,它们是你在lookAt function 中的新输入。
vec3 newCameraPosition = movementMat4 * cameraPosition
//Same for other two
另一种方法可能是找到您希望相机执行的反向移动并将其应用于整个场景。 由于移动相机相当于将 object 移动到反向移动,同时保持相机不动:)
摄像机下方围绕 z 轴旋转。
const float radius = 10.0f;
float camX = sin(time) * radius;
float camZ = cos(time) * radius;
glm::vec3 cameraPos = glm::vec3(camX, 0.0, camZ);
glm::vec3 objectPos = glm::vec3(0.0, 0.0, 0.0);
glm::vec3 up = glm::vec3(0.0, 1.0, 0.0);
glm::mat4 view = glm::lookAt(cameraPos, objectPos, up);
查看https://learnopengl.com/ ,这是一个学习的好网站!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.