java JOGL移动相机
我在JOGL中构建了一些东西,我希望通过使用键盘或鼠标使相机移动,这其实并不重要,只要相机可以围绕对象平移,并可能进行放大和缩小。如果使用键盘/鼠标很困难,那么我也不介意在应用程序中使用一些按钮,例如上、下、左、右箭头,以及用于缩放的加减按钮,但基本上是最简单的。 我正在制作一种类似乐高的东西,但事实证明,如果不能移动相机,这是非常困难的
你可以在下面搜索框中键入要查询的问题!
我在JOGL中构建了一些东西,我希望通过使用键盘或鼠标使相机移动,这其实并不重要,只要相机可以围绕对象平移,并可能进行放大和缩小。如果使用键盘/鼠标很困难,那么我也不介意在应用程序中使用一些按钮,例如上、下、左、右箭头,以及用于缩放的加减按钮,但基本上是最简单的。 我正在制作一种类似乐高的东西,但事实证明,如果不能移动相机,这是非常困难的
# 1 楼答案
要移动“相机”,需要在渲染函数的开头应用glTranslate3f()变换。如果你的相机的位置是
那你应该用
这将抵消该向量绘制的所有内容
为了使用键盘实现这一点,您需要使用KeyListener实现并定义接口指定的函数
确保将这个实现类注册为GLJPanel(或任何您正在使用的)的KeyListener。然后,在按键的内部(…)功能,检查按下哪个键,并增加相机的相应坐标
如果你真的想让鼠标让你四处看看,你可以通过创建一个MouseMotionListener并注册它来做类似的事情。根据您所寻找的鼠标行为类型,需要进行的OpenGL转换可能会有所不同。如果你只是想要一些简单的东西,让你可以环顾四周,你可能可以通过跟踪鼠标在x和y方向的运动,并允许它修改一些偏移角度。沿x方向移动鼠标会绕y轴旋转。y方向的运动绕x轴旋转。作为OpenGL调用,与glTranslate3f()一样,可以使用glRotatef()绕每个轴旋转
同样,这只是一个快速简单的解决方案。它不会很漂亮,但会管用的。如果你想实现一些更有趣的东西,你可以研究计算任意轴旋转矩阵
http://inside.mines.edu/~gmurray/ArbitraryAxisRotation/
(关于这个话题的众多资源之一)