【问题标题】:OpenGL JOGL camera perspectiveOpenGL JOGL 摄像机透视
【发布时间】:2014-04-22 15:29:17
【问题描述】:

我绘制了三个大小相同但与相机距离不同的框。这些盒子应该被认为随着它们远离相机而减小。我如何实现这种距离错觉。

//这是盒子的三个平面

  // first plane
  gl.glVertex3i(0, 30, 30);
  gl.glVertex3i(10, 30, 30);
  gl.glVertex3i(10, 20, 30);
  gl.glVertex3i(0, 20, 30);

  //2nd Plane
  gl.glVertex3i(20, 20, 37);
  gl.glVertex3i(30, 20, 37);
  gl.glVertex3i(30, 10, 37);
  gl.glVertex3i(20, 10, 37);

  //3rd Plane
  gl.glVertex3i(40, 10, 45);
  gl.glVertex3i(50, 10, 45);
  gl.glVertex3i(50, 0, 45);
  gl.glVertex3i(40, 0, 45);

//这是眼睛向上的代码。

gl.glMatrixMode(GL2.GL_MODELVIEW);
gl.glLoadIdentity();
glu.gluLookAt(
              35, 15,  10, 
              25, 15, 30, 
      0,  1,  0   
              );

gl.glMatrixMode(GL2.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrtho(-50.0, 50.0, -30.0, 30.0, 0.0, 60.0);

【问题讨论】:

    标签: java opengl graphics jogl


    【解决方案1】:

    您需要使用透视投影,而不是正交投影。

    而不是调用

    gl.glOrtho(-50.0, 50.0, -30.0, 30.0, 0.0, 60.0);
    

    你应该可以用

    替换那行
    GLU glu = new GLU();
    glu.gluPerspective(60.0, 4.0/3.0, 1.0, 100.0);
    

    我提供的参数可能不适合您的程序,因此您可能需要调整它们。

    参数依次为:fovy、aspect、zNear 和 zFar。

    来自manpage

    fovy: 指定视野角度,以度为单位,在 y 方向。

    aspect: 指定决定视野的纵横比 在 x 方向。纵横比是 x(宽度)与 y 的比率 (高度)。

    zNear: 指定观察者到近端剪辑的距离 平面(总是积极的)。

    zFar: 指定观察者到远剪裁平面的距离 (总是积极的)。

    GLU 类位于此处

    import javax.media.opengl.glu.GLU
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多