围绕 X 的 Opengl 相机旋转
Opengl Camera rotation around X
正在视觉中处理 opengl 项目 studio.Im 尝试围绕 X 轴和 Y 轴旋转相机。
Thats the math i should use
我遇到了麻烦,因为我使用 glm::lookAt 作为相机位置,它需要 glm::vec3 作为参数。
有人可以解释一下我如何在 opengl 中实现它吗?
PS:我不会用四元数
lookAt 函数应接受三个输入:
vec3 cameraPosition
vec3 cameraLookAt
vec3 cameraUp
根据我以往的经验,如果你想移动相机,首先找到移动的变换矩阵,然后将矩阵应用到这三个向量上,结果将是三个新的vec3,这是你的新输入进入 lookAt 函数。
vec3 newCameraPosition = movementMat4 * cameraPosition
//Same for other two
另一种方法可能是找到您希望相机执行的反向运动并将其应用于整个场景。由于移动相机有点等于将对象移动到反向运动,同时保持相机不动:)
下方相机绕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/,这是一个很好的学习网站!
正在视觉中处理 opengl 项目 studio.Im 尝试围绕 X 轴和 Y 轴旋转相机。 Thats the math i should use
我遇到了麻烦,因为我使用 glm::lookAt 作为相机位置,它需要 glm::vec3 作为参数。 有人可以解释一下我如何在 opengl 中实现它吗?
PS:我不会用四元数
lookAt 函数应接受三个输入:
vec3 cameraPosition
vec3 cameraLookAt
vec3 cameraUp
根据我以往的经验,如果你想移动相机,首先找到移动的变换矩阵,然后将矩阵应用到这三个向量上,结果将是三个新的vec3,这是你的新输入进入 lookAt 函数。
vec3 newCameraPosition = movementMat4 * cameraPosition
//Same for other two
另一种方法可能是找到您希望相机执行的反向运动并将其应用于整个场景。由于移动相机有点等于将对象移动到反向运动,同时保持相机不动:)
下方相机绕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/,这是一个很好的学习网站!