2016-07-06 2 views
1

깊이 이미지 스캔을보고 싶지만 내 카메라 설정에서 스캔을 볼 수없는 코드를 디버깅하고 있습니다. 따라서 나는 카메라 설정으로 놀고있다. 나는 (30,120,800)에서 거대한 포인트를 만들고 gluLookAt를 사용하여 그것을 볼 수 있습니다. glFrustum에 대한 설정은 무엇입니까 (왼쪽, 오른쪽, 아래, 위쪽, 가까운, 멀리)? 내 설정을 사용하면 지점이 정확히 가운데에 있어야하지만 볼 수는 없습니다. 세부에서glFrustum()에 대한 설명이 gluLookAt()와 비교

void onDisplay() 
{ 
glEnable(GL_NORMALIZE); 
glEnable(GL_DEPTH_TEST); 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
glClearColor(1.0f, 1.0f, 1.0f, 1.0f); 
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
glDisable(GL_CULL_FACE); 
glPushMatrix(); 
glPointSize(1111111116.0); 
glColor3f(0.25f, 0.907, 0.731f); 
glLoadIdentity(); 
// Set the camera 
//gluLookAt( 30.f, 120.0f, 800.f, 30.f, 120.0f, 800.f, 0.0f, 1.f, 0.0f); //works 
glFrustum(28, 32,  118,  122, 798,  802); 
glBegin(GL_POINTS); 


glVertex3f(30, 120, 800); //30,120,800 

glEnd(); 

glPopMatrix(); 
//glFinish(); 
//glutSwapBuffers(); 
glutSwapBuffers(); 
glutPostRedisplay(); 
} 

int main(int argc, char **argv) 
{ 
// initialize GLUT 
glutInitWindowSize(800, 800); 

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH); 

glutInit(&argc, argv); 

glutCreateWindow("HeadPoseDemo"); 


glutKeyboardFunc (processSpecialKeys); 

glutDisplayFunc(onDisplay); 
glutMainLoop(); 
return 0; 
} 
+3

카메라를 사용하려면 'glFrustum'은 카메라의 렌즈 (광각, 망원, 피사계 심도)를 나타내지 만 카메라가 가리키는 위치는 밝히지 않습니다. 'gluLookAt'는 카메라를 가리킨다. –

+1

OpenGL 튜토리얼에서 : 기본적으로 카메라는 원점에 위치하고 음의 z 축을 가리키며 위쪽 벡터가 (0, 1, 0)입니다. 그래서 http://www.glprogramming.com/red/chapter03.html. gluLook을 사용하면 카메라를 한 지점으로 이동하고 방향을 설정하면 위로 벡터가 가리키는 위치를 설정할 수 있습니다. 절두체는 카메라가 어느 정도까지 연장되는지를 정의합니다. "그 위치에서 얼마나 가까이서 볼 수 있느냐" –

+0

고마워요 @ 리차드, 'gluLookAt (30.f, 120.0f, 800.f, 30.f, 120.0f, 800.f, 0.0f, 1.f, 0.0f);하지만'gluLookAt (0.f, 0.0f, 0.f, 30.f, 120.0f, 800.f, 0.0f, 1.f, 0.0f);'. 내 문제는 점 구름을보고 더 멀리 떨어져 있어야한다는 것입니다. – TobSta

답변

2

악마의는 : 문서에 그들이 nearVal, farVal

이에 가깝고 먼 깊이 클리핑면을 거리를 지정 말하는 방법합니다. 두 거리 모두 양수 여야합니다. 그들은 다른 매개 변수에 사용하는 문구는 다릅니다

:

왼쪽, 오른쪽

왼쪽과 오른쪽 수직 클리핑 평면 좌표를 지정합니다.

당신이 알고 있어야 할 것은 당신이 음의 z 축을 바라보고 있다는 것입니다. 그래서 내 생각 엔 당신이 glVertex3f(30.f, 120.f, -800.f);으로 바꿀 때 당신의 요점을 보게 될 것입니다.

관련 문제