环绕摄影机(C++,GLM)
Orbit camera (C++, GLM)
我正在尝试为OpenGL应用程序编写轨道相机(基于glm::quat)。我有几个问题:
-
С我可以从RotationMatrix+相机的位置制作ViewMatrix吗?
camera_quat=glm::quat(glm:;vec3(tmp_ppitch,tmp_yaw,0))*camera_quart;
float pitch = camera_quat.pitch(); float yaw = camera_quat.yaw(); glm::mat4 rotate = glm::mat4_cast(camera_quat); glm::vec3 view_direction(cos(yaw) * cos(pitch), sin(pitch), -sin(yaw) * cos(pitch)); camera_position = target - view_direction * radius; glm::mat4 translate = glm::translate(camera_position); glm::mat4 view_matrix = **???**;
-
这行正确吗?:
glm::vec3 view_direction(cos(yaw) * cos(pitch), sin(pitch), -sin(yaw) * cos(pitch));
附言:对不起,如果我的英语不好。这不是我的母语,我是俄罗斯人。我希望你能帮助我。提前谢谢你!
如果将translate
矩阵更改为
glm::mat4 translate = glm::translate(-camera_position);
,它应该是简单的
glm::mat4 view_matrix = rotation * translation;
然而,有一个更容易的方法去那里。你基本上想做的是:将相机移动到目标,在那里旋转相机,再向后移动一点。这可以用矩阵形式表示(注意,视图矩阵是相机的逆模型变换):
view_matrix = glm::translate(0, 0, -radius) * rotate * glm::translate(-target);
相关文章:
- 了解 GLM- openGL 中的相机转换
- OpenGl glm rotate
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 发布旋转矩阵(openGL/glm)
- 如何在 glRotatef 中使用 glm::mat4
- OpenGL 转换无法使用 GLM 矩阵
- 将 glm.mat4 从 Python 传回 C++ (glm::mat4)
- OpenGL GLM 矩阵/向量未正确初始化
- 通过零参数构造函数创建的 glm::mat4 应该包含哪些值?
- 在OpenGL(GLM/C++)中使用四元数旋转时出现问题
- 将2个欧拉角与GLM相结合的问题
- GLM中的Java Matrix4.transform等价物
- 在 X 轴上移动摄像机 glm::lookat()
- GLM 角度轴错了?
- 给定方向和位置如何使用 GLM 计算旋转矩阵
- 带有"up-"和"center-vec3"参数的glm::rotate()的有效替代方案?
- GlM(OpenGl Mathematics)库阻止M_PI和其他定义的常量工作
- 尝试在构造函数中的"glm::cross"处初始化我的类段错误
- OpenGL/GLFW/GLM-键盘输入无反应
- GLM超载操作员用于地图不起作用