
本书以能力培养为主线,以实践案例教学为引导,以综合项目为载体,系统介绍计算机图形编程知识。
全书共分为上下两篇,上篇为计算机图形编程基础(第1~7章),介绍计算机图形学概论、图形变换、图形建模、真实感图形技术、纹理映射、交互技术、粒子特效;下篇为计算机图形编程综合实践(第8~10章)。介绍幻彩摩天轮虚拟场景项目、“我的世界”虚拟场景项目和仙剑虚拟漫游综合实践项目,将第1~7章的知识点综合起来,通过项目构思、项目设计、项目实施和项目测试完整展现交互式虚拟漫游场景的开发过程。
本书可作为高等学校计算机、软件工程、数字媒体、信息处理等专业以及职业培训机构的项目参考用书,也可供对计算机图形学感兴趣的读者参考。
计算机图形学是现代社会信息化的重要技术,也是与计算机图形处理密切关联的综合性学科。几乎所有现代科学和工程领域都需要采用计算机图形学知识处理、加强信息的传递与表达。因此,当今计算机图形学在造船、航空航天、汽车、电子、机械、建筑、影视等众多领域都有着广泛应用,而这些应用又在不断推动着计算机图形学的发展,进一步充实和丰富了它的内容。
本书在系统化理论的指导下,侧重介绍计算机图形学理论知识,强调计算机图形编程知识的系统性、整体性、实用性和创新性,将知识、能力、素质培养进行一体化设计,力求全面系统、深入浅出地介绍计算机图形学理论知识以及编程技巧。本书配有实用性较强的实践项目,面向实践应用,以一种全新的方式引导读者快速掌握实际开发中必须掌握的重要概念、原理和编程技巧。
全书共分10章,分为上下两篇。上篇主要介绍计算机图形编程基础知识,分为7个章节。第1章介绍计算机图形学概论,包括计算机图形学基本概念、研究内容、发展历史、应用领域,并引入OpenGL库函数,引领读者走进图形编程环境。第2章介绍图形变换,包括几何变换、投影变换、视口变换、裁剪变换等内容。第3章介绍图形建模,包括点、线、三角形、多边形以及扩展三维几何体等内容,还引入了曲线曲面的编程理论,实现绘制二维几何体、奥运五环、贝塞尔曲线曲面等。第4章介绍真实感图形技术,包括颜色、光照、材质等内容,实现绘制光照壶、材质球、真实感三维别墅等。第5章介绍纹理映射内容,通过OpenGL纹理映射过程实现立方本贴图、绘制宇宙太空项目等。第6章介绍交互技术,包括键盘交互和鼠标交互实现交互式机器猫行走效果。第7章介绍粒子系统知识,包括粒子系统相关概念及发展应用,通过喷泉模拟、火炬模拟、烟花模拟等案例实现虚拟场景粒子特效。下篇为第8~10章,主要介绍计算机图形编程综合实践,综合第1~7章的知识点。第8章介绍幻彩摩天轮虚拟场景项目。第9章介绍“我的世界”虚拟场景项目。第10章介绍仙剑虚拟漫游综合实践项目,通过项目构思、项目设计、项目实施和项目测试来完整展现交互式虚拟漫游场景的开发过程。本书具有以下特点:
(1) 注重理论和实践的结合。本书融合项目案例,使读者在学习理论知识的同时提高在程序设计过程中分析问题和解决问题的实践动手能力,提高创新意识。
(2) 每个章节的结尾都包含实践项目,综合几章的知识点设置一个综合项目,知识内容层层推进,使读者易于接受和掌握相关知识内容。知识点有机地串联在一起,通过项目构思、项目设计、项目实施、项目测试过程,将一个实践项目完整地展现在读者面前,便于其掌握与理解。
(3) 本书提供配套资源,包括项目素材、课件、章节案例和综合案例的源代码。
本书由李婷婷担任主编,杨浩婕、刘石、付力娅担任副主编。
阅读本书之前,读者应该了解C或C++语言、数据结构以及线性代数的基本知识。本书适用于对虚拟仿真、游戏开发、图形图像处理等领域感兴趣的开发人员,还可供以应用型人才为培养目标的高等学校以及职业培训机构作为参考书籍使用。
本书受大连市科技创新基金项目(NO.2019J13SN112)、辽宁省教育厅科学研究项目(JZR2019005)、辽宁省自然科学基金(NO.2019ZD0352)资助。
在本书的编写过程中,大连东软信息学院的全体专家、教师和管理人员付出了艰辛的努力,学校给予了大力支持。清华大学出版社为本书的出版作出了巨大贡献,在此表示感谢。
由于作者水平有限,本书难免会有不足之处,恳请广大专家、读者和教学工作者提出宝贵的意见和建议,以利于我们改进。
作者
2019年3月
上篇计算机图形编程基础
第1章计算机图形学概论31.1基本概念3
1.2研究内容4
1.3发展历史4
1.4应用领域4
1.4.1计算机辅助设计5
1.4.2计算机动画5
1.4.3真实感图形实时绘制与自然景物仿真6
1.4.4虚拟现实6
1.4.5计算机辅助教学6
1.4.6计算机艺术7
1.4.7图形用户界面7
1.4.8数据可视化8
1.5编程软件9
1.6OpenGL概述9
1.6.1OpenGL的三维图形世界9
1.6.2OpenGL的三维开发环境10
1.6.3OpenGL的库文件10
1.6.4OpenGL的绘图方式11
1.6.5OpenGL的绘制步骤11
1.6.6OpenGL的基本功能12
1.6.7OpenGL库连接13
1.6.8OpenGL数据类型13
1.6.9OpenGL函数命名13
1.7实践案例——绘制茶壶 14
1.8本章小结18
习题18
第2章图形变换20
2.1三维图形显示流程20〖1〗〖2〗〖1〗〖3〗2.2坐标系统21
2.3变换基础21
2.3.1变换原理21
2.3.2变换步骤21
2.4视点变换22
2.5模型变换22
2.5.1平移22
2.5.2旋转23
2.5.3缩放23
2.6投影变换24
2.6.1正射投影24
2.6.2透视投影25
2.7视口变换26
2.8裁剪变换26
2.9实践案例——三角形变换27
2.10本章小结32
习题32
第3章图形建模33
3.1图形建模概念33
3.2OpenGL基本建模33
3.2.1OpenGL基本图形的绘制33
3.2.2点(point)33
3.2.3线(line)34
3.2.4三角形(triangles)36
3.2.5多边形(polygon)36
3.2.6扩展三维几何体37
3.3贝塞尔曲线曲面38
3.3.1贝塞尔曲线定义38
3.3.2贝塞尔曲线性质38
3.3.3贝塞尔曲线绘制39
3.3.4贝塞尔曲面定义40
3.3.5贝塞尔曲面绘制40
3.4实践案例——绘制二维几何体41
3.5实践案例——绘制奥运五环48
3.6实践案例——绘制贝塞尔曲线52
3.7实践案例——绘制贝塞尔曲面55
3.8本章小结57
习题57
第4章真实感图形技术59
4.1真实感图形概述59
4.1.1真实感图形的特点59
4.1.2真实感图形的影响因素60
4.2颜色模型60
4.2.1RGB颜色模型60
4.2.2HSV颜色模型61
4.2.3HSI颜色模型62
4.2.4CMY颜色模型62
4.2.5色彩空间的选择标准62
4.3OpenGL颜色63
4.3.1OpenGL颜色立方体63
4.3.2OpenGL颜色模式64
4.4实践案例——彩色立方体64
4.5OpenGL光照69
4.5.1简单光照模型69
4.5.2OpenGL的光组成69
4.5.3OpenGL的光源创建70
4.5.4启动光照71
4.6实践案例——光照壶71
4.7OpenGL材质74
4.7.1OpenGL材质概念74
4.7.2OpenGL材质函数74
4.8实践案例——材质球75
4.9综合项目——绘制别墅80
4.10本章小结82
习题83
第5章纹理映射84
5.1纹理映射技术84
5.2OpenGL纹理映射85
5.2.1定义纹理85
5.2.2纹理控制86
5.2.3映射方式87
5.2.4绘制场景87
5.3实践案例——立方体贴图87
5.4综合项目——绘制宇宙太空90
5.5本章小结95
习题95
第6章交互技术96
6.1交互技术基础96
6.1.1交互输入技术96
6.1.2交互控制技术97
6.2OpenGL的交互技术97
6.2.1键盘交互97
6.2.2鼠标交互98
6.3实践案例——键盘交互98
6.4实践案例——鼠标交互101
6.5综合项目——行走的机器猫104
6.6本章小结110
习题110
第7章粒子特效111
7.1粒子系统概述111
7.1.1粒子系统定义111
7.1.2粒子系统发展111
7.1.3粒子系统应用112
7.1.4粒子系统组成112
7.2实践案例——喷泉模拟112
7.3实践案例——火炬模拟116
7.4实践案例——烟花模拟119
7.5本章小结123
习题124
下篇计算机图形编程综合实践
第8章幻彩摩天轮虚拟场景设计与实现1278.1项目构思127
8.2项目设计128
8.2.1粒子系统设计128
8.2.2旗帜飘动设计128
8.2.3键盘交互设计130
8.2.4场景环境设计130
8.3项目实施131
8.3.1实现粒子特效131
8.3.2实现旗帜飘动134
8.3.3实现键盘交互136
8.3.4场景环境实现138
8.4项目测试140
8.5本章小结142
习题142
第9章“我的世界”虚拟场景设计与实现143
9.1项目构思143
9.2项目设计144
9.2.1场景建模设计144
9.2.2镜面旗帜设计145
9.2.3键盘交互设计145
9.3项目实施146
9.3.1实现场景建模146
9.3.2实现镜面旗帜147
9.3.3实现键盘交互148
9.4项目测试150
9.5本章小结153
习题153
第10章仙剑虚拟漫游设计与实现154
10.1项目构思154
10.1.1项目背景154
10.1.2项目准备155
10.2项目设计155
10.2.1流程设计155
10.2.2界面设计155
10.2.3交互设计157
10.3项目实施157
10.3.1模型制作157
10.3.2场景制作161
10.3.3交互实现162
10.3.4程序代码164
10.4项目测试175
10.4.1客栈内部测试效果175
10.4.2白天运行测试效果176
10.4.3夜晚运行测试效果177
10.4.4雾天运行测试效果177
10.4.5雪天运行测试效果178
10.5本章小结178
习题178
附录A计算机图形学词汇180
A.1重点词汇180
A.2常用词汇181
参考文献186
本书适合作为高等院校计算机、软件工程专业以及职业培训机构作为图形编程项目教材参考使用。
本书在系统介绍计算机图形编程知识基础上,以OpenGL软件为基础,以能力培养为主线,以实践案例教学为引导,以综合项目为载体,培养学生实践编程技能。章节安排以实践项目为主线展开,内容讲解由浅入深,层次清晰,通俗易懂。
本书内容全面详实,编写规范,案例充分。在阅读本书之前,读者应该了解C或C++语言,简单的数据结构知识,以及线性代数的基本知识,本书可供以应用型人才为培养目标的高等院校以及职业培训机构作为参考书籍使用。
1、教学工作
(1)主讲课程本科生课程2门:虚拟现实技术、游戏引擎基础、增强现实技术;
2、科研工作
(1)研究方向:计算机图形学、虚拟现实技术、数字游戏开发;发表核心期刊十余篇;代表性著作主要有:《Unity3D项目实践》,吉林:吉林文史出版社等;
(3)科研项目:参与1项辽宁省自然科学基金项目:基于移动增强现实的目标识别与跟踪技术研究。大连市社科院重点项目:大连高校大学生创新创业平台的建设与研究。
3、曾经编写过的教材(教材名称、出版时间、字数、出版社、获奖情况等)
(1)杨浩婕,李婷婷《Unity3D项目实践》,吉林:吉林文史出版社,2016.5. ISBN: 978-7-302-******. 45元。570千字;
(2)李婷婷,刚家林《计算机图形图像编程实践教程》,大连:东软电子出版社,2017.1. ISBN: 978-7-302-******. 45元。400千字;