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

标签 c++ opengl camera

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

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

最佳答案

我建议您复习一下坐标空间。

如果您想在“相机方向”上移动某些东西,您通常会在相机/眼睛/ View 空间中移动 Z 单位(这些都是同一事物的同义词)。由于这是 OpenGL, View 空间的设置使得 -z 方向的移动将向前移动,而 +z 将向后移动。您应该拥有必要的矩阵来变换 View 空间内外,您只需要知道坐标空间变换的工作原理即可完成这个难题。

话虽如此,您应该能够查看类似 this 的内容并更好地了解正在发生的事情。还有很多其他解释,但我真的喜欢它包含的投影到图像平面上的场景的彩色图表;)

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

关于c++ - OpenGL/C++ 以任何方式在相机所面对的方向上移动对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20906786/

相关文章:

c - 在 GLUT 中我的显示函数在哪里被调用?

android - 如何在Android上使用Cordova 3.5获取png图片

c++ - 如何使用 Boost 库实现 SortedVector API?

c++ - 如何使用 C++ 11 使函数在所需的时间段执行

c++ - 如何上下转换C++智能指针

c++ - 如何在 QTableWidget : Qt5 中鼠标悬停时突出显示整行

opengl - 可以只在 opengl 中移动相机而不重绘场景吗?

java - GL_QUADS 以我不希望的方式渲染

c - 如何使用 Plain C 在 Linux 上使用 GigE 相机获取图像

javascript - 打开手机摄像头从网页扫描条码