【发布时间】:2011-04-05 00:32:23
【问题描述】:
我正在尝试使用 FPS 风格的相机,同时遵循 openGL SuperBible 书中的示例。
一切都很顺利,直到我遇到了你最终会发生滚动的问题,当你真的只想要俯仰和偏航时。
这个问题基本上是在问同样的问题,但我希望有人能够对实现更详细一点,最好是有 SuperBible GLTools 框架的经验。
我已经尝试实现必须编译的GluLookAt code,但是我在复制所需的函数时出错了,或者在使用它时传入了错误的参数。
我想我觉得它有点令人困惑,因为 SuperBible 代码抽象了相机的工作原理,所以我发现很难正确实现它。在测试我当前的版本时,我正在传递这样的参数
M3DMatrix44f mCamera;
cameraFrame.GetCameraMatrix(mCamera); //returns the matrix of the CameraFrame.
M3DVector3f up = { 0.0f, 1.0f, 0.0f };
M3DVector3f look = { xHeading,yHeading,0.0f };
//xHeading & yHeading ranges from -1 to 1 based on mouse movement, is this correct?
我应该如何管理和传递外观变量?目前看起来外观值保持在同一个地方,所以如果我向后移动,我最终会在场景中旋转。
glhLookAtf2(mCamera, mCamera, look, up);
我觉得我必须更好地管理我的视线方向,可能还有我的相机位置。看起来位置似乎没有改变,这似乎很奇怪。
任何人都可以提供帮助,或者指出一个可靠的教程路径的方向吗?我试图避免做任何被弃用的事情,但在这一点上,我真的很高兴能让一些东西正常工作。
【问题讨论】:
-
另外,当我使用 wasd 键移动场景时,预设为 {1.0f,1.0f,1.0f} 他们的相机不会一直聚焦在场景的中间.但是,当我将变量从鼠标看起来 -1 传递到 1 时,相机确实会移动,只是不正确。如果我修复了外观位置,相机不应该一直聚焦在中心吗?