c++中的FPS相机可能使用glm:lookat
FPS camera in c++ maybe using glm:lookat
我有一个相当简单的设置,一个0,0,0的模型,带有:
projection = glm::perspective(fov, aspectRatio, near, far);
model = glm::mat4(1.0);
我想要一个灵活的相机,从我读到的最好的描述是FPS相机。
现在我有:
glm::mat4 CameraMatrix = glm::lookAt(
glm::vec3(cameraPosition.X,cameraPosition.Y,cameraPosition.Z), // camera, in world space
glm::vec3(cameraTarget.X,cameraTarget.Y,cameraTarget.Z), // direction vector eye + Dir
glm::vec3(upVector.X,upVector.Y,upVector.Z)
);
正如这里所描述的:http://www.opengl-tutorial.org/beginners-tutorials/tutorial-6-keyboard-and-mouse/
这很好,除了一件事,鼠标上下可以按预期操作,但鼠标左右旋转会使模型围绕相机位置旋转,而不是相机围绕模型旋转?我做错什么了吗?
我的印象是,这至少需要一些额外的旋转和翻译才能使其正确工作。如果是这样的话,我想知道为什么这件事似乎没有被提及。当我在谷歌上搜索时,如果提到"FPS相机",也有很多教程使用lookat。这让我有点困惑。
现在,关于glm::lookat的例子相当糟糕,我读了一些关于gluLookAt的东西,在其中我听到一些声音,至少gluLookAt不能解决这样的任务,这同样适用于glm:?lookat吗?如果是这样,正确的做法是什么?我真的不受glm的约束:不管怎么看,只是当我偶然发现它时,我想"嘿!这正是我想要的",这似乎是一个干净简单的解决方案。也许有人可以阐明这一点,并为我指明正确的方向或教程。
似乎是我的一个矩阵颠倒了,导致了这个问题。上面提到的教程非常有助于找到答案。因此,如果有人偶然发现这样一个问题,它可能是一道简单的数学题,实际上glm::lookAt就满足了我的所有需求。
相关文章:
- 了解 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 :: perspective()和glm :: lookat()一起工作
- 我对GLM lookAt函数的理解不一致
- 如何缩放使用glm::lookat()获得的矩阵
- glm::lookAt 垂直相机翻转时 z <= 0
- c++中的FPS相机可能使用glm:lookat
- glm-lookAt和产生奇怪行为的矩阵变换
- LookAt (glm)返回错误的翻译z值