我为什么要学习这门课?
你想“看透”计算机三维世界背后的秘密吗?你想成为一个虚拟世界的缔造者吗?你想征服看似深奥的图形编程技术吗?你想迈步进入三维技术的殿堂,在游戏、虚拟现实、三维仿真、电影特效等行业大展宏图吗?那么,从这门课程开始吧。
这门课的主题是什么?
这门课程将深入浅出地告诉你一个三维世界是如何一步步地变换、处理、并最终显示在我们的计算机屏幕上的。课程将以图形界的工业标准---OpenGL图形库为学习对象,以图形流水线为主线来系统讲解最重要的图形概念、原理、算法和OpenGL编程技能。
学习这门课可以获得什么?
你的脑海中将有一条清晰的图形流水线,你对关键的图形概念将有系统理解,并具有基本的图形开发技能。这将使你跨过图形领域中最艰难的一段门槛,你将可以充满信心地入行(入三维图形之行)了。
本课程的学习可为你今后进一步学习或从事计算机图形学、计算机辅助设计、虚拟现实、游戏设计与开发等相关行业奠定良好的技术基础并培养动手实践能力。
这门课有什么特色和亮点?
图形编程学习的最大难度在于我们要学习的不仅仅是一个个图形库函数的使用方法,而是要对整条图形流水线有深刻的理解。只有理解了图形流水线,才可能真正掌握图形编程的要诀。因此,在教学内容组织上,本门课程将以图形流水线为主线来讲解OpenGL编程技术,其内容包括:变换、光照、片元处理、缓冲区、纹理以及shader编程等。
本课程教学的最大特色在于,不仅仅是讲述具体的函数使用技巧,而是要以一个个图形概念为中心进行学习:首先理解概念,之后讲解代码;然后,再透过代码,返回去消化概念。由此将理论算法与代码进行紧密对接。课程中包含了很多演示动画和例子程序,将以最直观、易懂的方式让同学明白图形显示的相关概念和原理。
为学生建立起完整的图形流水线构架,并围绕图形流水线,讲解大量的基础图形概念、原理及算法。同时,所有这些概念的讲授,都将结合OpenGL图形开发库的使用来进行,使学生不仅理解原理,还能掌握实际编程技能。由原理来引出编程,同时又通过编程来加深对原理的理解。
引子---内容提要与课程学习要求
内容提要与课程学习要求
第1章 计算机图形学与图形流水线
1.1 计算机图形学的概念及主要研究内容
1.2 图形与图像的差别
1.3 图形流水线总览
1.4 图形开发库
1.5 何为GPU ?
1.6 GPU中图形流水线的发展及shader编程
1.7 GPU的应用及未来
1.8 作业1-freeglut配置
作业1:freeglut环境配置及第一个OpenGL程序的运行
第2章 OpenGL编程简介
2.1 OpenGL的功能及其两种学习路线
2.2 OpenGL相关的库
2.3 OpenGL基本语法与学习资源
2.4 OpenGLStarter程序问题解答(1)
2.4 OpenGLStarter程序问题解答(2)
第3章 变换的秘密
3.1 变换的四个步骤
3.2(1) 三种几何变换
3.2(2) 平移、旋转、缩放----都是矩阵
3.2(3) 用堆栈来管理矩阵
3.2(4) 模型变换与视点变换
3.2(5) 全局变换与局部变换
3.3 投影变换
3.4 为什么图像变形了?----视口变换
3.5 三维几何空间中的坐标系与单位
3.6 本章要点总结及思考
作业2 太阳系
作业3 WhyNothing
作业4 机器人手臂
第4章 光照
4.1(1) 光照明模型及三种基本光照成分
4.1(2) Phong光照明模型
4.1(3) Blinn光照明模型
4.1(4) Phong等简单光照明模型的局限性
4.2(1) OpenGL中的光照参数设置
4.2(2) 几种光照模式
4.2(3) 两个问题
4.3 光照计算发生在图形流水线的哪个阶段?
4.4(1) 常数明暗处理与Gouraud 明暗处理
4.4(2) Phong明暗处理
4.5 图形流水线三个阶段的进一步理解
作业5 光照太阳系
作业6 三维场景漫游
第5章 帧缓冲区与片元运算
5.1 何为“帧”缓冲区(Frame buffer)?
5.2 颜色缓冲区
5.3 深度缓冲区与Z-buffer消隐算法
5.4 OpenGL中关于深度缓冲的函数
5.5 模板缓冲区
5.6(1) 四种片元测试
5.6(2) 混合(Blending)
5.6(3) 多边形偏移功能
5.6(4) 雾效与片元运算小结
作业7:加载并显示Obj格式的模型
第6章 纹理
6.1 纹理的概念
6.2 凹凸纹理映射(Bump mapping)
6.3 位移纹理映射(Displacement mapping)
6.4 纹理映射关系的确定
6.5 纹理映射在图形流水线中的实现
6.6 在OpenGL中实现纹理映射的四个步骤
6.7 如何获取纹理数据
6.8 纹理过滤
6.9 MipMap方法
6.10 自动生成纹理坐标
6.11 环境映射-本章小结
作业8:带纹理的三维场景漫游
第7章 顶点数组
7.1 OpenGL中绘制图元的基本方法及其弱点
7.2 顶点数组(Vertex array)
第8章 Vertex shader与Fragment shader
8.1 VS和FS可以做什么?
8.2 OpenGL中使用VS、FS的步骤
8.3 VS与FS间的数据流
8.4 VS/FS的输入与输出变量
8.5 GLSL的基本语法
8.6 用VS实现逐顶点的光照计算(Gouraud shading)
8.7 用FS实现逐像素的光照计算(Phong shading)、卡通风格的光照
8.8 在VS、FS中使用纹理
作业9:基于shader的光照计算
作业10:用纹理实现物体表面的镂空效果
第9章 回顾、总结与补充
回顾、总结与补充
(1)掌握C或者C++编程。
课程中用到的OpenGL例子代码都是采用了C语言形式,C++面向对象的特性应用的并不多。所以最基础的来说,掌握C编程就可以。
(2)对向量、矩阵的概念及基本运算有了解。(但要求不高,可自学了解即可)
为积极响应国家低碳环保政策, 2021年秋季学期开始,中国大学MOOC平台将取消纸质版的认证证书,仅提供电子版的认证证书服务,证书申请方式和流程不变。
电子版认证证书支持查询验证,可通过扫描证书上的二维码进行有效性查询,或者访问 https://www.icourse163.org/verify,通过证书编号进行查询。学生可在“个人中心-证书-查看证书”页面自行下载、打印电子版认证证书。
完成课程教学内容学习和考核,成绩达到课程考核标准的学生(每门课程的考核标准不同,详见课程内的评分标准),具备申请认证证书资格,可在证书申请开放期间(以申请页面显示的时间为准),完成在线付费申请。
认证证书申请注意事项:
1. 根据国家相关法律法规要求,认证证书申请时要求进行实名认证,请保证所提交的实名认证信息真实完整有效。
2. 完成实名认证并支付后,系统将自动生成并发送电子版认证证书。电子版认证证书生成后不支持退费。
经典书籍
《opengl编程指南》施瑞奈尔(DaveShreiner)等著,李军,徐波等译,机械工业出版社
《OpenGL超级宝典》赖特(RichardS.Wright.Jr)等著,张琪 付飞等译,人民邮电出版社
网络教程:
相关Mooc资源:
《计算机图形学》,清华胡事民教授,来源:爱课程
《计算机图形学导论》加州大学伯克利分校 | 分类: 计算机(568),来源:学堂在线
《现代计算机图形学入门》加州大学圣芭芭拉分校,闫令琪,GAMES在线课程:https://games-cn.org/intro-graphics/