OpenGL教程:香港大学第十一章 视图与投影

需积分: 3 3 下载量 138 浏览量 更新于2024-08-02 收藏 778KB PPT 举报
"香港大学 OpenGL课件——EN 第十章主要涵盖了3D视图的相关概念和技术,包括视图转换、正交投影、透视投影、视口设置等关键知识点。" 在3D图形学中,视图处理是将三维模型正确显示在二维屏幕上的核心环节。第十章讲解了在OpenGL环境下如何实现这一过程。首先,章节提到了3D视图问题,指出了3D场景到2D屏幕映射的复杂性,因为不同的视角会产生不同的视觉效果,如相机视图、蚂蚁视图、鸟瞰视图等。 视图转换是通过`gluLookAt()`函数来实现的,它允许我们定义相机的位置(ex, ey, ez)、观察的目标点(cx, cy, cz)以及上向量(qx, qy, qz),从而确定了观察的方向和相机的朝向。这四个因素共同决定了我们所看到的3D场景。 正交投影(Orthogonal projection)常用于绘制图表或需要精确比例的场景,因为它能保持物体的形状不变。在OpenGL中,可以通过调用`glMatrixMode(GL_PROJECTION)`来切换到投影矩阵模式,然后使用`glOrtho(…)`或`gluOrtho2D(…)`设定一个矩形的视口,以创建正交投影。这两个函数规定了视口的左、右、下、上边界和近、远裁剪平面,以确定可视区域。 透视投影(Perspective projection)则模拟人眼看到的真实世界的效果,物体离得越远,看起来就越小。在OpenGL中,`gluPerspective(…)`和`glFrustum(…)`用于创建透视投影。`gluPerspective()`接受相机的视场角、宽高比、近裁剪平面和远裁剪平面作为参数,而`glFrustum()`允许更灵活地定义裁剪六面体的形状。 最后,视口规格(Viewport specification)通过`glViewport(…)`函数来设置,它可以调整OpenGL渲染的输出区域,将渲染结果映射到屏幕的特定部分。视口尺寸通常与窗口大小相关,但可以独立调整以适应不同的显示需求。 香港大学的OpenGL课件第十章深入探讨了在3D环境中如何设置视图、进行投影变换以及控制最终在2D屏幕上显示的内容。这些知识对于理解和创建复杂的3D图形应用至关重要。