我正在学习一些OpenGL游戏编程,我陷入了如何实现,所以摄像机遵循鼠标指针。就像在fps游戏中你想要看你的鼠标所指向的那样,但是在我移动的时候我找不到一个很好的解决方案。我正在考虑为移动保存一个矩阵,比如踩踏和扫射,同时使用四元数来处理旋转。然后将四元数设为旋转矩阵,加载模型视图矩阵的标识,并用两个矩阵计算此矩阵。
这有一些问题,比如我们首先应该在乘法中使用哪个矩阵,而代码将是丑陋的。
所以我想知道是否有人有一个很好的解决方案来解决这个问题,所以我不必先找出使用哪个矩阵,哪个矩阵可以提供更清晰的代码。
答案 0 :(得分:5)
将相机的视图细节存储为位置矢量,视图矢量和向上矢量(想象用拇指伸出指向:手指是视图矢量,拇指是向上矢量)。保持这些矢量标准化,彼此成90度。您应该能够看到这三个矢量足以表示任何摄像机位置和方向。
您可以使用这些矢量将世界坐标转换为相机坐标:
(我可能在那里有一些错误的方式)。
您可以在用户移动鼠标时变换这些矢量:
答案 1 :(得分:0)
我真的没有针对您的问题的解决方案,但我知道开源3D引擎Irrlicht有一个FPS相机,可以完全满足您的需求,而且通常它有一个很好的-documented source。
您可以尝试查看如何在Irrlicht中实现FPS相机,或者甚至可以将Irrlicht本身用于您的项目;当我在大学时,我用它来做我的几个,它总是像魅力一样:)