【发布时间】:2018-01-08 05:03:22
【问题描述】:
我已经工作了几个星期来让我的 glm 相机旋转,但无济于事。我尝试了很多不同的方法。第一个是我用过的最好的相机。如果有人可以向我解释我哪里出错了,以及如何解决它,谢谢!
1 - 问题 - 如果我越过我的肩膀,也就是向左 90 度看,然后尝试向上看,它不会。
void addRotation(const glm::vec3 rot) {
_for = glm::rotate(_for, rot.x, glm::vec3(0,1,0));
_for = glm::rotate(_for, rot.y, glm::vec3(1,0,0));
}
_for 是vec3 在我正在寻找的方向。
glm::mat4 getViewProj() { return proj * lookAt(_pos, _pos + _for, _up); }
proj 定义为
proj = glm::perspective(fov, aspect, 0.01f, 100.0f);
-
这段代码并没有真正起作用,但我还是会包含它。
void addRotation(const glm::vec3 rot) { glm::mat4 rx = glm::rotate(glm::mat4(1.0f), rot.x, glm::vec3(0,1,0)); glm::mat4 ry = glm::rotate(glm::mat4(1.0f), rot.y, glm::vec3(1,0,0)); _for = rx * ry; //_for was a mat4, everything else was the same }
如果在第一种方法上尝试过 +=,但我只是数学错误,因为小数点基本上是无穷大(尽管如果我添加一个以 0 结尾的常数,它会解决这个问题)。
如果有人可以提供帮助,将不胜感激。提前谢谢!
【问题讨论】:
-
您使用的是什么版本的 OpenGL,您正在使用着色器吗?
-
核心 3 版本。
-
请注意
glm标签指的是广义线性模型 - 请改用glm-math(已编辑)
标签: c++ camera rotation perspective glm-math