簡體   English   中英

OpenGL JOGL攝像頭透視

[英]OpenGL JOGL camera perspective

我畫了三個相同尺寸但與相機距離不同的盒子。 當這些盒子遠離相機時,它們的大小應該會減小。 我如何實現這種距離的幻覺。

//這些是盒子的三個平面

  // 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);

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

而不是打電話

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。

聯機幫助頁

fovy:指定y方向的視角范圍(以度為單位)。

aspect:指定確定x方向視圖的寬高比。 縱橫比是x(寬度)與y(高度)的比率。

zNear:指定從查看器到近剪裁平面的距離(始終為正)。

zFar:指定從查看器到遠剪裁平面的距離(始終為正)。

GLU課程位於此處

import javax.media.opengl.glu.GLU

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM