2014-04-22 2 views
0

각기 다른 크기이지만 카메라와 다른 거리를 가진 상자 3 개를 그렸습니다. 이 상자들은 카메라에서 멀리 떨어지면서 크기가 줄어야한다고 인식해야합니다. 이 거리의 환영을 어떻게 달성 할 수 있을까요?OpenGL JOGL 카메라 원근감

는 // 이들은 상자

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

답변

2

직교 투영 대신 원근 투영을 사용해야합니다. 대신 당신은 내가 당신의 프로그램에 대한 정확하지 않을 수 있습니다 제공

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

인수로 그 선을 대체 할 수 있어야한다, 그래서 당신이 그들을 조정해야 할 수도 있습니다

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

를 호출

.

인수는 fovy, aspect, zNear 및 zFar 순서입니다. manpage 가입일

:

fovy : 는 Y 방향의 각도 시야각을 지정한다.

종횡비 : x 방향으로보기 필드 을 결정하는 종횡비를 지정합니다. 종횡비는 x (너비)와 y (높이)의 비율입니다.

zNear : 뷰어에서 가까운 클리핑까지의 거리를 지정합니다. (항상 양수) 평면입니다.

zFar : 뷰어에서 멀리 자르기 평면까지의 거리를 지정합니다 (항상 양수). .

GLU 클래스는

import javax.media.opengl.glu.GLU 
여기 있습니다