【问题标题】:explanation of glFrustum() compared to gluLookAt()glFrustum() 与 gluLookAt() 相比的解释
【发布时间】:2016-07-06 11:26:15
【问题描述】:

我正在调试一个代码,我想在其中查看深度图像的扫描,但我的相机设置不允许我看到扫描。因此,我正在玩相机设置。我在 (30,120,800) 创建了一个大点,我可以使用 gluLookAt 看到它。 glFrustum(左、右、下、上、近、远)的相应设置是什么?使用我的设置,该点应该正好位于中心,但我看不到它。

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;
}

【问题讨论】:

  • 使用相机类比glFrustum 描述了相机上的镜头(广角、长焦、景深),但没有说明相机指向的位置。 gluLookAt 为你对准相机。
  • 来自 opengl 教程:默认情况下,相机位于原点,指向负 z 轴,向上矢量为 (0, 1, 0)。所以在glprogramming.com/red/chapter03.html。使用 gluLookAt 将相机移动到一个点,设置它的方向并设置向上矢量指向的位置。截锥体定义了您的相机可以查看的范围。 "从它的位置看它有多近和多远"
  • 谢谢@Richard,你能给我解释一下为什么我在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 请一次回答一个问题。

标签: c++ opengl glut freeglut


【解决方案1】:

魔鬼在细节中:注意他们在文档中的说法

nearVal, farVal

指定距离近和远深度剪裁平面。两个距离都必须是正数。

这与他们用于其他参数的措辞不同:

左,右

为左右垂直剪切平面指定坐标

您应该知道的是,您正在查看负 z 轴。所以我的猜测是,当您将其更改为 glVertex3f(30.f, 120.f, -800.f); 时,您会明白自己的意思。

【讨论】:

    猜你喜欢
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多