【问题标题】:OpenGL Near Clip Plane裁剪平面附近的 OpenGL
【发布时间】:2012-10-08 11:30:06
【问题描述】:

我正在为计算机图形课程制作交互式场景。我已经设置了一个程序来生成颜色立方体,然后让我用键盘旋转它们。但是它们被我相机的近剪辑平面切开:

我尝试使用 gluPerspective,但 OpenGL 文档没有给出任何使用示例。我发现它被用于在线示例程序中,并半复制了他们的代码:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective( 65, 1, 0.01, 100 );
glMatrixMode(GL_MODELVIEW);

有什么想法吗?

更新: 正如下面的 cmets 中所建议的,我尝试使用 glFrustum,代码如下:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum( -0.5, 0.5, -0.5, 0.5, 0.1, 100 );
glMatrixMode(GL_MODELVIEW);

同样,没有区别。我没有正确推送结果矩阵吗?

【问题讨论】:

  • 您正在学习涉及透视投影的计算图形课程,但他们没有谈到近裁剪平面?
  • 也许你需要将你的对象移动到离相机更远一点的地方。现在看来他们离0.0更近了
  • 按照克罗姆所说的去做或调整你的视锥体
  • 我将立方体从相机移开一整个单位,现在当它们旋转时,它们会被近端和远端剪裁平面剪裁。我会看看视锥体
  • 你应该发布你的渲染代码,如果你可以这样做而不被认为是在你的班级作弊。如果您对 gluPerspective 的调用与您使用 glFrustum 时没有区别,那么可能还有其他问题。如果两个平面都在剪裁您的对象,那么它们相对于您的剪裁空间一定很大。您的远平面距离眼睛 100 个单位。立方体有多大?

标签: opengl 3d clipping glu


【解决方案1】:

也许您需要将对象移离相机稍远一点。现在似乎它们比 0.0 更接近。

考虑到您的更新“我将立方体从相机移开一整个单位,现在当它们旋转时,它们会被近端和远端剪裁平面剪裁”您的立方体可能对于您的剪裁深度来说太大(100 - 0.1)。将立方体从相机移开 50,并将剪裁平面设置为 0.1 .. 1000,以确保一切都合适。

如果问题仍然存在,我们可能需要查看您的矩阵代码。

【讨论】:

  • 我的立方体是从以下点数组构造的:point4 vertices[8] = { point4( -0.5, -0.5, 0.5, 1.0 ), point4( -0.5, 0.5, 0.5, 1.0 ), point4( 0.5, 0.5, 0.5, 1.0 ), point4( 0.5, -0.5, 0.5, 1.0 ), point4( -0.5, -0.5, -0.5, 1.0 ), point4( -0.5, 0.5, -0.5, 1.0 ), point4( 0.5, 0.5, -0.5, 1.0 ), point4( 0.5, -0.5, -0.5, 1.0 ) }; 它们分别位于 (-0.75, 0, 0) 和 (0.75, 0, 0),(-0.75, 0 , 1) 和 (0.75, 0, 1) 在我将它们移离相机更远之后
  • 你知道当一个立方体被定位在 -1 并旋转 45 度时,它的边缘距离它的中心 1.41 度并且应该被剪裁?
  • 我知道图片的一部分将在镜头外,应该被剪掉,但它是如此明显,你可以看到立方体的内部。更不用说远剪辑平面也在切断东西。如果我想有一个真实的场景,它不会看起来很好。我在调用 glFrustum 或 gluPerspective 时所做的任何更改似乎都没有改变任何东西,所以我认为我没有正确使用它们。你如何使用它们?
猜你喜欢
  • 2021-10-25
  • 2014-04-11
  • 2012-01-21
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 2011-11-24
  • 2013-02-17
  • 2011-05-27
相关资源
最近更新 更多