OpenGL / C ++以任何方式在相机朝向的方向上移动对象?

时间:2014-01-03 15:17:07

标签: c++ opengl camera

我正在尝试为大学项目制作游泳池/台球的3D游戏。我不是一个优秀的程序员,所以我很挣扎。

目前我已经设置了一个基本的桌子,并且所有球都已就位。相机位于白色球后面(有点像俯视桌子的第一人称视角),可以使用键盘围绕白色球(始终看着它)旋转。它有点像瞄准系统,但我遇到的问题是我需要球朝着相机朝向的方向移动(用户瞄准球的位置)。我只知道如何在x,y或z方向上平移球,但不知道如何指定相机面向的方向。

1 个答案:

答案 0 :(得分:1)

我建议你刷一下坐标空间。

如果你想在“相机的方向”移动一些东西,你通常会在相机/眼睛/视野中移动Z单位(这些都是同一个东西的同义词)。由于这是OpenGL,因此设置视图空间,使 -z 方向的移动向前移动, + z 向后移动。你应该有必要的矩阵来转换视图和视图空间,你只需要知道坐标空间转换如何工作来完成这个难题。

话虽如此,你应该能够看到像this这样的东西,并更好地了解发生了什么。还有很多其他的解释,但我 真的 就像它包含在投影到图像平面上的场景的颜色图一样;)

我想指出,答案中对变换的描述在概念上是倒退的。你从对象空间中的点开始,然后在投影后逐渐进入窗口空间。