【发布时间】:2016-05-26 21:37:08
【问题描述】:
我已经实现的内容
我已经实现了一个应用程序,它能够在屏幕上呈现一个多边形列表,具有特定的静态相机设置(位置、查看和向上矢量),所有这些都在没有 OpenGL 的普通 Java AWT 中。
我首先应用模型视图矩阵,然后是投影到二维矩阵,然后是视口矩阵。
我还在世界上实现了一些基本的变换矩阵,例如平移、X/Y/Z 轴围绕lookAt 点的旋转以及围绕lookAt 点的缩放。
我现在想要实现的目标
我希望能够在世界上“移动”。 具体来说,我想用键盘箭头向前、向后、向左和向右导航,并能够用鼠标查看不同的点。就像在真实游戏中一样。
我猜这是通过每次更改相机参数并再次渲染世界来完成的。
就这么简单吗?
在世界中移动只是将 x,y 值添加到相机位置并查看一个点?
另外,移动鼠标是否只是将x,y添加到某个点?
在任何情况下我都必须触摸向上向量吗?
信息丰富的答案以及其他相关链接也会很有帮助。
【问题讨论】:
-
通常你只是围绕你的位置移动世界。我见过的几乎所有 opengl 教程都讨论了这个话题。无论语言如何,该方法都是相似的。
-
如果您使用的是lookAt,那么“移动”会同时改变相机位置和注视点(当然,除非您想一直注视同一个点)。转身以一种有点复杂的方式改变了观察点。您可能不想使用 lookAt 进行转向。
-
真实游戏最有可能使用平移和旋转操作来计算视图矩阵。不看。 (但这取决于游戏,我假设这里是 FPS,但如果你想到神话时代或塞尔达之类的东西,它很可能会使用lookAt)
-
所以你想告诉我移动世界更可取吗?在移动和转身中,我只移动世界?