版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程名称计算机图形学应用基础课程编号授课时间专业及班级修课人数总学时32学分2课程类型必修课公共基础()专业(学科)基础课(√)专业课()选修课专业限选课()专业任选课()全校任选课()授课方式理论课(√)实践课(√)学时分配课堂讲授36学时;实践环节0学时考核方式考试(√)考查()是否采用多媒体是是否采用双语否使用教材:(名称、作者、出版社及出版时间)彭群生,金小刚,冯结青,陈为著,《计算机图形学应用基础》,清华出版社,2023年。(虚拟现实专题规划教材)教学参考书:(名称、作者、出版社及出版时间)[1]DonaldHearn等著,蔡士杰译,计算机图形学(第三、四版),电子工业出版社,2014[2]JamesD.Foley等著.计算机图形学原理及实践(C语言描述).机械工业出版社,2004.03[3]DaveShreiner,MasonWoo,etal.OpenGL编程指南.人民邮电出版社[4]孙家广,胡事民著.计算机图形学基础教程(第2版).清华大学出版社,2009-08-01[5]彭群生等.计算机真实感图形的算法基础.科学出版社.1999-06-01[6]王国瑾等.计算机辅助几何设计.高等教育出版社.2001-01-01教研室审查意见章节名称第1章绪论授课时间2课时课次1(总第1次)教学目的与要求1.了解图形学的概述和背景知识;2.掌握图形学的有关应用;3.用OpenGL实现一个简单的程序。教学重、难点1.计算机图形学的概念、原型与基本原理;2.光栅显示器系统构成特点。(重点)课型理论课■案例讨论课□实验课□习题课□其他□主要教学方法理论授课1、幻灯演示,程序演示,启发2、实例引入,分析原理,讲授,图示,作品演示教具多媒体设备教学内容的组织与设计一、课程导入通过举例和视频示范,给出计算机图形学的基本概念,呈现计算机图形学的应用场景和目标。通过互动交流,引导学生对计算机图形基本原理的思考,简要介绍开发计算机图形学技术的基础工具OpenGL,引导学生实现一个基本的图形学程序。二、教学内容的组织安排第1次授课(2课时)本章介绍计算机图形学的概述。其中包括计算机图形学的背景的具体应用领域,Windows环境下生成图形的一个简单例子,光栅图形显示的基本原理,以及RGB颜色系统。1.1计算机图形学概述1.1.1影视特技1.1.2计算机游戏1.1.3计算机辅助设计和计算机辅助制造1.1.4科学计算可视化1.1.5图形用户界面1.1.6计算机艺术1.1.7移动图形学1.2Windows环境下生成图形的一个简单例子[重点]1.3光栅图形显示的基本原理1.3.1光栅图形显示技术[重点]1.3.2简单二维图元的生成方法[重点]1.4RGB颜色系统1.1计算机图形学概述(1)本章主要介绍计算机图形学这门的学科。计算机图形学是一门研究如何利用计算机表示、生成、显示和处理图形的学科。(2)从生成技术上来看,图形主要分为两类①一类是基于线条信息表示的,如工程图、等高线地图、曲面的线框图等;②另一类是真实感图形。(3)计算机图形学的应用有:影视特效计算机游戏虚拟现实元宇宙社交媒体工业设计科学研究艺术医学广告教育培训军事等。1.2Windows环境下生成图形的一个简单例子(1)OpenGL简介:OpenGL(/)是SGI公司开发的一个跨平台的开放式图形编程工具。OpenGL集成了所有曲面造型、图形变换、光照、材质、纹理、融合、反走样等复杂的计算机图形学算法,将用户从具体的硬件和操作系统中解放了出来。(2)Windows与OpenGL:Microsoft最早将OpenGL集成到其WindowsNT操作系统中;随后推出的Windows98及Windows98以上操作系统均允许用户免费使用OpenGL进行图形编程。OpenGL本身是一个底层库,在编程实践中还需要一些能简化编程任务、易于在窗口系统上执行的高层库。(3)能够直接被Windows平台所支持的OpenGL库函数:OpenGL核心函数OpenGL实用库函数辅助库函数Windows专用函数Win32API函数,用于处理像素格式及缓冲。(4)如何利用OpenGL实用工具库GLUT中的函数glutSolidTeapot()在屏幕上生成一个茶壶:main()函数在第一行对GLUT库进行了初始化,然后设定窗口的显示模式、初始位置与大小,即位于屏幕左上角,长宽各为300。glutCreateWindow()语句创建了这个窗口。glutMainLoop()语句启动GLUT的主事件循环,在用户结束程序的运行之前,它将负责处理所有的GLUT事件。如果采使用VisualC++作为编程工具,为使该程序得到正确的运行,首先需要建立一个Win32ConsoleApplication属性的空白工程,在工程中添加Teapot.cpp文件。接着,选择Project→Settings菜单项,在弹出的对话框中选择Link标签,在Object/LibraryModules栏中增加OpenGL32.lib及glut32.lib两个文件。它们表示这个工程将要访问到OpenGL函数和OpenGL实用工具库函数。出于同样的目的,注意Teapot.cpp必须包含头文件GL/glut.h。1.3光栅图形显示的基本原理(1)光栅显示器上的图像是由光栅(raster)形成的。光栅是一组互相平行的水平扫描线,每行扫描线是由大小一致的显示单元组成的显示序列,每一显示单元称为一个像素,可显示给定的颜色和灰度。光栅显示器将显示图元(primitive)如线、文字、填充颜色或图案区域等,以像素的形式存储到一个刷新缓冲器中。(2)走样与反走样:对于光栅系统来说,只能用光栅网格上的像素近似地描绘平滑的直线、多边形和如圆、椭圆等曲线图元的边界。这引起了引起了图中看到的锯齿状与阶梯状的问题,在信号处理中称为“走样”(aliasing)。用于减少或消除这种现象的技术称为“反走样”(anti-aliasing)。(3)光栅显示系统的结构:(4)作为图形硬件的软件接口,OpenGL最主要的工作就是将二维及三维物体绘制到帧缓存。绘制过程主要有以下3步:定义几何要素(点、线、多边形、图像、位图),构建物体在计算机内的表示。确定各物体在三维空间中的方位,选取场景观察点。计算物体表面显示的颜色,这些颜色可以直接赋值,或根据光照条件及表面纹理计算得到。光栅化,把物体的几何描述和颜色信息转换为屏幕的像素。(5)直线的扫描转换算法分为三种:基本增量算法(DDA)中点线算法Bresenham算法等其中Bresenham算法是计算机图形学领域使用最为广泛的直线扫描转换算法。(6)生成字符有两种基本的方法:将每个字符定义为一条曲线或多边形的轮廓,然后进行扫描转换,计算开销很大。对于给定某种字体的每一个字符,生成一个小型的矩形位图。位图中该位为1表示字符的笔画经过此位,该位为0表示字符的笔画不经过此位。1.4RGB颜色系统(1)颜色是光射入人眼刺激人的视觉器官所产生的主观感觉。物体的颜色不仅取决于物体本身,还与光照、周围环境光的颜色,以及观察者的视觉系统有关系。从视觉的角度出发,颜色包括三个要素:色彩(hue)、饱和度(saturation)和亮度(lightness)。(2)近代的三色学说研究认为,人眼的视网膜中存在着三种锥体细胞,它们包含不同的色素,对光的吸收和反射特性不同,对于不同的光产生不同的颜色感觉。研究发现,一种锥体细胞专门感受红光,另两种锥体细胞则分别感受绿光和蓝光。三者共同作用,使人们产生了不同的颜色感觉。三色学说是真实感图形学的生理视觉基础,是颜色视觉最基本的理论。(3)RGB颜色模型基于三色学说。大多数彩色图形显示设备特别是CRT等光栅显示器均采用红、绿、蓝三原色,即使用RGB颜色模型。(4)OpenGL与RGB颜色模型:OpenGL通过glColor()函数来设定当前的物体绘制颜色,并用颜色缓存(colorbuffer)来存储颜色。glClearColor()函数设置当前的背景色。作业布置安装计算机图形学的开发软件OpenGL,学习如何实现应用开发。主要参考资料教学后记
章节名称第2章物体的几何表示授课时间6课时课次总第2-4次教学目的与要求1、了解几何建模的常用坐标系;2、掌握物体的多边网格模型表示方法,掌握半边结构存储方式,了解顶点法向和纹理坐标计算方法;3、了解参数曲面及张量积曲面定义,理解Bezier曲线和曲面表示,掌握Bezier曲线表示的定义、主要性质、优缺点,掌握Bézier曲线绘制方法。1、理解B样条曲线与曲面表示;2、掌握三次均匀B样条曲线的定义和绘制方法,了解NURBS曲线和优点;了解B样条曲面的定义方法;3、了解细分曲面、隐式曲面表示方法。4、了解物体的CSG树表示。5、理解自然景物表示方法,包括分形模型、描述植物生长的L-模型和描述动态景象的粒子系统。教学重、难点1.计算机图形学的空间之间的变换关系;(重点)2.相机的模型及单视图定标方法。课型理论课■案例讨论课□实验课□习题课□其他□主要教学方法理论授课教具多媒体设备教学内容的组织与设计一、课程导入采用幻灯片演示启发性教学,通过列举计算机图形学的实例引入概念,分析原理并讲授基本理论和方法。通过图示和作品演示加强理解。二、教学内容的组织安排第1次授课(2课时)主要讲授计算机图形学中的坐标系,以及物体表面的网格模型和参数曲面表示方法。2.1局部坐标系和世界坐标系2.2网格模型表示2.2.1网格模型表示数据结构[重点]2.2.2网格模型顶点法向的计算2.2.3模型顶点的纹理坐标2.2.4网格模型表示的优点2.3参数曲线曲面2.3.1参数曲面及张量积曲面2.3.2Bezier曲线[重点]2.3.3Bezier曲面2.1局部坐标系和世界坐标系本章主要介绍如何在计算机内对一个三维场景进行几何描述和定义。由于场景中物体的表示与采用的坐标系密切相关,为此首先引入局部坐标系和世界坐标系的概念。(1)常用的坐标系:空间直角坐标系、球坐标系、柱坐标系、(2)局部坐标系:以物体的中心为坐标原点的坐标系。其优点:=1\*GB3①表示形式简洁,=2\*GB3②在同一几何场景中,一个物体可能会多次出现,它们可以通过复制加变换的方式得到。=3\*GB3③局部坐标系便于进行几何操作。(3)世界坐标系:为了描述场景中所有物体的相对位置和各自的形状,建立的一个统一的整体坐标系。(4)世界坐标系和局部坐标系之间相互转换:简单的线性变换,如平移、旋转、放缩、剪切以及这些简单变换的组合。2.2网格模型表示(1)通过示例程序展示斯坦福Bunny、Horse、eight等模型。(2)物体的网格模型表示:顶点集、面片集、边集、法向集(可选)、纹理坐标(可选)。(3)网格模型表示的来源:=1\*GB3①存在实体的激光扫描=2\*GB3②得到实体上的点,然后采用一定的算法形成网格=3\*GB3③几何造型软件可以把曲面转化为近似的网格表示=4\*GB3④任何表面都可以用多边形网格逼近到任意光滑精度,这称为多边形网格的完备性(4)三角形网格外存存储:OBJ格式(5)网格模型的(内存)数据结构(存储结构)---半边结构=1\*GB3①存储结构要求:对网格模型的常用查找操作算法均O(1)复杂度。=2\*GB3②半边结构(Half-EdgeStructure):可定向的二维流形及其子集=3\*GB3③半边结构的实例(5)半边结构讨论:=1\*GB3①优点:查询时间O(1),操作时间(通常)O(1)=2\*GB3②缺点:只能表示可定向流形,信息冗余(6)网格模型顶点法向的计算如果顶点v与三角形面片f1、f2...fk相邻,则顶点v法向量nv可计算为(7)网格模型顶点的纹理坐标三维形状的表面细节可以通过纹理映射生成,纹理映射的目的是建立纹理图的像素点和模型表面点之间的对应关系,将纹理图片上的像素点颜色值赋予模型表面对应点的颜色,生成具有高度真实感的三维形状。(8)多边形网格表示的优势:=1\*GB3①容易表示,数据结构简单=2\*GB3②容易变换=3\*GB3③性质简单,每个面只有一个法向量,容易确定内外侧=4\*GB3④容易绘制,多边形填充=5\*GB3⑤纹理映射容易(9)多边形网格的渲染绘制(10)多边形网格的局限性小平面构成的网格大型和精细三维扫描仪获得大量网格不能转为自然的参数化表示变形困难固定的分辨率难适应网络传输需求不利于实现高效的碰撞检测和重建2.3参数曲线曲面2.3.1参数曲面及张量积曲面(1)曲线曲面的表示-显式、隐式和参数显式表示:y=f(x),z=f(x,y)隐式表示:f(x,y)=0,f(x,y,z)=0参数式表示:线:x=x(u),y=y(u),z=z(u)面:x=x(u,v),y=y(u,v),z=z(u,v)(2)非参数方式与参数方式比较=1\*GB3①非参数方式:与坐标轴相关,非平面曲线、复杂曲面难以用常系数表示,会出现斜率为无穷大的情况,不便于计算和编程。=2\*GB3②参数方式:与坐标轴无关(几何不变性),以至于可以表示任意维空间中的复杂曲线便于处理斜率无穷大情况,便于用参数变量的范围(例如限制在[0,1]内),获得唯一有界曲线或曲线分段描述,易于几何变换,便于编程实现,易于计算曲线上的点、导数等,有更大的自由度来控制曲线曲面的形状。(3)自由曲线曲面的表示:根据一组离散的坐标点即控制点,结合应用需求,得到最贴近物体形状的数学函数描述。核心思路:插值、逼近。插值:生成的曲线通过所有控制点。逼近:部分或全部控制点不在所生成的曲线上。(4)参数表示的数学原理:直线段。(5)参数表示的数学原理:曲线。(6)参数表示的数学原理:平面(7)一般形式的空间参数曲面2.3.2Bezier曲线(1)Bezier曲线的提出由于几何外形设计的要求越来越高,传统的曲线曲面表示方法,已不能满足用户的需求。1962年,法国雷诺汽车公司的P.E.Bezier构造了一种以逼近为基础的参数曲线和曲面的设计方法,并用这种方法完成了一种称为UNISURF的曲线和曲面设计系统,1972年,该系统被投入了应用。(2)Bezier曲线概念:Bezier曲线是参数多项式曲线,它由一组控制多边形的顶点(即控制点)唯一地定义。(3)Bezier曲线的定义、特征多边形一次Bezier曲线=直线段二次Bezier曲线=抛物线段三次Bezier曲线:4个顶点、4个基函数、矩阵表示。(4)Bézier曲线性质:端点插值、端点切向、对称性几何不变性:Bezier曲线位置与形状与其特征多边形顶点的位置有关,而不依赖坐标系的选择。凸包性:曲线落在所有控制点构成的凸包之内(5)Bezier曲线的递推(deCasteljau算法)当n=3时,decasteljau算法递推出的Pki呈直角三角形,对应结果如图所示。从左向右递推,最右边点P30即为曲线上的点。(6)Bezier曲线的缺点:整体性质:当移动曲线的一个控制顶点时,整条曲线的形状都会发生改变表示复杂形状时,需要将多条Bézier曲线光滑拼接起来,即Bézier样条曲线。(7)OpenGL的Bezier曲线曲面函数2.3.3Bezier曲面(1)Bézier曲面m×n次Bézier曲面:双线性Bezier曲面(m=n=1)。双二次Bezier曲面(m=n=2)。双三次Bezier曲面(m=n=3)。(2)Bézier曲面性质:Bézier曲面的控制顶点所形成的控制网格大致反应了曲面的形状,所以可通过编辑控制顶点的方式来实现对曲面形状的改变Bézier曲面通过四个角点处的控制顶点在角点处曲面与控制多边形相切Bézier曲面具有剖分算法:用加密的控制多边形来逼近显示Bézier曲面(3)Bézier曲面的不足全局性:当移动一个控制顶点的位置时,整个曲面的形状会发生改变,这对于外形设计是很不方便的生成复杂外形需要多个Bézier曲面的光滑拼接,十分复杂。第2次授课(2课时)2.3参数曲线曲面2.3.2B样条曲线[重点]2.3.3B样条曲面2.4细分曲面2.5隐式曲面2.6物体的CSG树表示2.7自然景物表示方法[重点]2.3参数曲线曲面2.3.2B样条曲线引:Bezier曲线的不足,解决办法:将不同Bezier曲线拼接的问题,转换为同一个样条函数内部的分段问题,并且希望新的曲线:易于进行局部修改;更逼近特征多边形;是低阶次曲线。(1)B样条曲线参数方程说明:n+1个控制点,获得的B样条曲线为m-1次(m阶),且曲线在连接点处具有m-2阶连续性。(2)B样条分类均匀B样条函数:节点沿参数轴均匀等距分布,即tk+1-tk=常数。举例:均匀三次(四阶)B样条混合函数和矩阵表示非均匀B样条函数:节点分布不等距,即(tk+1-tk)≠常数。(3)B-样条曲线性质局部控制性:1个控制点改变,最多影响m段曲线凸包性:曲线上的每个顶均位于由控制多边形形成的凸包内。几何不变性:B样条曲线的形状和位置与坐标系的选择无关。节点或控制点的重复:节点:降低连续性阶次,重复控制点
:二重,曲线趋近该点,三重,曲线经过该点,四点共线,生成一段直线.(4)均匀三次B样条绘制实例,分段三次B样条绘制例程(5)NURBS(Non-UniformRationalB-Spline):非均匀有理B-样条的引入:可表示所有二次曲线,特别是圆弧,同时由于引入了权因子,从而为曲线形状设计和造型提供了更多的灵活性。(6)NURBS的特点自由曲线面和其它简单曲线面的统一表达。具有仿射变换不变性。灵活、局部性:少量的控制点调节出宽广平滑的表面。权因子或者节点值的修改,便于更灵活的控制曲线面形状。广泛适应性。尤其适合流线型表面(人的身体、生活用品、果实)和工业产品表面(如汽车、飞机整体或零件)等。CAM领域的广泛应用。具有一系列强有力的几何造型的配套技术(包括节点插入、细分、升阶等)。2.3.3B样条曲面B-样条曲面是B-样条曲线的张量积形式推广,所以一张B-样条曲面的定义是与两个节点向量相关的。(1)B-样条曲面的定义其中{Rij}为控制顶点,和分别为定义在节点向量u和v上的规范化B-样条基函数。(2)B-样条曲面的重要性质局部性质:曲面可局部修改。控制顶点数目:Bézier曲面的次数确定后,控制顶点数目就定了,B-样条曲面的次数确定后,控制顶点数目可任意。(3)B-样条曲面实例(4)B-样条曲面的优点:当移动某个控制顶点时,曲面的变化是局部的,参见图2.15(c),可支持用户对曲面形状的局部修改。给定次数的Bézier曲面的控制顶点个数是确定的。如果想要描述复杂的曲面形状,只能升高曲面的次数或者用多片Bézier曲面光滑拼接起来,这在实际应用中会增大计算量并使算法变得复杂。(5)B-样条曲面的不足:不能精确表示常用的二次曲面,如球面、圆柱面、圆锥面等。为此,需引入NURBS(非均匀有理B-样条)曲面。2.4细分曲面细分曲面(subdivisionsurfaces),又称子分曲面或剖分曲面。它实际是基于一组拓扑规则和几何规则对初始多边形网格递归地进行剖分其极限形式构成的曲面。(1)Catmull-Clark细分曲面:由Chaikin算法生成,均匀二次B-样条曲曲线的离散生成。(2)Doo-Sabin细分曲面:基于四点插值曲线构造方法提出。(3)细分曲面实例(4)Loop细分曲面(六次三角样条曲面)(5)细分曲面的优势与不足优势:极限曲面C1或C2连续的光滑曲面,可以表示任意拓扑,适合于动画造型、快速显示不足:奇异点处没有解析表达,难以计算微分量,难以精确控制其外形,难以构造高阶光滑曲面。2.5隐式曲面(1)引入原因:虽然NURBS曲线曲面具有强大的外形描述功能,但是在构建物体表示时,有时仍然感到不方便。例如,用NURBS精确地表示一个单位球面时,需要指定一组特殊的节点向量、权值和控制顶点,此外在球面的两个极点处会发生退化情形。实际上,由空间解析几何,一个球面可以用隐式方法表示更为简单。(2)隐式曲面与参数曲面的比较:优点:隐式曲面可以表示具有复杂拓扑的形状,隐式曲面比NURBS曲面更适合于进行布尔运算、光线跟踪、点集判断等。不足:隐式曲面表示不直观,难以进行外形的交互修改。NURBS曲面的外形控制手段非常直观隐式曲面通常没有边界,而NURBS曲面具有显式的边界。隐式曲面难以直接进行显示,而NURBS曲面则可以借助于剖分算法,对逼近多边形表示进行绘制。(3)隐式曲面与参数曲面的相互转化(4)图形学中常用的隐式曲面造型技术举例基于骨架的隐式曲面造型,代数曲面片造型技术,包括二次代数曲面、A-Patch方法等。(5)隐式曲面的显示多边形化:用平面多边形逼近隐式曲面,MarchingCube方法光线跟踪:生成高质量的图像粒子系统:在隐式曲面上均匀布撒粒子2.6物体的CSG树表示(1)原理;:CSG基本图元经布尔操作或几何变换获复杂形体。CSG基本图元:二/三维对象,如圆,长方体、球体、样条曲面或构造出的实体等。布尔操作:交、并、差、补。几何变换:平移、旋转、放缩、剪切等。(2)应用:面向浇铸、加工或拉伸等CAD/CAM过程优点:数据结构比较简单,内部数据的管理比较容易;控制性好:形状比较容易修改。缺点:对形体的表示受体素的种类和对体素操作的种类的限制。形体的边界几何元素(点、边、面)是隐含地表示在CSG中,故显示与绘制CSG表示的形体需要较长的时间。2.7自然景物表示方法引入:现实世界中有许多自然现象难以用上述几何物体描述,如山、树木、火焰、云等。它们或者具有丰富的细节,或者具有动态变化的形状,需要用新的造型手段描述自然场景。(1)目前三种常用方法:分形、基于语法规则的L-系统、粒子系统。(2)分形:分形物体每点处有无限细节,放大时逐步可见,整体与局部特征之间的自相似性整体与局部都不能用传统的几何语言来描述。(3)L-系统:用于植物建模L-系统造型的核心是语法规则与字符解释,对所给字符根据语法规则进行迭代,可生成新的字符串,每次迭代结果称为一代。然后将字符串中的字符解释为适当的几何体素,就可以得到一个基于语法规则生成的物体。(4)粒子系统:火、雾、烟、焰火等的外形随时间而变化,对于这类具有模糊、不确定外形的景物的模拟,产生过程:由一组随时间变化的粒子组成粒子的变化由某种随机统计规律控制粒子有生命:产生、发展(运动)、消亡按照确定或随机运动规律进行运动总结:本讲介绍了目前常用的物体表示方法,其中B样条曲线曲面表示、隐式表示、CSG树表示、自然场景造型方法等。这些表示方法各有所长,它们之间可以互相转化。对于给定物体,应采用简单、占用存储空间少的表示方法。在场景造型中,对不同的物体可采用不同的表示方法,以提高场景造型和绘制的效率。由于自然界中的物体多样性,物体的几何表示方法仍然是一个重要的研究方向。新的表示方法的不断涌现无疑会大大扩展计算机图形学的应用范围,从而扩大其对自然界的再现能力。作业布置主要参考资料[1]孙家广,胡事民著.计算机图形学基础教程(第2版).清华大学出版社,2009-08-01[2]王国瑾等.计算机辅助几何设计.高等教育出版社.2001-01-01[3]DonaldHearn等著,蔡士杰译,计算机图形学(第四版),电子工业出版社,2014教学后记
章节名称第3章变换与裁剪授课时间2课时课次总第5次教学目的与要求1、掌握点的齐次坐标表示方法,掌握二维和三维基本变换原理和矩阵表示.2、掌握三维观察流程,理解取景变换坐标系建立,观察坐标系中的投影坐标计算方法,以及视窗变换原理。3、了解裁剪的定义和作用,掌握Cohn-Sutherland和梁-Barsky两种直线段裁剪算法及编程实现,掌握Sutherland-Hodgman多边形裁剪算法,了解三维裁剪基本概念。4、了解字符形状表示方法和字符裁剪方法教学重、难点1.构建简单的计算机图形学系统;(重点)2.平面标记的3D注册原理。课型理论课■案例讨论课□实验课□习题课□其他□主要教学方法理论授课教具多媒体设备教学内容的组织与设计一、课程导入采用幻灯片演示启发性教学,通过列举计算机图形学的实例引入概念,分析原理并讲授基本理论和方法。通过图示和作品演示加强理解。二、教学内容的组织安排第1次授课(2课时)主要讲授如何将物体模型表示转换到由相机视域中的坐标变换与裁剪算法。主要内容包括:3.1二维变换3.2三维变换[重点]3.2.1场景坐标系和造型变换3.2.2视点坐标系和取景变换3.2.3投影坐标系和投影变换[重点]3.2.4规格化设备坐标系和设备变换3.2.5屏幕坐标系和视窗变换3.3裁剪3.4变换与裁剪的实例3.1二维变换变换是计算机图形学最基本的操作。变换包括造型变换和取景变换,前者指通过平移、旋转、缩放等手段将物体置于场景空间中的给定位置,并获得所需的形状;后者指将场景中的景物变换到当前视点为原点、视线方向为z轴的摄像机坐标系中。(1)通过二维变换,将定义在二维世界坐标系中的物体变换到以像素为单位的屏幕坐标系中,实现二维物体的光栅显示。基本变换:平移、旋转、放缩(2)平移:将物体沿直线路径从一个坐标位置到另一个坐标位置不产生变形,属于刚体变换。(3)旋转:将P点绕不动点(如坐标原点)转动某个角度(逆时针为正,顺时针为负)得到新的点P'的过程。(4)缩放:改变物体的尺寸,位置也随之改变(5)错切:沿x方向错切:每一点的y坐标不变,x坐标平移一个y坐标的线性量。沿y方向错切:每一点的x坐标不变,y坐标平移一个x坐标的线性量。(6)齐次坐标=1\*GB3①所谓齐次坐标表示法就是由n+1维向量表示一个n维向量。如n维向量(P1,P2,…,Pn)表示为(hP1,hP2,…,hPn,h),其中h称为哑坐标。=2\*GB3②齐次坐标与普通坐标之间是一一对应关系:x=X/hy=Y/h=3\*GB3③齐次坐标的作用:a.将各种变换用阶数统一的矩阵来表示。提供了用矩阵运算把二维、三维甚至高维空间上的一个点从一个坐标系变换到另一坐标系的有效方法。b.便于表示无穷远点,也可以表示向量。(2,3,1)表示普通点,(2,3,0)表示向量例如:(xh,yh,h),令h等于0c.齐次坐标变换矩阵形式把直线变换成直线段,平面变换成平面,多边形变换成多边形,多面体变换成多面体。(图形拓扑关系保持不变)d.变换具有统一表示形式的优点(7)二维平移旋转缩放矩阵P'=ABCP'=ABCP=A(B(CP))(9)复合变换分析的两种思考模式=1\*GB3①全局固定坐标系模式:又称图形模式。坐标系不变,图形改变。矩阵合并时,先调用的矩阵放在右边,后调用的矩阵放在左边(左乘变换矩阵,或前乘)。这种模式的特点是每一次变换均可看成相对于原始坐标系执行的。容易理解。如:P′=R·T·P=2\*GB3②活动局部坐标系模式:又称空间模式,OpenGL采用。坐标系改变,图形不变。先调用的矩阵放在左边,后调用的矩阵放在右边(右乘变换矩阵,或后乘),连续执行几次变换时,每一次变换均可看成是在上一次变换形成的新坐标系中进行的。便于用栈实现。(10)OpenGL二维几何变换函数glTranslate{fd}(TYPEx,TYPEy,TYPEz);glRotate{fd}(TYPEangle,TYPEx,TYPEy,TYPEz);glScale{fd}(TYPEx,TYPEy,TYPEz);glMatrixMode(Glenummode);//设置当前矩阵类型glLoadMatrix{fd}(TYPE*m);//装入变换矩阵:M=mglLoadIdentity(void);//装入单位矩阵:M=IglMultMatrix{fd}(TYPE*m);//矩阵相乘:M=Mm3.2三维(观察)变换流水线:(1)造型变换:将局部坐标系中的物体转换为世界坐标系中,三维点:P(x,y,z,1)P′(x′,y′,z′,1)(2)取景变换:设置照相机位置与朝向,建立视点坐标系。三维点:P′(x′,y′,z′,1)P″(u,v,n,1)(3)投影变换:透视投影:符合人类的视觉特点,产生的投影效果更为真实,平行投影:物体的相对度量保持不变(例如两个等长线段的投影结果仍然是等长的),适用于建筑和机械设计。直线透视投影规则:与画面平行的直线,其透视仍平行画面与画面相交的直线,其透视趋近于一点:灭点垂直画面的所有直线,其透视汇于一点(0,0,-d),过视点(0,0,d)直线透视为平行于z轴直线,(4)规格化设备坐标和设备变换:图形须从投影面搬到屏幕。二维变换:将定义在视窗中的规格化设备坐标转换到以像素为单位的屏幕坐标,扫描转换:将连续的几何物体转换为离散的光栅表示。(5)视窗变换:实视口和窗口的变换。3.3裁剪(1)裁剪算法分类:裁剪窗口的维数:二维、三维裁剪窗口:规则(矩形、六面体)和不规则的(任意多边形和多面体)对象维数:点、线、多边形、多面体裁剪实现方式:软件和硬件实现(2)二维线裁剪:决定画面中哪些点、线段或部分线段位于裁剪窗口之内。位于窗口内的点、线段或部分线段被保留用于显示,而其它的则被抛弃。在一个典型的场景之中,需要对大量的点、线段进行裁剪,因此裁剪算法的效率十分重要(3)Sutherland-Cohen直线段裁剪算法算法思想:对每条直线段P1(x1,y1)P2(x2,y2)分三种情况处理:=1\*GB3①直线段完全可见,“取”之。=2\*GB3②直线段显然不可见,“弃”之。=3\*GB3③直线段既不满足“取”的条件,也不满足“弃”的条件,需要对直线段按交点进行分段,分段后重复上述处理
。编码:对于任一端点(x,y),根据其坐标所在的区域,赋予一个4位的二进制码C3C2C1C0(上下右左)。算法:裁剪一条直线段时,先求出端点P1和P2的编码code1和code2:=1\*GB3①若code1|code2=0,对直线段应取之 =2\*GB3②若code1&code2≠0,对直线段可弃之 =3\*GB3③若上述两条件均不成立。则需求出直线段与窗口四条边界左、右、下、上的交点。在交点处把线段一分为二,其中必有一段完全在窗口外,可以弃之。再对另一段重复进行上述处理,直到该线段完全被舍弃或者找到位于窗口内的一段线段为止。特点:=1\*GB3①用编码方法快速判断线段的完全可见和完全不可见=2\*GB3②优点是简单,易于实现=3\*GB3③算法中求交点很重要,它决定了算法的速度=4\*GB3④算法不适用非矩形的窗口(4)梁友栋-Barsky直线段裁剪算法算法思想:=1\*GB3①设要裁剪线段P1P2,及其与窗口交点:A,B,C,D,从直线起始端A,B和P1三点中找出最靠近P2的点:P1,从直线终止端从C,D和P2中找出最靠近P1的点:C,裁剪结果:P1C两种算法比较:二种算法比较:Cohen-Sutherland在编码测试阶段能以位运算方式高效率的进行,因而当大多数线段能够简单的取舍时,效率较好。Liang-Barskey算法效率比前者要高,这是因为运算只涉及到参数,仅到必要时才进行坐标计算。两个算法均只能应用于矩形窗口的情形。(5)Sutherland-Hodgeman多边形裁剪算法分割处理策略:将多边形关于矩形窗口的裁剪分解为多边形关于窗口四边所在直线的裁剪。流水线过程(左上右下):前边的结果是后边的输入。评价:对凸多边形应用本算法可以得到正确的结果,但对凹多边形的裁剪将显示出一条多余直线解决这个问题有多种方法。把凹多边形分割成若干凸多边形再分别处理各个凸多边形。(6)字符裁剪字符表示方法:字符表示方法有两类,一类是矢量表示,另一类是点阵表示。字符也是图元的一种,它在输出过程中,同样需要进行裁剪,字符的裁剪有多种策略,依赖于字符的生成及存储方式和具体应用的要求,有三种:字符串精度、字符精度、像素精度。(7)关于三维变换与裁剪投影之前裁剪——三维裁剪优点:只对可见的物体进行投影,提高消隐效率缺点:三维裁剪相对复杂投影之后裁剪——二维裁剪优点:二维裁剪相对容易缺点:需要对所有的物体进行投影变换总结:几何变换和裁剪是从几何场景生成二维图形的重要过程。目前大部分图形接口都有相应的函数与这些过程对应,如OpenGL,Direct3D等,并且这些函数都可以由图形硬件加速实现。所以,用户通常只需进行简单的函数调用,就可以获得很高的变换和裁剪效率。作业布置主要参考资料[1]孙家广,胡事民著.计算机图形学基础教程(第2版).清华大学出版社,2009-08-01[2]DonaldHearn等著,蔡士杰译,计算机图形学(第四版),电子工业出版社,2014教学后记
章节名称第4章光栅转化与消隐授课时间2课时课次总第6次教学目的与要求1、了解区域的两种表示方法及优缺点,掌握种子点填充算法2、重点掌握顶点表示下多边形扫描转换算法,并能利用它来编程实现多边形填充。教学重、难点1.3D空间的注册方法与传感器的配合;(重点)2.计算机图形学应用系统的跟踪注册方法。(重点)课型理论课■案例讨论课□实验课□习题课□其他□主要教学方法理论授课教具多媒体设备教学内容的组织与设计一、课程导入由《阿凡达》电影拍摄的计算机图形学系统介绍入手,通过讲解其中的应用需求,引入空间注册方法的要求和方法。二、教学内容的组织安排第1次授课(2课时)主要讲授3D点的实时注册方法,以及基于点的实时注册方法,将一组点构成结构后,确定空间注册的部分方法。4.1区域填充4.2多边形的扫描转换[重点]4.2.1多边形扫描转换中的连贯性4.2.2多边形扫描转换算法4.3隐藏面消除4.3.1z缓冲器消隐算法【重点】4.3.2画家算法1.深度排序算法【重点】2.BSP树光栅显示器的优点在于不仅可以显示几何物体的线画图形,而且还可以显示具有连续色调的表面着色图,使图形所表现的信息更为丰富。区域填充和扫描转换是对光栅显示器上某一区域显示着色的最基本算法。此外,即使是位于视域四棱锥内的景物,当它们投影到显示屏幕上后,仍有一部分可能不可见,这是因为位于前面离观察者近的景物可能遮挡位于其后面的景物。为了生成正确的显示结果,有必要研究消除隐藏面算法。4.1区域填充(1)光栅图形:图形的点阵表示(2)区域的表示:点阵表示:用位于区域内部的像素集合来表示区域。顶点表示:用有序顶点序列的封闭多边形表示。图形学中的多边形:无自相交的简单多边形。(3)点阵表示方法:内点表示和点阵表示内点表示:把给定区域内的像素枚举出来边界表示:把区域边界上的像素枚举出来(4)内点表示的区域类型四连通区域:区域内任意两个像素,从一个像素出发,可以通过上、下、左、右四种运动,到达另一个像素八连通区域:区域内任意两个像素,从一个像素出发,可以通过水平、垂直、正对角线、反对角线八种运动,到达另一个像素(5)内点表示区域种子填充算法假设内部表示区域为G,其中的像素原有颜色为G0,需要填充的颜色为G1。算法需要提供一个种子点(x,y),它的颜色为G04.2多边形的扫描转换(1)逐点判断算法逐点判断算法:逐个像素判别其是否位于多边形内部判断一个点是否位于多边形内部:射线法。从当前像素发射一条射线,计算射线与多边形的交点个数(2)逐点判断算法的不足速度慢:几十万甚是几百万像素的多边形内外判断,大量的求交、乘除运算没有考虑像素之间的联系(3)改进思路:相邻像素之间的连贯性。扫描线算法充分利用了相邻像素之间的连贯性,避免了对像素的逐点判断和求交运算,提高了算法效率。区域连贯性、扫描线连贯性、边的连贯性。区域的连贯性是指多边形定义的区域内部相邻的像素具有相同的性质。例如具有相同的颜色。扫描线连贯性:区域连贯性在一条扫描线上的反映边的连贯性:直线的线性性质在光栅上的表现奇异点处理:扫描线与多边形交交于多边形的顶点,在极值点处,按两个交点计算,在非极值点处,按一个交点计算。实际计算前,奇异点(非极值点)的预处理,将扫描线上方线段截断一个单位,这样扫描线就只与多边形有一个交点。(4)多边形扫描转换算法算法思想:计算扫描线y=ymin与多边形的交点,通常这些交点由多边形的顶点组成。根据多边形边的连贯性,按从下到上的顺序求得各条扫描线的交点序列。根据区域和扫描线的连贯性判断位于多边形内部的区段。对位于多边形内的直线段进行着色。算法中的数据结构:分类的边表ET(SortedEdgeTable):记录多边形信息活化边链表AEL(ActiveEdgeList):记录当前扫描线信息边的数据结构:ymax:边的上端点的y坐标x:边的下端点x坐标,在活化边链表中,表示扫描线与边的交点的x坐标dx:边的斜率的倒数next:指向下一条边的指针(5)多边形扫描转换算法实现举例:(6)算法评价优点:充分利用多边形的区域、扫描线和边的连贯性,避免了反复求交的大量运算。不足:算法的数据结构和程序结构复杂,对各种表的维持和排序开销太大,适合软件实现而不适合硬件实现。4.3隐藏面消除位于视域四棱锥内的景物,当它们投影到显示屏幕上后,仍有一部分可能不可见,这是因为位于前面离观察者近的景物可能遮挡位于其后面的景物。为了生成正确的显示结果,有必要研究消除隐藏面算法。(1)消隐的基本概念(隐藏线或面消除):相对于观察者,确定场景中哪些物体是可见或部分可见的,哪些物体是不可见的。(2)消隐算法的权衡:消隐效率、图形质量。消隐算法的效率很大程度上取决于排序的效率、各种连贯性的利用。(3)消隐的分类-对象与输出:线消隐和面消隐-实现的坐标空间:图像空间消隐、景物空间消隐(4)图像空间消隐特点:在屏幕坐标系中进行的,生成的图像一般受限于显示器的分辨率算法复杂度为O(nN):场景中每一个物体要和屏幕中每一个像素进行排序比较,n为物体个数,N为像素个数代表方法:z缓冲器算法,扫描线算法等(5)景物空间消隐特点:算法精度高,与显示器的分辨率无关,适合于精密的CAD工程领域算法复杂度为O(n2):场景中每一个物体都要和场景中其他的物体进行排序比较,n为物体个数代表方法:背面剔除、表优先级算法等(6)景物和图形空间消隐方法的比较=1\*GB3①理论上如果n(物体数)<N(像素数),则景物空间算法的计算量O(n2)小于图像空间算法O(nN)=2\*GB3②实际应用中通常会考虑画面的连贯性,所以图像空间算法的效率有可能更高=3\*GB3③景物空间和图像空间的混合消隐算法(7)消隐算法的几个假设若图形对象为线框模型表示,需有面的信息投影平面是oxy平面投影方向为负z轴方向的平行投影不能处理相互贯穿或循环遮挡的物体,此时应做特殊处理4.3.1z缓冲器消隐算法(1)z(深度)缓冲器算法属于图像空间算法,z缓冲器是帧缓冲器的推广帧缓冲器:存储的是像素的颜色属性z缓冲器:存储的是对应像素的z值(2)z缓冲器消隐算法帧缓冲器中的颜色置为背景颜色z缓冲器中的z值置成最小值(离视点最远)以任意顺序扫描各多边形a)对于多边形中的每一像素,计算其深度值z(x,y)b)比较z(x,y)与z缓冲器中已有的值zbuffer(x,y) 如果z(x,y)>zbuffer(x,y),那么 计算该像素(x,y)的光亮值属性并写入帧缓冲器 更新z缓冲器zbuffer(x,y)=z(x,y)(3)优点:=1\*GB3①算法复杂度(O(nN)):对于给定的图像空间,N是固定的,所以算法复杂度只会随着场景的复杂度线性地增加=2\*GB3②无须排序:场景中的物体是按任意顺序写入帧缓冲器和z缓冲器的,无须对物体进行排序,从而节省了排序的时间=3\*GB3③适合于任何几何物体:能够计算与直线交点=4\*GB3④适合于并行实现(硬件加速)(4)缺点=1\*GB3①z缓冲器需要占用大量的存储单元:一个大规模复杂场景中:深度范围可能为106,一个像素需要24bit来存储其深度信息。如果显示分辨率为1280×1024,那么深度缓冲器需要4MB存储空间=2\*GB3②深度的采样与量化带来走样现象=3\*GB3③难以处理透明物体4.3.2画家算法1.深度排序算法(1)原理:离视点近的物体可能遮挡离视点远的物体。在景物空间确定物体之间的可见性顺序(物体离视点远近),由远及近地绘制出正确的图像结果。(2)条件:场景中物体在z方向上没有相互重叠(3)二维半物体的深度排序=1\*GB3①将场景中的多边形序列按其z坐标的最小值zmin(物体上离视点最远的点)进行排序=2\*GB3②当物体间的z值范围不重叠时:假设多边形P的zmin在上述排序中最小,如果多边形P的=3\*GB3③z值范围与Q的z值范围不重叠,即Pzmax<Qzmin,此时可以断定多边形P的优先级最低=4\*GB3④当物体间的z值范围重叠时:判断多边形P是否遮挡场景中多边形Q,需作如下5个判别步骤,P和Q交换顺序后,仍不能判断其优先级顺序,可以按如下方法处理:将其中一个多边形沿另一个物体剖分(4)深度排序算法=1\*GB3①三维物体的深度排序算法适合于固定视点的消隐。=2\*GB3②在视点变化的场合中(如飞行模拟),深度排序算法难以满足实时性的要求。2.BSP树(1)二叉空间剖分树(BSP树-BinarySpacePartitioning)的基本原理=1\*GB3①如果场景中的多边形可以被一个平面分割成两部分(如果有多边形跨越分割平面,则剖分该多边形),那么当视点位于分割平面的正侧时,位于分割平面正侧的多边形会遮挡位于分割平面另一侧的多边形=2\*GB3②对位于分割平面两侧的多边形继续进行递归分割,直至每一个分割平面两侧或一侧只有一个多边形=3\*GB3③分割过程可以用一个二叉树的数据结构来表示=4\*GB3④在BSP树算法中,分割平面取作场景中的多边形(2)给定场景的BSP树不是唯一的“最佳”的BSP树的两个标准:使BSP树尽可能平衡、尽可能减少多边形的剖分(3)BSP树的遍历过程就是建立多边形的优先级的过程,这是一个递归过程=1\*GB3①如果视点位于分割平面的正侧,那么该BSP树的遍历过程应当是: 负侧分支→根结点多边形→正侧分支=2\*GB3②如果视点位于分割平面的负侧,那么该BSP树的遍历过程应当是: 正侧分支→根结点多边形→负侧分支=3\*GB3③这个判定标准递归地应用于每个子分支总结:本章首先介绍了区域填充和扫描转换算法,它们是面向光栅显示着色的最基本算法。当三维场景投影到显示屏幕上后,场景中的物体因相互或自身遮挡可能不可见。为生成正确的显示结果,我们接着介绍了两种消除隐藏面算法。其中z缓冲器消隐算法较为稳定,适合于硬件实现。画家算法则根据景物空间中各物体相对于视点的前后顺序,确定相互之间的遮挡关系。基于BSP树的方法可实现视点改变时场景面片之间的快速排序。事实上,在图形绘制应用中,三维场景BSP树的构建是许多加速绘制算法的基础。作业布置主要参考资料[1]孙家广,胡事民著.计算机图形学基础教程(第2版).清华大学出版社,2009-08-01[2]DonaldHearn等著,蔡士杰译,计算机图形学(第四版),电子工业出版社,2014教学后记
章节名称第5章真实感图形授课时间6课次总第7-11次教学目的与要求掌握真实感图形的基本原理,了解真实感光照明模型与多边形明暗处理模型;掌握光线跟踪算法的基本原理与算法框架;掌握纹理映射的基本原理和方法;掌握辐射度方法的基本原理;了解实时绘制算法的要点,了解非真实感绘制的主要方法。教学重、难点1.光照明模型与明暗处理模型;(重点)2.纹理映射的基本原理和方法;(重点)3.光线跟踪算法与辐射度算法。(难点)课型理论课■案例讨论课□实验课□习题课□其他□主要教学方法理论授课教具多媒体设备教学内容的组织与设计一、课程导入通过用不同光照明模型的渲染图片展示入手,引出真实感的基本概念和相应的模型。二、教学内容的组织安排第1次授课(2课时)主要讲授生成真实感图形常用的光照明模型,包括常用的Phong模型(局部光照模型)、Whitted模型(整体光照模型),这些光照明模型与物理模型的近似关系,所生成图形的真实感程度。5.1光照明模型 目标:让计算机生成如同照片般真实的图像四个步骤:(1)建立三维场景的几何模型,确定景物表面的光照属性。(2)对三维场景作取景变换,并将其投影到二维平面上。(3)采用隐藏面消除算法剔除当前视点处不可见的场景表面。(4)对显示屏幕上的每一像素,根据光照明模型,计算在该像素内可见的场景表面朝视线方向的光亮度。5.1.1泛光模型泛光模型:刻画周围环境反射光对物体表面照明贡献,它假定环境反射光沿任何方向对任何物体表面入射的光亮度都相等,并采用一个常量来近似表示它。(5.1)其中,Ienv是物体表面对泛光的反射光亮度;Ia是泛射光的入射光亮度;Ka是物体表面对泛光的反射率。泛光中包含各种不同波长的光,具体计算时,我们将它分解为红、绿、蓝分量:(5.2)其中,Ra,Ga,Ba为入射到物体表面泛光的红、绿、蓝分量,KaR,KaG,KaB为物体表面分别对泛光红、绿、蓝分量的反射率,其取值范围为0~1。 5.1.2Lambert漫反射模型 入射到物体表面的光线一部分被物体吸收,另一部分经物体透射或被表面反射出去。物体表面的反射光可分为漫反射光和镜面反射光,其中漫反射光是物体表面对入射光线朝各个方向的均匀反射,其大小只与入射光的光亮度和入射方向有关,而与漫反射光的反射方向无关。纯漫射表面只产生漫反射。自然界的大部分表面如地面、房屋、树木、花草均可认为是纯漫射面。Lambert模型:漫反射光亮度和光源入射角(入射光线和表面法向量的夹角)的余弦成正比,其计算公式如下:(5.3)其中,Id为表面漫反射光的光亮度;Kd为物体表面漫反射率;Ie为发自光源的入射光的光亮度;α为光源入射角。,见下图一个综合了泛光和表面漫反射分量的光照明模型可表达为:式中Ia是环境泛光入射光亮度,一般取值范围为0.02Ie~0.2Ie。5.1.3Phong模型 现实世界有许多物体表面很光滑,如玻璃器皿、家俱、汽车车身等,当我们从某些视线方向观察这些表面时,往往会看到表面上呈现出特别亮的区域,即所谓的“高光(Highlight)”镜面反射光是一种朝向一定方向的反射光,它遵从光的反射定律,即反射光和入射光对称地分布于物体表面法线方向的两侧,反射角等于入射角(图5.6(a))。对于非理想镜面,通常认为其表面由许多朝向沿表面宏观法向附近随机分布的微平面构成,其镜面反射光分布于物体表面镜面反射方向的周围。Phong模型采用余弦函数的幂次来模拟表面镜面反射光围绕理想镜面反射方向的分布 (5.7)其中,Is:物体表面镜面反射光亮度;Ie:发自光源的入射光的光亮度;θ:镜面反射方向和视线方向的夹角;ks:表面的镜面反射率,通常可简单地取为一标量系数;n:镜面反射光的会聚指数。cosθ的计算涉及镜面反射方向R和视线方向V两个矢量:基于R和V即可计算cosθ。但这一计算涉及到矢量点乘,在实际应用中,经常采用cosγ来取代cosθ,其中γ是表面法向N和角平分矢量H=(L+V)/2的夹角。H是将入射光线反射到视线方向的虚拟镜面的法向。此时,镜面反射光亮度公式可改写为:完整的Phong模型可表述如下:(5.12)写成矢量积形式,得5.1.4Whitted整体光照明模型 Lambert模型和Phong模型仅考虑了从光源直接发出的光线对物体表面光亮度的贡献,而没有考虑光线在物体之间的相互反射,因此,被称为局部光照明模型。Whitted模型模拟了现实世界中景物表面之间的镜面反射和透射现象,物体表面某点P朝观察方向V的光亮度包含:(1).由光源直接照射引起的反射光亮度Ic;(2).沿V的镜面反射方向r入射的环境光Is在表面上产生的镜面反射光;(3).沿V的规则透射方向t入射的环境光It通过透射在表面上产生的规则透射光。(5.14)其中,ks:表面的镜面反射率;kt:表面的透射率。为计算点P处Is的值,我们必须首先求出r,并利用Whitted模型计算场景沿r方向投射到点P的光亮度,这导致了一个递归的过程。It的计算也类似5.1.5光照明模型的进一步完善 从物体表面上的某一点朝某一特定方向的光亮度可由一个与入射光线方向、物体表面法向、观察方向、表面材质等有关的函数来描述。通常这个函数是各向异性的(anisotropic),而且与光的波长相关。上面介绍的几个光照明模型只是对光照明现象的简单模拟。现有光照明模型可大致分为三类:基于经验的简单光照明模型(以Phong模型为代表)、基于物理的光照明模型(以Blinn模型和Cook-Torrence模型为代表)、以及双向反射率函数(Bi-directionalReflectanceDistributionFunction,BRDF)模型。BRDF是指一个微小面元上,特定反射光的辐照度与入射光的辐照度的比值,是一个关于入射光入射角度(θi,Φi)和反射光出射角度(θo,Φo)的四维函数。BDRF可较好地刻画物体表面的朝向细节,但该模型需要存储大量的采样数据,需要较大的计算量,因此目前尚未得到广泛应用。5.2多边形物体的明暗处理 5.2.1Gouraud明暗处理 为多边形物体的每一个顶点赋一个法向量。顶点处的法向量可取为所有共享该顶点的多边形的法向量的平均。然后,利用Phong模型计算每一顶点处的光亮度。多边形内部各点处的光亮度值则通过对多边形顶点处的光亮度进行双线性插值得到。Gouraud明暗处理简单快速,但马赫带效应依然存在,另一缺陷是不能正确模拟高光。5.2.2Phong明暗处理与Gouraud明暗处理直接插值顶点处的光亮度不同,Phong明暗处理采用双线性插值方计算多边形内各点的法向。然后依据插值得到的法向,采用Phong模型计算其光亮度。Phong明暗处理能较好地模拟高光,而且相邻多边形之间的光亮度过渡也比Gouraud明暗处理要更自然,但其计算量比Gouraud明暗处理要大得多。第2次授课(2课时)主要讲授生成真实感图形经典的光线跟踪算法,算法的基本步骤、加速技术、阴影生成和反走样方法等。5.3.1基本原理光线跟踪技术的前身是光线投射(RayCasting)法[15]。光线投射法生成真实感图形的步骤如下:首先从视点出发通过屏幕上的每一像素的中心向场景发出一条光线,并求出该条光线与场景中物体的全部交点;然后将各交点沿着光线投射方向排序,获得离视点最近的交点;最后依据局部光照明模型计算该交点处的光亮度,并将所得光亮度值赋给该像素。当所有屏幕像素都处理完毕时,即得到一幅真实感图形。1980年,Whitted为求解他提出的整体光照明模型,对光线投射算法进行了扩展。首先,从视点出发向屏幕上的每一像素发出一条光线,求出光线与场景所有交点中离视点最近的交点P,并依据局部光照明模型计算该交点处的颜色值Ic,同时在交点处沿着该光线的镜面反射方向和透射方向各衍生出一条光线(若点P所在的表面非镜面或不透明体,则无需衍生出相应的光线);然后,分别对衍生出的光线递归地执行前两个步骤,以计算来自镜面反射方向和透射方向上周围环境对点P光亮度的贡献Is和It;最后,依据Whitted光照明模型即可计算出点P处的光亮度,并将计算出的光亮度赋给该像素。上述光线衍生及其在环境景物之间传递的过程即为光线跟踪过程,它是对真实世界光照明过程的逆过程的一种近似。光线跟踪的递归过程并非无休止,一般采用下面条件之一作为终止条件。光线与环境中的任何物体均不相交,或交于纯漫射面。被跟踪的光线返回的光亮度值对像素颜色的贡献很小。已递归到给定深度。 5.3.2光线跟踪算法的伪语言描述(见教材第64页) 5.3.3阴影计算 阴影(Shadow)指的是场景中未被光源直接照射到或仅被部分光源直接照射到的区域。阴影区域分为本影和半影。本影是场景中完全未接受光源直接照射的区域,而半影指的是场景中仅受部分光源直接照射的区域。在光线跟踪算法中,要测试场景中某点P是否被某一点光源L直接照射,只需从P出发向光源L发射一条阴影测试光线R。若R在到达L的途中与场景中的物体不相交,则点P受光源L直接照射;反之,点P被位于它与光源L之间某一物体所遮挡,若遮挡物为不透明体,则点P位于光源的阴影之中。包含阴影计算的Phong模型可调整为:(5.15)其中,P为待计算颜色的点,m为场景中的点光源数,5.3.4反走样 由于光栅图形采用像素作为图形显示的基本单元,而光线跟踪算法本质上是对画面的点采样,因此容易导致图形走样(Aliasing)。常用的反走样方法:超采样(supersampling):对一个像素的不同子区域发射多条光线,沿这些光线分别进行光线跟踪返回多个光亮度值,将这些光亮度值的平均值作为该像素的显示光亮度。自适应超采样:首先朝给定像素发出几条采样光线(如3条),经光线跟踪得到表面在相应采样点处的光亮度值。假如这些光亮度值非常接近,则取返回的光亮度值的平均作为该像素的显示光亮度。反之,则对该像素做进一步剖分,发出更多采样光线。图:超采样和自适应超采样反走样方法更好的方式是是采用随机光线跟踪(stochasticraytracing)和统计光线跟踪(statisticalraytracing)5.3.5加速技术 光线跟踪算法涉及到光线与场景中物体的大量求交运算。以生成一幅分辨率为1280×1024的真实感图形为例,需要发射1280×1024条主光线。假设每条主光线通过反射和折射平均衍生出5条光线,再假设场景中包含4个点光源(即在每一被跟踪光线与场景的交点处需要发出4条阴影探测光线)和100,000个独立的物体表面,则共需要进行1280×1024×5×4×100,000次直线与各类物体表面的求交运算。如果还需进行反走样处理,则计算量还将增加。实际上,真正与某一被跟踪的光线相交的场景表面数量极其有限,如能简便地判定光线与场景中景物表面的相对位置关系,避免光线与实际不交的景物表面的求交运算,将能显著提高光线跟踪算法的效率。一种典型的光线跟踪加速算法是包围盒技术,即将场景中的所有表面按其空间位置关系分层次组织成树状结构,其中树的根结点表示整个场景,中间结点则分别表示场景中空间位置较为接近的一组表面,叶结点即为单个景物表面。每一结点中的表面或表面片集合都用一形状简单的包围盒包裹起来。若光线与包围盒不相交,则必定不与其中所含的景物面片相交;显然,采用包裹相对紧密的包围盒有助于提高包围盒测试的准确性。。另一类光线跟踪加速算法是将景物空间分割成一个个小的空间单元。被跟踪的光线仅与它所穿过空间单元中所含物体表面进行求交测试。典型算法包括基于空间均匀剖分的三维DDA算法、基于空间二叉分割(BSP)的算法和基于空间自适应剖分的八叉树算法。这类算法的优势在于可充分利用相邻空间单元的空间连贯性,使光线快速跨越一个个空单元,从而迅速到达非空单元,求得光线与景物的第一个交点。5.3.6光线跟踪实例程序 (见教材第67页)第3次授课(2课时)主要讲授呈现景物表面细节的颜色纹理和几何纹理生成算法,纹理反走样技术等。5.4.1颜色纹理纹理(texture):物体的表面细节。表面纹理可分为颜色纹理和几何纹理。自然界和生活中的表面通常具有丰富的颜色细节,如大理石表面和木质家俱表面呈现清晰的自然纹理,罐头和商品包装盒的表面印有各种装饰性纹理,房间墙上贴的字画也可认为是一种附着在表面的人工纹理。确定表面上的颜色纹理通常有二种方法,一种是依据预先建立的表面的纹理模型,计算表面上各点的颜色值,如表面上规则的几何图案即可通过计算机建模,确定表面上各点应取的颜色值;第二种方法是建立表面上的每一点和一已知图像上的点的对应关系,取图像上相应点的颜色值作为表面上各点的颜色值,这种方法在计算机图形学中称为纹理映射。为了使映射在景物表面的颜色纹理不因摄像机的方位或景物在空间位置的改变而漂移,常采用景物表面的参数化表示来确立表面的纹理映射坐标,设景物表面的参数化表示为f(u,v),而纹理图像可表示为T(s,t),建立景物表面参数空间(u,v)和纹理图像参数空间(s,t)之间的一一对应关系,即可实现纹理图像在景物表面的映射。5.4.2几何纹理自然界还存在另一类景物表面如桔子、树干、粗纹布料、混凝土墙面等。其表面凹凸不平,具有丰富的几何细节。Blinn提出,可以在不改变物体宏观几何的前提下,用凹凸映射(bumpmapping)技术模拟出物体表面粗糙的、褶皱的、凹凸不平的光照效果,其思想是计算景物表面光亮度时,对景物表面法向进行微小的扰动。假设物体表面S由参数方程S=S(u,v)表示,于是,对于S上的任意一点(u,v),其法向可由其沿u,v方向的偏导数Su,Sv的叉积n=Su×Sv定义。Blinn通过沿着表面S的法线方向叠加一个微小的扰动量P(u,v)定义了一张新的表面S’,即:在计算表面S的光亮度时,取新表面的法向量n’取代原光滑表面法向量n,生成物体表面的凹凸效果。扰动函数P(u,v)既可解析定义,也可通过查找表(如二维图像)的形式定义。采用不同的扰动函数将获得不同的效果。5.4.3纹理反走样无论是颜色纹理还是几何纹理都是一种表面细节,若采用常规点采样方式绘制画面,极易引起纹理走样(aliasing)。从本质上说,纹理走样是由于对景物表面欠采样(undersampling)引起的,即屏幕上两相邻像素所对应的景物表面采样点被映射到纹理空间不相邻的两像素,从而导致纹理空间某些信息的丢失。已提出了多种纹理反走样技术。基于前置滤波方法:。首先确定屏幕像素P上可见的景物表面区域A,然后将该区域直接映射到纹理空间区域T,并取区域T内的所有纹理像素颜色值的平均作为景物表面区域A的平均纹理颜色。超采样方法:将屏幕像素P的四个角点分别映射到纹理空间,得到四个纹理像素值,然后将这四个纹理颜色值取平均作为像素P所对应的可见表面区域的纹理颜色。这两种纹理反走样方法均需频繁计算屏幕像素至景物表面、景物表面至纹理图像的空间映射关系,并计算屏幕像素在纹理图像上映射区域所覆盖的多个纹理像素的平均颜色值,因而难以实时实现。Mipmap方法:预先计算并存贮原始纹理图像的一组多分辨率版本,算法从最原始的纹理图像出发,首先生成一个其分辨率为原始图像1/4的新的纹理图像版本,每一个像素值取为原始图像中相对应的四个像素颜色值的平均;然后再基于所得到的新纹理图像版本生成一个更低分辨率的、尺寸更小的纹理图像版本;这一过程一直持续,直至最后生成的纹理图像仅包含一个像素为止,由此得到一个由不同分辨率图像构成的纹理图像序列。在纹理映射阶段,屏幕上的每一像素内的可见表面区域被映射到原始纹理图像上的一块区域。Mipmap算法估计该区域所覆盖的原始纹理图像中像素的个数并以此作为选取适当分辨度的纹理图像版本的一种测度。如果预先构造的纹理图像序列中没有这一分辨率的纹理图像压缩版本,则取其压缩率最接近的相邻的两个纹理图像,在这两幅纹理图像上查取(或计算)当前屏幕像素映射点的纹理颜色值,然后在两个纹理颜色值间取加权平均,作为当前屏幕像素可见表面区域的颜色值。5.4.4纹理映射实例程序(见教材第72-74页)第4次授课(2课时)主要讲授生成真实感图形另一主流方法:光能辐射度算法、表面形状因子的概念、算法的基本步骤以及常用的实时绘制技术,包括细节层次技术、网格优化压缩等。5.5辐射度方法5.5.1辐射度方法简介光线跟踪算法通过跟踪光线在镜面和透明面之间的传播路径很好地模拟了场景中存在的镜面反射和规则透射现象。然而,现实世界中漫反射表面之间也同样存在光能传递,例如,相距很近的不同颜色的漫反射表面间会出现“颜色辉映”现象。显然,要对场景中众多的漫射表面朝不同方向发出的漫射光线逐一跟踪是十分困难的。注意到光是一种辐射能,在一个封闭的环境中,场景中的光能经过表面之间的反射和透射,最终达到平衡状态。场景中各表面的光亮度实际上是场景中光能分布的反映,基于此,Goral和Nishita等人分别独立地提出了计算场景中光能分布的辐射度方法。辐射度为单位时间内从物体单位表面积向外辐射的光能,它既包含物体作为光源自身向外发出的能量也包含该物体表面接受来自周围场景表面传递给它的能量后,再次反射出去的部分。为求解场景中物体表面的辐射度,需要将场景中每一物体的表面分解为互不重叠的小面片(patch)Pi(i=1,2,…,n),每一小面片的辐射度Bi和漫反射率ρi均假定为常数。记面片Pi的面积为Ai,其自身拥有的辐射度为Ei,显然,对于面片Pi,其中Hi是周围场景面片入射到面片Pi单位面积上的光能,不难发现,Hi是周围面片辐射度的函数。设面片Pj为一周围场景面片,由辐射度定义,面片Pj(其面积为Aj)向外辐射的总的光能为BjAj,其中一部分到达面片Pi。设到达面片Pi的光能占面片Pj向外辐射的总光能的比例为Fji,则从周围环境面片入射到面片Pi的总光能为,入射到面片Pi单位面积上的光能Hi则为:(5.20)Fji称为面片Pj到面片Pi的形状因子(FormFactor)。对于由纯漫射表面组成的封闭环境,Fji仅决定于面片Pi、Pj的面积,朝向以及它们在空间的相对位置。形状因子具有如下交换关系AjFji=AiFij,因此,(5.20)式可转化为:(5.21)代入(5.19)式,得,(i=1,2,…,n)(5.22)其矩阵形式如下:上式即为理想漫射环境的辐射度系统方程。不难发现,计算和确定场景面片之间的形状因子是求解系统辐射度方程的关键。对于纯漫射环境,形状因子Fji是一个取决于面片面积、朝向及其空间相对位置的纯几何量。由于它的解析表达式较为复杂,常采用半立方体方法[33]、光线采样方法[34]计算。实际应用中,为满足每一小面片的辐射度和漫反射率均为常数的假设,常常需要对场景中的物体表面进行细致的分割,对于一个复杂场景,其辐射度系统方程中矩阵的规模可能非常庞大。稍后提出的许多光能辐射度改进算法,例如逐步求精辐射度算法和小波辐射度算法,均巧妙地避开了方程组的直接求解过程。辐射度算法具有两个明显的优点:其
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 田鸡外卖营销方案策划(3篇)
- 社区音乐活动宣传方案策划(3篇)
- 终端营销公司活动方案(3篇)
- 药店赠护手霜活动方案策划(3篇)
- 营销方案金字塔(3篇)
- 西安家装营销方案(3篇)
- 邮政夏粮项目营销方案(3篇)
- 食物系列主题活动方案策划(3篇)
- 通报华南地区校园食品安全紧急整改措施函(8篇)范文
- 员工晋升及加薪公告通知(8篇)
- 工作资质证明
- 2024年注册公用设备工程师-注册设备工程师(暖通空调)笔试历年真题荟萃含答案
- 堤防波浪壅高、爬高计算表格
- 2022环氧乙烷企业安全风险隐患排查指南
- 施工电梯垂直度测量记录表
- 浙江省技师高级技师职业资格鉴定申请表(完整版)
- 高中物理《静电场》
- 宋锦织物结构的特点剖析
- 部编版四年级上册语文《习作:推荐一个好地方》教学课件
- 储能电站现场运行专用规程V1.0
- LY/T 2787-2017国家储备林改培技术规程
评论
0/150
提交评论