- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 JOGL 中构建一些东西,并且希望通过使用键盘或鼠标来使相机移动,这并不重要,只要相机可以围绕对象平移并可能放大和缩小即可。如果使用键盘/鼠标很困难,那么我也不介意使用应用程序中的某些按钮,例如向上、向下、向左、向右箭头以及用于缩放的加号和减号按钮,但基本上是最简单的。我正在 build 类似乐高的东西,但事实证明,如果无法移动相机,它是相当困难的。
最佳答案
要移动“相机”,您需要在渲染函数的开头应用 glTranslate3f() 转换。如果您的相机位置是
cameraPos = <cx, cy, cz>
那么你应该使用
glTranslate3f( -cx, -cy, -cz );
这将抵消该 vector 绘制的所有内容。
为了使用键盘来实现这一点,您将需要使用 KeyListener 实现并定义接口(interface)指定的函数。
public void keyPressed( KeyEvent ke ){ // put something intelligent here... }
public void keyReleased( KeyEvent ke ){}
public void keyTyped( KeyEvent ke ){}
确保将此实现类注册为 GLJPanel(或您正在使用的任何内容)的 KeyListener。然后,在 keyPressed(...) 函数内,检查按下的是哪个键并增加相机的适当坐标。
如果您想要变得非常奇特并允许鼠标让您环顾四周,您可以通过创建 MouseMotionListener 并注册它来完成类似的操作。发挥作用所需的 OpenGL 转换可能会根据您正在寻找的鼠标行为类型而有所不同。如果您只想要一些简单的东西来让您环顾四周,您可能可以通过跟踪鼠标在 x 和 y 方向上的运动并允许它修改一些偏移角度来摆脱困境。沿 x 方向移动鼠标会绕 y 轴旋转。 y 方向的运动绕 x 轴旋转。作为 OpenGL 调用,与 glTranslate3f() 一样,您可以使用 glRotatef() 绕每个轴旋转。
glRotatef( angleX, 1, 0, 0 ); // to rotate about the x-axis
glRotatef( angleY, 0, 1, 0 ); // to rotate about the y-axis
再说一遍,这只是一个快速简单的解决方案。它不会很漂亮,但会起作用。如果您想实现一些更奇特的东西,您可以考虑计算任意轴旋转矩阵。
http://inside.mines.edu/~gmurray/ArbitraryAxisRotation/
(有关此主题的众多资源之一)
关于java - JOGL - 移动相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14858623/
我一定是愚蠢之类的,但我在网上查看了几个 JOGL 示例,它们在 JOGL 中使用了 GL 接口(interface)的 color3f 方法,但是编译器提示找不到该方法,当我检查时javadoc我确
我从 here 下载了 jogl 2.0 ,文件 jogl-all.jar ,并运行了一个取自 here 的简单代码示例: import java.awt.event.KeyEvent; import
嗨,大家好 我在 JOGL 项目中添加拾取对象时遇到了麻烦。 我知道这可以通过选择缓冲区来完成..但我找不到例子 任何人? 最佳答案 一般来说,正如您可能知道的那样,JOGL 代码直接从您可能在网络上
我找不到有关在 JOGL 中呈现交错顶点数组(不是 VBO)的正确方法的任何信息。具体来说,使用 glVertexAttribPointer() 似乎不允许指定交错数据(FloatBuffer)内的偏
鉴于我从 JOGAMP wiki 获得的这个简单示例,为什么鼠标坐标在 y 方向上偏离 40,在 x 方向上偏离 20?单击屏幕右下角会显示坐标 (620, 440),而不是像我期望的那样 (640,
我正在学习使用 JOGL,在学习本教程时遇到了问题: https://sites.google.com/site/justinscsstuff/jogl-tutorial-1 https://site
我目前正在通过使用 JOGL 库(openGL 的 java 包装器)来探索 opengl,我用它来创建 2d/3d 图形。目前,我对通过“glutBitmapString”方法渲染的文本遇到了一些问
我在我的应用程序中使用 JOGL(OpenGL for Java),我需要一次在屏幕上绘制大量字符串,而我当前的解决方案太慢了。现在,我正在使用 Draw3D 方法使用 TextRenderer 绘制
我在使用 JOGL 时遇到问题。我这里有一本书用 C++ 解释了 OpenGL,但我的任务是用 JOGL 来做。我现在正在处理顶点缓冲区对象,这本书告诉我这一点: glGenBuffers(1, &m
我一直在尝试在独立的 Java 应用程序中使用 JOGL。我已经在 Android 上完成了 OpenGLES 的工作,并且刚刚将我的代码从 Android OpenGL 移植到了这个 Java 应用
我正在使用 JOGL 将 OpenGL SuperBible 演示翻译成 Java。第 12 章之前的所有演示都很顺利,但现在我陷入了阴影贴图。这是我的设置: public class ShadowM
我是 OpenGL 的新手,正在尝试使用 jogl。我可以毫无问题地绘制三角形,但是当我尝试绘制四边形(在许多教程中使用)时,Eclipse 一直告诉我 GL.GL_QUADS 无法解析。 gl.gl
我正在 JOGL 中构建一些东西,并且希望通过使用键盘或鼠标来使相机移动,这并不重要,只要相机可以围绕对象平移并可能放大和缩小即可。如果使用键盘/鼠标很困难,那么我也不介意使用应用程序中的某些按钮,例
我的问题是关于jogl的。我在 Canvas 显示中绘制图像。但我在图像上绘制多边形。我画多边形,但多边形是透明的,而不是颜色的。我可以做吗? gl.glBlendFunc(GL.GL_SRC_AL
我一直在尝试加载一个 bmp 图片以在我的程序中将其用作纹理 我使用了一个 IOStream 类来扩展 DataInputStream 以读取像素在照片中,此代码基于 C++ 的纹理加载器代码: //
在我的项目中,我希望为不同的对象使用一些纹理。 目前我有以下代码: private Texture[] textures = new Texture[1]; private int texture1
我已经使用 JOGL 几天了,现在这已成为一个主要障碍。我无法让形状以正确的 z 顺序绘制,而是按照它们提供给 OpenGL 的顺序绘制。 我花了最后几个小时研究这个问题,一般的解决方案(和我的 re
我正在尝试将 C# 应用程序移植到 Java,目前正在翻译 OpenGL 代码。在 C# 应用程序中使用了 OpenTK,在 Java 应用程序中我选择了 JOGL。当我尝试创建纹理时,程序抛出异常。
我最近才开始使用 JOGL,但我的第一个程序失败了,因为我无法获得 GL4 配置文件。 GLProfile test = GLProfile.get(GLProfile.GL4); 此行失败并显示错误
我正在使用 JOGL 渲染一些模型。我可以实现 KeyListener 接口(interface)并相应地接收击键。但问题是,按键后我无法再次刷新或渲染模型。我可以接收输入,但如何在 JOGL 中每次
我是一名优秀的程序员,十分优秀!