gpt4 book ai didi

c++ - C++ 中的 FPS 相机可能使用 glm :lookat

转载 作者:太空宇宙 更新时间:2023-11-04 11:28:53 25 4
gpt4 key购买 nike

我有一个相当简单的设置,一个位于 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:lookat 的束缚,只是当我偶然发现它时,我就像“嘿!正是我正在寻找的东西”,它似乎是一个干净简单的解决方案。也许有人可以阐明这一点并为我指明正确的方向或教程。

最佳答案

似乎是我的一个矩阵颠倒了,导致了这个问题。上面提到的教程非常有帮助。因此,如果有人偶然发现这样的问题,这可能是一个简单的数学问题,而 glm::lookAt 确实可以满足我的所有需求。

关于c++ - C++ 中的 FPS 相机可能使用 glm :lookat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25589615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com