-
第一章概述
计算机图形学在现代信息化社会有大量应用。本章在简要概述计算机图形学的定义,并澄清与计算机图形学相关领域的基础上,介绍计算机图形学的主要应用领域,并对后续将使用的编写计算机图形学程序的应用程序接口OPENGL的原理及基本编程方法进行介绍。
-
●1.1基本概念及应用
本节以计算机图形学是什么为切入点介绍相关的一些概念。计算机图形学是将模型转换为可以看见计算机图像的过程。也可以认为是虚拟照像的过程。与之相对应的另一门课程机器视觉则是将图像对应于模型的或者认识出图像中的元素的过程。本节概述了计算机图形学的各种应用。
-
●1.2课程具体内容与作业
本讲介绍作为一门入门型计算机图形学课程,本课程所选取的教学内容。及希望大家完成的编程作业。使大家对本课程要讲解及期待同学们完成的作业内容有个总体的了解。事实上,本课程的在内容组织上,也是以实际完成若干图形学任务为指引,来安排的教学内容。
-
●1.3基于OPENGL编写代码简介
作为一门技术应用课程,通过编程实践来掌握相关概念是非常重要的。本节将介绍本课程所选用的、并且被广泛应用的OpenGL函数库。将以一个具体的简单实例来介绍基于GLUT的使用。并重点介绍基于OpenGL编程的核心思想:状态机制。
-
第二章建模
世界由物体构成,而物体可以用空间中的几何体来表示。几何体又可围出几何体表面来表示。本章将介绍描述物体的表面模型。基于此模型,可以用计算机生成图片来进行展示。本章在简要介绍建模基本方法及基于三角形的表面建模的基础上,重点介绍曲线建模及曲面建模
-
●2.1建模概述
本节以实现画茶壶的函数为引子,引入建模的概念。并介绍表面建模的二种方法,三角形和曲面建模。本节中,还具体讲解了在计算机中用三角形建模的方法。并具体给出了四面体的表面建模,并给出其数据结构的表示。本讲还给出了生成模型文件的方法。
-
●2.2样条曲线建模
本节以参数化曲线表示为切入点,介绍了在曲线建模中使用最多的二种三次样条曲线:BEZIER曲线和B样条曲线。首先具体给出了其参数表示,并用矩阵形式给出了其表示。还讨论了二种曲线的特点及应用。以及二种曲线之间如何互相转换。另外,也给出了如何将由多条曲线连接成一整条光滑曲线的方法。
-
●2.3曲面建模
本节介绍了曲面建模及画曲线的方法。介绍了曲面定义的二种方法,扫成面和张量积曲面。并详细讨论了扫成面的特例旋转面的生成方法和表示。
-
第三章几何变换
几何变换在建模、计算机辅助设计、机器人及角色动画等领域都有着重要应用。本章简要概述了几何变换的分类、表示、变换的复合及用变换生成分形图形等内容,还专门讲了曲面在做几何变换后,曲面上点的法向量变换的计算方法。
-
●3.1概述
本节对变换进行了概述。首先给出了变换的定义,介绍了变换的应用。给出了一些简单变换的实例,使大家对变换有一个直观的认识。具体介绍了变换在图形学建模中的应用。以及在显示硬件中建模变换和视口变换中具体实施了什么变换。
-
●3.2变换的类型
本节将介绍在课程中用到的几何变换的类型及其性质,具体包括平移、旋转、恒等、构成的刚体变换,加上等比例缩放构成的相似变换。线性变换、仿射变换及投影变换等。这些在数学上新旧坐标都是通过一次变换得到的。其性质包括保边、保角、保平行线、保线。以及变换构成群的概念及意义。
-
●3.3变换的矩阵表示
本节首先给出变换的代数表示。接着给出其仿射矩阵表示,然后介绍变换表示的齐次形式。并给出齐次坐标的定义。介绍变换的齐次形式的内含及优点。最后具体给出了平移、缩放、旋转等变换矩阵。
-
●3.4复合
本节首先介绍什么是复合变换,接着以一个例子来具体介绍变换的复合,并通过该示例说明变换的复合矩阵的计算方法及变换的复合不满足交换律。
-
●3.5趣味变换:迭代函数系统
本节将介绍变换的一个有趣例子,用迭代函数系统生成分形图。具体以SIERPINSKI三角形为例介绍了其生成的方法,并由此给出了其他的一些例子。
-
●3.6法向量变换
本节首先介绍了法向量的定义,接着介绍了法向量在生成真实感图形时的重要性,接着展示法向量可视化的方法。接着,介绍了尝试使用原变换对法向量进行变换所可能得到的结果,展示了此方法对部分变换能得到正确的法向量,但对另外一些则得不到正确的法向量。最后推导了正确的法向量计算公式,并讨论了用原变换来变换法向量何时正确。
-
第四章层次模型
世界中的物体需要在计算机中表示。本章将介绍表示物体的层次化建模方法及其在计算机中表示的具体数据结构。并介绍正向运动学和逆向运动学的基本概念。
-
●4.1模型概念及应用
以简单的实例引入分层构造世界的方法。介绍了用树形数据结构来表示场景图,并以实例具体介绍了表示方法,进一步介绍了模型在文本文件中的存储方式。具体说明了建模中的群组概念及树形结构中各结点可取的类型:几何体、材质、变换等。本节还介绍了遍历场景图中各结点的方法,特别是对变换单元的处理。
-
●4.2运动学
本节首先介绍一种构成人体动画的铰接(关节)模型。并将学习正向运动学,即如何通过关节角来计算空间位置,具体是通过用人体关节的局部坐标变换来描述或计算人体各部位的运动。接着学习逆向运动学,即由全局坐标计算局部坐标,并介绍了逆向运动学求解的困难。
-
第五章四元数
为了解决旋转变换的插值问题,本章将学习四元数。本章将首先介绍进行旋转插值的困难,接着在二维空间中讨论用复数表示的旋转及其插值方法,并推广到更高维空间中引入四元数。并用与复数对照的方式学习四元数的定义、运算及性质,最后将其应用于旋转插值。
-
●5.1学习四元数的动因
本节首先介绍用矩阵表示的旋转,无法插值,从而引入问题。接着介绍了定义三维旋转的二种方式,绕空间轴旋转及欧拉角。然后举了一个反例证明欧拉角无法进行插值,并且给出了欧拉角的其他一些重要性质,如岐义性及万向节死锁。最后,简单介绍四元数如何使插值成为可能。
-
●5.2复数插值及推广
本节首先介绍了用复数表示一维旋转,接着学习了基于复数的二种旋转插值方法,线性插值及球上的线性插值(slerp)。推导了球上线性插值的公式,并给出了直接用复数进行球上线性插值的公式。最后,简单讨论了推广到多维旋转的做法。
-
●5.3表示旋转
本节首先给出四元数的数学定义。接着介绍了用四元数表示三维旋转,及四元数表示的旋转与矩阵表示的旋转之间的对应关系。接下来,以对旋转需要进行的运算为目的,说明了四元数上需要定义些什么样的运算来实现旋转所需要的运算。
-
●5.4运算
本节将首先学习四元数的基本运算法则,具体包括相加、与标量相乘、与其他四元数相乘,并给出了相乘公式的几何(向量)简洁表示,并以实例说明四元数相乘代表旋转的复合运算。学习四元数运算满足的运算规律。给出四元数的模的定义,证明四元数的单位元及逆元的计算方法。
-
●5.5旋转插值
本节主要学习四元数作用到空间点上,及四元数的插值算法。采用与复数一样的做法对四元数进行插值。由于插值中需要用到四元数的幂运算,推广了复数的指数对数运算到四元数中。
-
第六章动画
本章将学习动画的技术。要概述动画的几种基本类型后,将具体介绍关键帧动画、角色动画及物理动画的原理及核心算法。
-
●6.1动画概述
本节首先给出动画的定义及背后基本原理介绍。接着介绍传统动画制作的方法及其缺点。并简要介绍计算机在传统动画制作中的作用和方法,简要介绍制作传统动画的几个重要技术。最后简单概述了关键帧动画、过程动画、物理动画和角色动画。
-
●6.2关键帧动画
本节主要介绍关键帧动画中的中间帧插值细节,包括可能的插值参数,插值所用的方法,如一次线性插值、多项式插值及样条插值等。最后给出了插值可能面临的违背物理规律的问题及解决办法。
-
●6.3角色动画
本节主要介绍角色动画的技术。事实上,上一章关于层次建模中的正向运动学,就是角色动画的一种制作技术。该技术对刚性物体如传统人形机器人效果不错,但无法处理有弹性可伸缩的人的皮肤动画效果。本节即主要讲解蒙皮技术。首先给出蒙皮的定义,接着讲解了皮肤蒙皮SSD技术的要点,并以实例进行了介绍。
-
●6.4物理动画
本节将学习物理动画的相关知识。首先介绍有些什么样的动力学类型,接着讲解什么是粒子(质点)系统,然后给出描述质点动力学的通用方程形式,并给出解析法可求解和不可求解的例子。由此引入数值解的求解方法。
-
第七章色彩
本章将学习图像中色彩的形成机理及人感知色彩的方法,从而将此应用于后续的真实感图形生成中,并附带讨论色盲的原理。
-
●7.1色彩是什么?
本节主要讲述色彩形成的原理和过程:即可见光(电磁波)照在物体上,经过物体表面的反射,打进眼睛中,经过视网模上的锥状体传感器,将光转换为电再经过脑子编码成我们认知的颜色。最后还给出了一些不同花的反射谱,以此简要说明谱不相同,可能会在人脑中产生相同的颜色。
-
●7.2锥状体谱响应
本节首先介绍和锥状体接收光照输出的原理,并结合上节课所讲,介绍了从发光体到锥状体生成生物电的全过程。根据以上原理介绍了锥状体是如何看到颜色的。最后给出了用三色理论定义的颜色,并介绍了加色原理和减色原理。
-
●7.3色盲
本节首先介绍色盲产生的原因,即缺少某种锥状体。接着介绍了不同光谱的同色光的概念。最后介绍了利用METAMERS的原理进行颜色合成以及一些在生活中的应用。
-
第八章光线投射
本章将学习图像生成的算法——光线投射。在对光线投射算法的总体框架进行介绍后,将具体介绍在该算法中所要用到的相机在计算机中如何用合适的数据结构进行表示。以及光线投射算法中所涉及的核心算法——光线与基本几何体求交的算法。
-
●8.1光线投射概述与相机表示
本节主要讲述光线投射算法原理,事实上光线投射的算法就是将颜色生成的过程,利用计算机进行计算并重现。只不过,是一个逆过程,光线从眼睛出发,对待生成照片上的每个点发出一条线,求得与该线最近的物体,然后将该物体的颜色赋给照片。而相机(或者眼睛)在空间的位姿不同,将会得到不同的照片。故作为整个算法的基础,需要用合适的数据结构表示相机的位姿。
-
●8.2求交算法
"本节将主要介绍光线与几种基本几何形体的求交算法,具体包括光线与平面的求交、光线与球面的求交,光线与空间三角形的求交。
-
第九章局部光照与纹理
本章将学习局部光照模型及纹理贴图的相关技术。在局部光照模型中将首先介绍一般的数学模型BRDF,接着介绍了实际使用中用到的PHONG简化模型。介绍了纹理贴图的基本概念和方法,过程纹理的概念及存在的问题与解决这些问题的方法,最后介绍了纹理的若干高级应用。
-
●9.1局部光照
本节主要讲述局部光照模型,首先介绍通用的数学模型,即BRDF双向反射分布函数。接着,介绍二种简化的模型,理想漫反射和理想镜面反射模型。并进一步推广理想镜面反射模型于非理想的情形。进一步介绍了融合理想漫反射和非理想镜面反射的PHONG模型和BLINN-Torrance的变种以及其他的相关模型。最后对BRDF测量设备的原理和效果进行了介绍。
-
●9.2纹理
本节将首先介绍纹理帖图的基本做法,即实现结点坐标与纹理坐标间的映射,接着介绍过程纹理,为了克服普通过程纹理规则性强不自然的缺陷,引入了加入随机噪声的PERLIN纹理技术。最后,介绍了凹凸映射、法向映射、位移映射及环境映射等高级纹理应用技术。
-
第十章光线跟踪
本章将学习光线投射的升级版光线跟踪技术。在具体学习光线跟踪算法之前,先将光线投射技术进行扩展,使其能处理基本图元经过变换后的模型。接着学习光线跟踪,主要涉及处理阴影、反射和折射,整体算法用递归来实现。
-
●10.1光线投射中的变换
世界中的物体通常是对基本物体经过变换后得到的。而变换后图元就成了新的图元,需要设计新的光线与图元求交算法。为了尽量少涉及新的图元类型,从而减少算法,我们采用将光线变换到物体坐标系下求解的做法,而在物体坐标系中物体是已有求交算法的基本图元。
-
●10.2光线跟踪算法
本节主要学习光线跟踪算法。区别于光线投射,光线跟踪算法要产生二次光线,二次光线的起点在交点,而方向根据二次光线的类型不同而不同。对于阴影光是指向光源,对于反射指向与入射对称的方向,而对于折射则指向折射方向。其中,反射和折射则会继续进行光线跟踪,所以会用递归调用来实现。
-
第十一章光线跟踪加速
本章将学习光线跟踪加速技术。首先通过光线跟踪在产生真实感更强的图形的需求,来说明为什么需要分布式光线跟踪。而由于分布式光线跟踪计算量更大,所以需要进行算法加速。接着具体介绍了二种光线跟踪加速的算法,即利用包围盒结构和空间数据结构。
-
●11.1分布式光线跟踪动机
分布式光线跟踪通过对光线跟踪过程中的各个部分,将一变为多,即可得到更加真实的图形。本节将学习用多个点光源分布在面上,近似面光源,得到软阴影。将单个象素扩展为多个象素进行超采样,然后进行滤波可以实现反走样。而对于运动物体采用多时间点采样,可以得到运动模糊的效果。对粗糙面可产生多条反射光来进行模拟;以及通过不同的光路来模拟景深等。
-
●11.2光线跟踪算法加速
本节主要学习光线跟踪加速算法。将学习二种加速算法,其一是基于包围盒的,即对物体做出一个包围盒,如果光线不与包围盒相交,自然不会与物体相交。从而减少计算。其二是基于空间数据结构的算法,该算法是包围盒的一种细化。
-
第十二章走样概念及反走样技术
本章将学习采样、走样的基本概念和反走样的相关技术。具体包括滤波及卷积运算的基本概念,各种滤波的效果,解决走样的各种现代技术如超采样,抖动采样等。
-
●12.1概念及简单解决方法
本节首先介绍采样采样的基本概念,并通过采样及重建来引入走样的概念,然后较系统的介绍几种基本的走样类型,包括边缘锯齿状,渲染细节的丢失以及将单个象素扩展为多个象素进行超采样,然后进行滤波可以实现反走样。
-
●12.2更多解决方案
本节首先介绍了卷积的基本概念,以及其在信号处理中的作用,接着介绍了卷积核设计时就满足的基本性质,并介绍了几种常见的卷积核及其幅频特性。进一步介绍了盒子滤波产生人为条带纹理的现象,而高斯滤波则可避免此现象。本节还介绍了采样各向异性带来的问题以及解决方案。最后介绍了几种采样的方法,包括一致超采样、抖动采样、自适应采样等,以及样点非一致分布的问题
-
第十三章图形流水线
本章将学习图形硬件(显卡)的基本原理和设计显卡所涉及的核心算法。本章首先简单对基于显卡的绘制与前面学习的光线跟踪绘制进行了对比。接下来详细介绍了图形硬件(显卡)流水线中所涉及的各个步骤的具体算法,最后,还对图形硬件的若干最新进展进行了介绍。
-
●13.1图形流水线概述
本节主要对图形流水线算法进行了概述。并对图形流水线算法与光线跟踪算法进行了较全面的比较。分析了二种算法的优、缺点,以及核心区别。
-
●13.2图形流水线过程
本节主要介绍图形流水线所涉及的算法流程。包括几何变换、光栅化、象素计算、可见性。并具体介绍了这四个流程中所涉及的核心算法,以及目前实现中的一些具体做法。
-
●13.3现代扩展
"由于产业的需要,图形硬件得到飞速发展,通过并行化和专业化其吞吐率领先于其他硬件。现代图形硬件更是通过扩展可编程特性,使其超越图形应用而广泛应用于更多领域。本节对图形硬件的现代扩展作了简单介绍。另外,本节还对各种应用领域中,渲染方法的选择进行了总结和比较。