复习题

19
1 1 1. Siggraph 1. Siggraph () () a. a. 是是是是是是 是是是是是是 b. b. 是是是是是是是是是是 是是是是是是是是是是 c. c. 是是是是是是 是是是是是是 d. d. 是是是是是是是是 是是是是是是是是 2. 2. 是是是是是是是是是是是是是是 是是是是是是是是是是是是是是 3. 3. 是是是是是是是是是是是是 是是是是是是是是是是是是 4. 4. 是是是是 是是是是 1024×1024 1024×1024 是是是是是是是是是是是是是是是 是是是是是是是是是是是是是是是 24 24 是是是是是是是是A. 512KB A. 512KB B. 1MB B. 1MB C. 2MB C. 2MB D. 3MB ; D. 3MB ; 是是是 是是是

Upload: pabla

Post on 06-Jan-2016

46 views

Category:

Documents


6 download

DESCRIPTION

复习题. 1. Siggraph 是() a. 图形学的杂志 b. 图形学的组织及其会议 c. 图形学的标准 d. 图形学的某个算法 2. 列举三个以上图形学的应用领域 3. 计算机图形学的三大主题是 、 和 。 4. 分辨率为 1024×1024 的显示器需要多少字节位平面数为 24 的帧缓存? A. 512KB ; B. 1MB ; C. 2MB ; D. 3MB ;. 第 0 章 导论. Windows 环境下的图形生成: OpenGL. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 复习题

11

1. Siggraph1. Siggraph 是() 是() a. a. 图形学的杂志图形学的杂志 b. b. 图形学的组织及其会议图形学的组织及其会议c. c. 图形学的标准图形学的标准 d. d. 图形学的某个算法 图形学的某个算法

2. 2. 列举三个以上图形学的应用领域列举三个以上图形学的应用领域3. 3. 计算机图形学的三大主题是计算机图形学的三大主题是 、 、 和 和 。。4.4. 分辨率为 分辨率为 1024×1024 1024×1024 的显示器需要多少字节位的显示器需要多少字节位

平面数为 平面数为 24 24 的帧缓存?的帧缓存? A. 512KBA. 512KB ; ; B. 1MBB. 1MB ; ; C. 2MBC. 2MB ; ; D. 3D. 3MB ;MB ;

复习题复习题

Page 2: 复习题

22

第第 00 章 导论章 导论

Page 3: 复习题

33

WindowsWindows 环境下的图形生成:环境下的图形生成: OpenGOpenGLL

OpenGLOpenGL 是是 SGISGI 公司开发的一个公司开发的一个跨平台跨平台的开放的开放式图形编程工具,用户可以很方便的利用它开式图形编程工具,用户可以很方便的利用它开发出有多种特殊视觉效果的三维图形发出有多种特殊视觉效果的三维图形

作为图形硬件的作为图形硬件的软件接口软件接口,, OpenGLOpenGL 集成了所集成了所有有曲面造型、图形变换、光照、材质、纹理、曲面造型、图形变换、光照、材质、纹理、融合、反走样融合、反走样等复杂的计算机图形学算法,将等复杂的计算机图形学算法,将用户从具体的硬件和操作系统中解放了出来用户从具体的硬件和操作系统中解放了出来

现在 现在 OpenGL OpenGL 已经成为最主要的二、三维交已经成为最主要的二、三维交互式图形应用程序开发环境互式图形应用程序开发环境

Page 4: 复习题

44

MicrosoftMicrosoft 把把 OpenGLOpenGL 集成到集成到 WindowsWindows 中中 OpenGLOpenGL 本身是一个底层库,但在编程实践中本身是一个底层库,但在编程实践中

还需要一些能简化编程任务、易于在窗口系统还需要一些能简化编程任务、易于在窗口系统上执行的高层库上执行的高层库

WindowsWindows 平台所支持的平台所支持的 OpenGLOpenGL 库函数主库函数主要有五类:要有五类: 核心函数、实用库函数、核心函数、实用库函数、 辅助库函数、辅助库函数、 WindowsWindows 专用函数、专用函数、 Win32 APIWin32 API 函数函数

WindowsWindows 环境下的图形生成:环境下的图形生成: OpenGOpenGLL

Page 5: 复习题

55

1.1. OpenGLOpenGL 核心函数核心函数• 核心函数以 核心函数以 gl gl 开头,主要实现创建二维和三维几开头,主要实现创建二维和三维几

何形体、设置视点、几何变换、设置颜色及材质、何形体、设置视点、几何变换、设置颜色及材质、灯光、纹理映射、反走样、雾化场景、位图和文字灯光、纹理映射、反走样、雾化场景、位图和文字处理等最最基本的功能。独立于工作平台。处理等最最基本的功能。独立于工作平台。

2.2. OpenGLOpenGL 实用库函数实用库函数• 实用库函数以 实用库函数以 glu glu 开头,开头,是基于核心函数而比其更是基于核心函数而比其更

高一层的函数,包括纹理映射、坐标变换、多边形高一层的函数,包括纹理映射、坐标变换、多边形分化、绘制一些如椭球、圆柱、茶壶等简单多边形分化、绘制一些如椭球、圆柱、茶壶等简单多边形实体等。独立于工作平台。实体等。独立于工作平台。

WindowsWindows 环境下的图形生成:环境下的图形生成: OpenGOpenGLL

Page 6: 复习题

66

WindowsWindows 环境下的图形生成:环境下的图形生成: OpenGOpenGLL

3.3. 辅助库函数辅助库函数• 辅助库函数以 辅助库函数以 aux aux 开头,这些函数本来是用于初学者开头,这些函数本来是用于初学者

做简单的练习之用。由于简化,支持平台较少,不适合做简单的练习之用。由于简化,支持平台较少,不适合产品开发产品开发

4.4. windowswindows 专用函数专用函数• 以 以 wgl wgl 开头,用于连接开头,用于连接 WindowsWindows 窗口系统和窗口系统和 OpenGLOpenGL 。。能够进行渲染着色,在窗口内绘制位图字体以及把文本能够进行渲染着色,在窗口内绘制位图字体以及把文本放在窗口的某一位置等放在窗口的某一位置等。。用于用于 WindowsNTWindowsNT环境下环境下。。

5.5. Win32 APIWin32 API 函数函数• 用于处理象素存储格式和双缓冲区。只能用于用于处理象素存储格式和双缓冲区。只能用于 Win32Win32系系

统统

Page 7: 复习题

77

VS2008(VC) VS2008(VC) 中使用中使用 OpenGLOpenGL 第一步,选择一个编译环境;第一步,选择一个编译环境; 第二步,安装第二步,安装 GLUTGLUT 工具包;工具包;

11 、将下载的压缩包解开,将得到、将下载的压缩包解开,将得到 55 个文件个文件22 、把解压得到的、把解压得到的 glut.hglut.h 放到放到 VS2008VS2008 安装目录下面的“安装目录下面的“ VC\iVC\include\glut”nclude\glut” 文件夹。文件夹。33 、把解压得到的、把解压得到的 glut.libglut.lib 和和 glut32.libglut32.lib 放到静态函数库所在文放到静态函数库所在文件夹,件夹, VS VS 安装目录下面的“安装目录下面的“ VC\lib”VC\lib” 文件夹)。文件夹)。44 、把解压得到的、把解压得到的 glut.dllglut.dll 和和 glut32.dllglut32.dll 放到操作系统目录下面放到操作系统目录下面的的 system32system32 文件夹内。(典型的位置为:文件夹内。(典型的位置为: C:\Windows\SysteC:\Windows\System32m32 ))

第三步,建立一个第三步,建立一个 OpenGLOpenGL 工程。以工程。以 VisualStudio2008VisualStudio2008 为例。为例。选择选择 File->New->ProjectFile->New->Project (( VCVC ),然后选择),然后选择Win32 Console AWin32 Console Applicationpplication ,选择一个名字,然后按,选择一个名字,然后按 OKOK 。。在谈出的对话框左边点在谈出的对话框左边点 Application SettingsApplication Settings ,找到,找到 Empty projEmpty projectect并勾上,选择并勾上,选择 FinishFinish 。。然后向该工程添加一个代码文件,取名为“然后向该工程添加一个代码文件,取名为“ xyz.c”xyz.c” ,注意用,注意用 .c.c来作为文件结尾。来作为文件结尾。

以以 VC6.0VC6.0 为例,使用为例,使用 Microsoft Visual Studio\Common\MsDev9Microsoft Visual Studio\Common\MsDev98\bin\MSDev.exe 8\bin\MSDev.exe 打开 打开 .c .c 文件,编译文件,编译 \\自动创建工程自动创建工程 \\运行。运行。

Page 8: 复习题

88

三维变换流程图三维变换流程图

局部坐标 模型变换 世界坐标

取景变换 视点坐标

投影变换 投影坐标 设备变换 屏幕坐标

三维变换的流程图

Page 9: 复习题

99

三维变换的基本概念三维变换的基本概念 场景造型场景造型

坐标系:场景坐标系坐标系:场景坐标系 ==世界坐标系世界坐标系 ++局部坐标系局部坐标系 变换:模型变换变换:模型变换

放置虚拟照相机放置虚拟照相机 坐标系:视点坐标系坐标系:视点坐标系 ((虚拟照相机的位置、朝向以及向上的虚拟照相机的位置、朝向以及向上的

方向方向 )) 变换:取景变换 变换:取景变换 (( 在视域四棱锥进行裁剪和背面剔除在视域四棱锥进行裁剪和背面剔除 ) )

二维显示:二维显示: 坐标系:投影坐标系和屏幕坐标系坐标系:投影坐标系和屏幕坐标系 变换:投影变换、二维变换变换:投影变换、二维变换

Page 10: 复习题

1010

三维变换中的各种坐标系三维变换中的各种坐标系

Page 11: 复习题

1111

场景坐标系和模型变换场景坐标系和模型变换 几何场景建立于世界坐标系中几何场景建立于世界坐标系中 场景中的具体物体与局部坐标系相联系场景中的具体物体与局部坐标系相联系

局部坐标系可以简化物体的定义局部坐标系可以简化物体的定义 物体建立物体建立 == 标准体素+变换标准体素+变换

模型变换:物体从局部坐标系到世界坐标系模型变换:物体从局部坐标系到世界坐标系的变换,平移、放缩、旋转等的变换,平移、放缩、旋转等

Page 12: 复习题

1212

三维变换中的各种坐标系三维变换中的各种坐标系

Page 13: 复习题

1313

视点坐标系和取景变换视点坐标系和取景变换 视点坐标系视点坐标系

视点坐标系定义于世界坐标系中;视点坐标系定义于世界坐标系中; 其过程类似于拍照片:其过程类似于拍照片:

照相机的位置照相机的位置 照相机镜头的朝向:视线方向照相机镜头的朝向:视线方向 UPUP 方向方向

由世界坐标系到视点坐标系的取景变换由世界坐标系到视点坐标系的取景变换 (( 在在视域四棱锥进行裁剪和背面剔除视域四棱锥进行裁剪和背面剔除 ) )

Page 14: 复习题

1414

视点坐标系的交互建立视点坐标系的交互建立 坐标原点坐标原点 CC=(=(CCxx,,CCyy,,CCzz)) :相机的位置:相机的位置 单位向量单位向量 NN=(=(NNxx,,NNyy,,NNzz)) :镜头的朝向:镜头的朝向 与与 NN 不平行的向量不平行的向量 UPUP ::

得到两个向量 得到两个向量 UU=(=(UUxx,,UUyy,,UUzz) ) 和和 VV=(=(VVxx,,VVyy,,VVzz)) ,,然后单位化。 然后单位化。

四个矢量四个矢量 CC 、、 UU 、、 VV 、、 NN 组成了视点坐标系组成了视点坐标系

N UP

VN UP

U V N

Page 15: 复习题

1515

三维变换中的各种坐标系三维变换中的各种坐标系

Page 16: 复习题

1616

屏幕坐标系和设备变换 屏幕坐标系和设备变换 在投影平面上,有一个矩形区域称为视窗,在投影平面上,有一个矩形区域称为视窗,见上图坐标系中见上图坐标系中 vvoovvxxvvyy 的矩形和“视域四棱的矩形和“视域四棱锥” 图中的矩形锥” 图中的矩形

设备变换设备变换 二维变换:将定义在视窗中的投影结果转换到二维变换:将定义在视窗中的投影结果转换到

以像素为单位的屏幕坐标系 以像素为单位的屏幕坐标系 扫描转换:将连续的几何物体转换为离散的光扫描转换:将连续的几何物体转换为离散的光栅表示 栅表示

Page 17: 复习题

1717

三维几何和几何流水线三维几何和几何流水线

模型变换(旋转、平移、缩放)

视图变换

裁剪

投影(正交、透视)

窗口到视口映射

(眼睛的位置、观察的目标点观察的目标点、视图向上方向)

Page 18: 复习题

1818

观察过程观察过程 projection(viewing(modeling(geometry))))projection(viewing(modeling(geometry)))) (projection * viewing * modeling) (geometry)(projection * viewing * modeling) (geometry) 在定义几何模型之前,先定义投影操作,然在定义几何模型之前,先定义投影操作,然后是视图变换,最后是模型变换。后是视图变换,最后是模型变换。

OpenGLOpenGL 将模型变换与视图变换结合成一个将模型变换与视图变换结合成一个变换变换 (modelview transformation)(modelview transformation)

Page 19: 复习题

1919

一个简单的一个简单的 OpenGLOpenGL 程序 程序 Figure0.7.Figure0.7.cc 使用使用 GLUTGLUT 工具包工具包

GLUT(OpenGL Utility Toolkit)GLUT(OpenGL Utility Toolkit) ,用于隐藏不同窗口系统,用于隐藏不同窗口系统APIAPI 的复杂性,是一个学习的复杂性,是一个学习 OpenGLOpenGL 编程的一个良好开端编程的一个良好开端

main()main() 函数结构函数结构int main(int argc, char** argv)int main(int argc, char** argv){{ glutInit(&argc,argv);glutInit(&argc,argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(700,700);glutInitWindowSize(700,700); glutInitWindowPosition(0,0);glutInitWindowPosition(0,0); glutCreateWindow("Temperature in bar");glutCreateWindow("Temperature in bar"); glutDisplayFunc(display);glutDisplayFunc(display); glutReshapeFunc(reshape);glutReshapeFunc(reshape); glutIdleFunc(animate);glutIdleFunc(animate); myinit();myinit(); glutMainLoop(); /* enter event loop */glutMainLoop(); /* enter event loop */

}}

新窗口下投影新窗口下投影

模型视图变换模型视图变换 回调回调 (callback)(callback)函函数的注册数的注册 p163p163