计算机图形学ppt课件第七章真实感图形显.ppt

上传人:牧羊曲112 文档编号:6023492 上传时间:2023-09-15 格式:PPT 页数:145 大小:837.50KB
返回 下载 相关 举报
计算机图形学ppt课件第七章真实感图形显.ppt_第1页
第1页 / 共145页
计算机图形学ppt课件第七章真实感图形显.ppt_第2页
第2页 / 共145页
计算机图形学ppt课件第七章真实感图形显.ppt_第3页
第3页 / 共145页
计算机图形学ppt课件第七章真实感图形显.ppt_第4页
第4页 / 共145页
计算机图形学ppt课件第七章真实感图形显.ppt_第5页
第5页 / 共145页
点击查看更多>>
资源描述

《计算机图形学ppt课件第七章真实感图形显.ppt》由会员分享,可在线阅读,更多相关《计算机图形学ppt课件第七章真实感图形显.ppt(145页珍藏版)》请在三一办公上搜索。

1、第七章 真实感图形显示,消隐光照图案与纹理颜色空间,消隐,消隐的分类消除隐藏线消除隐藏面,消隐,投影变换失去了深度信息,往往导致图形的二义性要消除二义性,就必须在绘制时消除被遮挡的不可见的线或面,习惯上称作消除隐藏线和隐藏面,简称为消隐。经过消隐得到的投影图称为物体的真实图形。,长方体线框投影图的二义性,消隐,消隐的对象是三维物体。三维体的表示主要有边界表示和CSG表示等。消隐结果与观察物体有关,也与视点有关。,线框图 消隐图 真实感图形,消隐的分类,按消隐对象分类线消隐消隐对象是物体上的边,消除的是物体上不可见的边。面消隐 消隐对象是物体上的面,消除的是物体上不可见的面。,消除隐藏线,对造型

2、的要求在线框显示模型中,要求造型系统中有面的信息,最好有体的信息。坐标变换将视点变换到Z轴的正无穷大处,视线方向变为Z轴的负方向。最基本的运算判断面对线的遮挡关系.反复地进行线线、线面之间的求交运算,求交运算射线与直线求交运算假定直线方程为射线方程为把射线方程代入直线方程得到,当 时,直线与射线平行,若还有,则整条射线与直线重合。当 时,则,当 时,二者交点为,当 时,无交点,射线与线段求交问题假定射线方程如上一样,线段的两端点为,则线段的方程为,射线方程代入上式得到,令,当 时,射线与线段平行。这时若还有,则线段与射线(或其反向延长线)重合。如果,则得到,当,射线与线段有唯一交点。将 代入射

3、线方程,或将代入线段方程求得。,射线与平面求交问题假设一空间射线起点为,方向为则该射线方程为,又假设一任意平面,其方程为。将射线方程代入平面方程得,整理得,显然,当,射线与平面平行。此时若还有,则整条射线落在平面上。除了这种情况外,射线(或其反向延长线)与平面交于一点,参数为,当 时,交点在射线上,否则交点在射线得反向延长线上(不算交点),消除隐藏线,凸多面体的隐藏线消除凹多面体的隐藏线消除,面消隐,面消隐算法的分类提高消隐算法效率的常见方法画家算法Z缓冲器算法(Z-Buffer)扫描线Z缓冲器算法区域子分算法光线投射算法,面消隐算法的分类,第一类(图像空间的消隐算法):以窗口内的每个像素为处

4、理单元;如Zbuffer、扫描线、Warnock算法 for(窗口内的每一个像素)确定距视点最近的物体,以该物体表面的颜色来显示像 素 第二类(物体空间的消隐算法):以场景中的物体为处理单元;如光线投射算法for(场景中的每一个物体)将其与场景中的其它物体比较,确定其表面的可见部 分;显示该物体表面的可见部分;,面消隐算法的分类,第一类(图像空间的消隐算法)算法复杂度:假设场景中有k个物体,平均每个物体表面由h个多边形构成,显示区域中有m x n个像素,算法的复杂度为:O(mnkh)第二类(物体空间的消隐算法)算法复杂度:假设场景中有k个物体,平均每个物体表面由h个多边形构成,显示区域中有m

5、x n个像素,算法的复杂度为:O(kh)*(kh),提高消隐算法效率的常见方法,利用连贯性将透视投影转换成平行投影包围盒技术背面剔除空间分割技术物体分层表示,方法1-利用连贯性,相邻事物的属性之间有一定的连贯性,其属性值通常是平缓过渡的,如颜色值、空间位置关系等。连贯性有:物体连贯性面的连贯性区域连贯性扫描线的连贯性深度连贯性,方法1-利用连贯性,物体连贯性:如果物体A与物体B是完全相互分离的,则在消隐时,只需比较A、B两物体之间的遮挡关系就可以了,无须对它们的表面多边形逐一进行测试。例如,若A距视点较B远,则在测试B上的表面的可见性时,无须考虑A的表面。面的连贯性:一张面内的各种属性值一般都

6、是缓慢变化的,允许采用增量形式对其进行计算。区域连贯性:区域指屏幕上一组相邻的像素,它们通常为同一个可见面所占据,可见性相同。区域连贯性表现在一条扫描线上即为扫描线上的每个区间内只有一个面可见。,方法1-利用连贯性,扫描线的连贯性:相邻两条扫描线上,可见面的分布情况相似。深度连贯性:同一表面上的相邻部分深度是相近的,而占据屏幕上同一区域的不同表面的深度不同。这样在判断表面间的遮挡关系时,只需取其上一点计算出深度值,比较该深度值即可得到结果。,方法2-透视投影转换成平行投影,消隐与透视关系密切,体现在:1)消隐必须在投影之前完成;2)物体之间的遮挡关系与投影中心(视点)的选取有关;3)物体之间的

7、遮挡关系与投影方式有关,方法3-包围盒技术,包围盒概念:一个形体的包围盒指的是包围它的简单形体。一个好的包围盒要具有两个条件:包围和充分紧密包围着形体;对其的测试比较简单。,方法3-包围盒技术,应用避免盲目求交例如:两个空间多边形A、B在投影平面上的投影分别为A,B,因为A、B的矩形包围盒不相交,则A、B不相交,无须进行遮挡测试。右下图:包围盒相交,投影也相交;包围盒相交,投影不相交。,方法4-背面剔除,外法向:规定每个多边形的外法向都是指向物体外部的。前向面:若多边形的外法向与投影方向(观察方向)的夹角为钝角,称为前向面。后向面:若多边形的外法向与投影方向(观察方向)的夹角为锐角,称为后向面

8、(背面)。剔除依据:背面总是被前向面所遮挡,从而不可见。,方法4-背面剔除,前向面,后向面,多面体的隐藏线消除,图中的JEAF、HCBG和DEABC所在的面均为后向面。其它为前向面。,方法5-空间分割技术,依据:场景中的物体,它们的投影在投影平面上是否有重叠部分?(是否存在相互遮挡的可能?)对于根本不存在相互遮挡关系的物体,应避免这种不必要的测试。方法:将投影平面上的窗口分成若干小区域;为每个小区域建立相关物体表,表中物体的投影于该区域有相交部分;则在小区域中判断那个物体可见时,只要对该区域的相关物体表中的物体进行比较即可。,方法6-物体分层表示,表示形式:模型变换中的树形表示方式原理:减少场

9、景中物体的个数,从而降低算法复杂度。,方法6-物体分层表示,方法:将父节点所代表的物体看成子节点所代表物体的包围盒,当两个父节点之间不存在遮挡关系时,就没有必要对两者的子节点做进一步测试。父节点之间的遮挡关系可以用它们之间的包围盒进行预测试。,画家算法(列表优先算法),由来:画家的作画顺序暗示出所画物体之间的相互遮挡关系算法基本思想:1)先把屏幕置成背景色 2)先将场景中的物体按其距观察点的远近进行排序,结果放在一张线性表中;(线性表构造:距观察点远的称优先级低,放在表头;距观察点近的称优先级高,放在表尾。该表称为深度优先级表)3)然后按照从远到近(从表头到表尾)的顺序逐个绘制物体。关键:如何

10、对场景中的物体按深度(远近)排序,建立深度优先级表?,画家算法(列表优先算法),一种针对多边形的排序算法如下:Step 1:将场景中所有多边形存入一个线性表,记为L;Step 2:如果L中仅有一个多边形,算法结束;否则根据每个多边形的Zmin对它们预排序。不妨假定多边形P落在表首,即Zmin(P)为最小。再记Q为L P(表中其余多边形)中任意一个;Step 3:判别P,Q之间的关系,有如下二种:(1):对所有的Q,有Zmax(P)Zmin(Q),需进一步判别:,画家算法(列表优先算法),例子:A)若P,Q的投影P,Q的包围盒不相交(图a),则P,Q在表中的次序不重要,令L=L P,返回step

11、 2;否则进行下一步。,画家算法(列表优先算法),B)若P的所有顶点位于Q所在平面的不可见的一侧(图b),则P,Q关系正确,令L=L P,返回step 2;否则进行下一步。,画家算法(列表优先算法),C)若Q的所有顶点位于P所在平面的可见的一侧(图c),则P,Q关系正确,令L=L P,返回step 2;否则进行下一步。,画家算法(列表优先算法),D)对P,Q投影P,Q求交,若P,Q不相交(图d),则P,Q在表中的次序不重要,令L=L P,返回step 2;否则在它们所相交的区域中任取一点,计算P,Q在该点的深度值,如果P的深度小,则P,Q关系正确,令L=L P,返回step 2;否则交换P,Q

12、,返回step 3.,画家算法(列表优先算法),本算法不能处理的情况:多边形循环遮挡多边形相互穿透,解决办法:分割成两个,Z-Buffer算法,由来:帧缓冲器 保存各像素颜色值 Z缓冲器-保存各像素处物体深度值 Z缓冲器中的单元与帧缓冲器中的单元一一对应,Z-Buffer算法,算法思想:先将Z缓冲器中个单元的初始值置为最小值。当要改变某个像素的颜色值时,首先检查当前多边形的深度值是否大于该像素原来的深度值(保存在该像素所对应的Z缓冲器的单元中),如果大于,说明当前多边形更靠近观察点,用它的颜色替换像素原来的颜色;否则说明在当前像素处,当前多边形被前面所绘制的多边形遮挡了,是不可见的,像素的颜色

13、值不改变。,Z-Buffer算法-算法描述,帧缓存全置为背景色深度缓存全置为最小Z值for(每一个多边形)for(该多边形所覆盖的每个象素(x,y)计算该多边形在该象素的深度值Z(x,y);if(Z(x,y)大于Z缓存在(x,y)的值)把Z(x,y)存入Z缓存中(x,y)处 把多边形在(x,y)处的颜色值存入帧缓存的(x,y)处,需要计算的像素深度值次数=多边形个数*多边形平均占据的像素个数,Z-Buffer算法,Z缓冲器算法是所有图像空间算法中最简单的一种隐藏面消除算法。它在象素级上以近物取代远物,与形体在屏幕上的出现顺序无关。优点:1)简单稳定,利于硬件实现 2)不需要整个场景的几何数据缺

14、点:1)需要一个额外的Z缓冲器 2)在每个多边形占据的每个像素处都要计算深度值,计算量大,Z-Buffer算法-改进算法,只用一个深度缓存变量zb的改进算法。一般认为,Z-Buffer算法需要开一个与图象大小相等的缓存数组ZB,实际上,可以改进算法,只用一个深度缓存变量zb。,Z-Buffer算法-改进算法,帧缓存全置为背景色for(屏幕上的每个象素(i,j)深度缓存变量zb置最小值MinValue for(多面体上的每个多边形Pk)if(象素点(i,j)在pk的投影多边形之内)计算Pk在(i,j)处的深度值depth;if(depth大于zb)zb=depth;indexp=k;if(zb!

15、=MinValue)在交点(i,j)处用多边形Pindexp的颜色显示,Z-Buffer算法-改进算法,关键问题:判断象素点(i,j)是否在多边形Pk的投影多边形之内计算多边形Pk在点(i,j)处的深度。设多边形Pk的平面方程为:,扫描线Z-buffer算法,由来:Z缓冲器算法中所需要的Z缓冲器容量较大,为克服这个缺点可以将整个绘图区域分割成若干个小区域,然后一个区域一个区域地显示,这样Z缓冲器的单元数只要等于一个区域内像素的个数就可以了。如果将小区域取成屏幕上的扫描线,就得到扫描线Z缓冲器算法。,扫描线Z-buffer算法,算法思想:在处理当前扫描线时,开一个一维数组作为当前扫描线的Z-bu

16、ffer。首先找出与当前扫描线相关的多边形,以及每个多边形中相关的边对。对每一个边对之间的小区间上的各象素,计算深度,并与Z-buffer中的值比较,找出各象素处可见平面。写帧缓存。采用增量算法计算深度。,扫描线Z-buffer算法,for(v=0;v Z缓冲器的第u单元的值)置帧缓冲器的第(u,v)单元值为当前多边形颜色;置Z缓冲器的第u单元值为d;/处理下一条扫描线,扫描线Z-buffer算法,改进之一:将窗口分割成扫描线,Z缓冲器的单元数只要等于一条扫描线内像素的个数就可以了。,扫描线Z-buffer算法,改进之二:采用多边形分类表、活化多边形表避免多边形与扫描线的盲目求交多边形分类表(

17、PT):对多边形进行分类的一维数组,长度等于绘图窗口内扫描线的数目。若一个多边形在投影平面上的投影的最小v坐标为v,则它属于第v类。,扫描线Z-buffer算法,扫描线Z-buffer算法,活化多边形表(APL):记录投影与当前扫描线相交的多边形。,扫描线Z-buffer算法-多边形,其中,多边形的数据结构如下:a,b,c,d:多边形所在平面方程f(u,v,n)=au+bv+cn+d=0的系数。color:多边形的颜色vmax:多边形在投影平面上的投影的最大v坐标值。PI:多边形的序号nextP:指向下一个多边形结构的指针,扫描线Z-buffer算法,改进之三:利用边、边的分类表、边对、活化边

18、对表避免边与扫描线的盲目求交扫描线Z-buffer算法-边数据结构边:用来记录多边形的一条边,其中vmax:边的投影的上端点的v坐标。u:边的下端点的u坐标n:边的下端点的n坐标 Du:在该边上v值增加一个单位时,u坐标的变化量DnextE:指向下一条边结构的指针。,扫描线Z-buffer算法,边的分类表(ET):当一个多边形进入活化多边形表时,需为其建立一个边分类表(ET)。这里,ET与其在扫描转换多边形的扫描线算法中的含义相同,是对多边形的非水平边进行分类的一维数组,长度等于绘图窗口内扫描线的数目。若一条边在投影平面上的投影的下端点的v坐标为v,则将该边归为第v类。,区域子分算法(Warn

19、ock 算法),由来:Z缓冲器算法与扫描线Z缓冲器算法中都是将像素孤立来考虑,未利用相邻像素之间存在的属性的连贯性,即区域的连贯性,所以算法效率不高。实际上,可见多边形至少覆盖了绘图窗内的一块区域,这块区域由多边形在投影平面上的投影的边界围成。如果能将这类区域找出来,再用相应的多边形颜色加以填充则避免了在每个像素处计算深度值,消隐问题也就解决了。,区域子分算法(Warnock 算法),算法基本思路:首先将场景中的多边形投影到绘图窗口内(假设它为边长为k的正方形),判断窗口是否足够简单,若是则算法结束;否则将窗口进一步分为四块。对此四个小窗口重复上述过程,直到窗口仅为一个像素大小。此时可能有多个

20、多边形覆盖了该像素,计算它们的深度值,以最近的颜色显示该像素即可。,区域子分算法(Warnock 算法),何谓窗口足够简单?存在下列情况之一即可称为窗口足够简单:1)窗口为空,即多边形与窗口的关系是分离的;2)窗口内仅含一个多边形,即有一个多边形与窗口的关系是包含或相交。此时先对多边形投影进行裁剪,再对裁剪结果进行填充;3)有一个多边形的投影包围了窗口,并且它是最靠近观察点的,以该多边形颜色填充窗口。,区域子分算法(Warnock 算法),区域子分算法(Warnock 算法),分离和包围多边形的判别:通常有3种判别方法:射线检查法,转角累计检查法和区域检查法。这三种检查都假定相交的和内含的多边

21、形已经事先判定了。射线检查法:从窗口内的任意点,画一条射线至无穷远处,累计射线与多边形交点的个数。如果为偶数(或为零),则此多边形与窗口分离;否则,此多边形包围窗口。但当射线通过多边形的顶点时,会得出错误结论。(如左图)解决方法有:当射线通过多边形的局部极值顶点时,记入两个交点;当射线通过多边形的非局部极值顶点时,记入一交点。,区域子分算法(Warnock 算法),转角累计检查法:按顺时针方向或逆时针方向绕多边形依次累加多边形各边起点与终点对窗口内任意一点所张的夹角。按累计角度之和可以判定:若角度之和等于0,则表示多边形与窗口分离;若角度之和等于360*n,则表示多边形包围窗口(n次)。,区域

22、子分算法(Warnock 算法,区域检查法:1)区域编码 2)多边形顶点编码 3)多边形边的编码 4)多边形的编码,区域子分算法(Warnock 算法),1、区域编码。窗口四条边所在直线将屏幕划分成9个区域,对窗口以外的8个区域按逆时针(或顺时针)进行编码,编码为07。2、多边形顶点编码。多边形v0v1vn的顶点vi的投影落在哪个区域,那个区域的编码便作为该顶点的编码,记为Ii。,区域子分算法(Warnock 算法),3、多边形的编码。多边形的边vivi+1的编码定义为Di=Ii+1-Ii,i=0,1n;其中,令In+1=I0,并且,当Di 4时,取Di=Di-8;当Di 4时,取Di=Di+

23、8;当Di=+/-4时,取该边与窗口边的延长线的交点将该边分为两段,对两段分别按上面的规则编码,再令Di等于两者之和。4、多边形的编码。定义多边形的编码为其边的编码之和,则,区域子分算法(Warnock 算法),区域子分算法(Warnock 算法),例如:I0=5,I1=7,I2=3,D0=7-5=2,D1=3-7=-4,D2=5-3=2,因为D1=-4,按第三步的处理规则,取边v1v2与窗口上边所在直线的交点将v1v2分为两段,两段的编码分别为2,2,从而D2=4。最终求出多边形的编码为 D0+D1+D2=2+4+2=8,因此,该三角形包围窗口。,区域子分算法(Warnock 算法),如图:

24、I0=1,I1=3,I2=7,D0=3-1=2,D1=7-3=4,D2=1-7=-6。按第3步处理规则,取v1v2与窗口上边所在直线的交点v将其分为两段,两段的编码分别为-2,-2,从而D1=-2+(-2)=-4。而D2=-6+8=2。最终求出多边形的编码为D0+D1+D2=2+(-4)+2=0。从而得出结论:多边形与窗口分离。,光线投射算法,算法思想:将通过绘图窗口内每一个像素的投影线与场景中的所有多边形求交。如果有交点,用深度值最大的交点(最近的)所属的多边形的颜色显示相应的像素;如果没有交点,说明没有多边形的投影覆盖此像素,用背景色显示即可。,光线投射算法-算法描述,for(v=0;vv

25、max;v+)for(u=0;uumax;u+)形成通过像素(u,v)的投影线;for(场景中每一个多边形)将投影线与多边形求交;if(有交点)以最近交点所属多边形的颜色显示像素(u,v)else 以背景色显示像素(u,v);,光线投射算法,基本问题光线与物体表面的求交,光线投射算法-算法描述,for(v=0;vvmax;v+)for(u=0;uumax;u+)形成通过像素(u,v)的投影线;for(场景中每一个多边形)将投影线与多边形求交;if(有交点)以最近交点所属多边形的颜色显示像素(u,v)else 以背景色显示像素(u,v);,消隐的考虑,消隐算法的实现空间消隐算法可以在物体空间或图

26、像空间中实现。物体空间算法是在定义物体的坐标系中实现的,而图像空间算法是在对象显示的屏幕坐标系中实现的。物体空间算法以尽可能高的精度完成几何计算,所以可以把图像放大许多倍而不致损害其准确性,但是图像空间算法只能以与显示屏的分辨率相适应的精度来完成计算,所以其图像的放大效果较差。这两类算法的性能特性也是不同的。物体空间算法所需的计算时间随场量中物体的个数而增加,而图像空间的计算时间则随图像中可见部分的复杂程度而增加。,光照,简单光照明模型多边形绘制方法透明整体观照明模型光线跟踪算法,光照模型,光照模型(Illumination Model):计算某一点的光强度的模型真实感图形的特点能反映物体表面

27、颜色和亮度的细微变化能表现物体表面的质感能通过光照下的物体阴影,极大地改善场景的深度感和层次感,充分体现物体间的相互遮挡关系能模拟透明物体的透明效果和镜面物体的镜面效果,影响观察者看到的表面颜色的因素,物体的几何形状光源 位置、距离、颜色、数量、强度、种类环境 遮挡关系、光的反射与折射、阴影视点位置物性 材料、颜色、透明度 折射性表面光洁度,光照模型早期发展,1967年,Wylie等人第一次在显示物体时加进光照效果,认为光强与距离成反比。1970年,Bouknight提出第一个光反射模型:Lambert漫反射环境光1971年,Gouraud提出漫反射模型加插值的思想1975年,Phong提出图

28、形学中第一个有影响的光照明模型,相关物理知识,光的传播反射定律:入射角等于反射角,而且反射光线、入射光线与法向量在同一平面上,光源,法向量,入射光,反射光,视线,相关物理知识,折射定律:折射线在入射线与法线构成的平面上,折射角与入射角满足,能量关系,在光的反射和折射现象中的能量分布:下标为i,d,s,t,v的能量项分别表示为入射光强,漫反射光强,镜面反射光强,透射光强,吸收光强能量是守恒的,简单光照明模型,模拟物体表面的光照明物理现象的数学模型光照明模型简单光照明模型亦称局部光照明模型,其假定物体是不透明的,只考虑光源的直接照射,而将光在物体之间的传播效果笼统地模拟为环境光。可以处理物体之间光

29、照的相互作用的模型称为整体光照明模型,光源特性,光的色彩光的强度光的方向,光的色彩,光的色彩一般用红、绿、蓝的组合描述,不同组合可以产生不同色彩。,其中Ir,Ig,Ib分别代表R、G、B的强度。,光的强度,光的强弱由R、G、B三色光的强弱决定,各自在总光强中的权值各不同。总光强I为,可见各色光对总光强贡献权值大小依次为G、R、B,光的方向,按光的方向不同,可以将光源分类为:点光源(Point Light Source)分布式光源(Distributed Light Source)漫射光源(Ambient Light Source),物体表面特性,反射系数投射系数表面方向,反射系数,漫反射(Di

30、ffuse Reflection)系数镜面反射(Specular Reflection)系数,漫反射系数记为Rd,表示光射向物体表面时向各方向漫反射光线能力。可分解为Rd-r,Rd-g,Rd-b分别为红绿蓝各自的反射能力。其中Rd介于01。,镜面反射系数记为W(i),表示物体表面沿镜面方向(与光线入射角度相同、方向相反)反射光线能力。其中i为入射角。W(i)是i的函数。镜面反射光线色彩基本上是光源色彩。W(i)主要反映物体表面产生高光的现象。,投射系数,投射系数记为Tp,描述物体投射光线能力,介于01,当为1时,物体全透明;为0时,物体完全不透明。,表面方向,物体表面方向用表面的法线n来表示。

31、,简单光照明模型,光照射到物体表面,主要发生:反射透射(对透明物体)部分被吸收成热能反射光,透射光决定了物体所呈现的颜色,简单光照明模型-环境光,假定物体是不透明的(即无透射光)环境光:在空间中近似均匀分布,即在任何位置、任何方向上强度一样,记为Ia环境光反射系数Ka:在分布均匀的环境光照射下,不同物体表面所呈现的亮度未必相同,因为它们的环境光反射系数不同。光照明方程(仅含环境光):Ie=KaIa Ie为物体表面所呈现的亮度,即环境光的亮度,Ia为入射光的亮度,Ka为物体表面的光的反射系数01。,简单光照明模型-环境光例子,具有不同环境光反射系数的两个球,简单光照明模型-环境光,缺点:虽然不同

32、的物体具有不同的亮度,但是同一物体的表面的亮度是一个恒定的值,没有明暗的自然过度。,简单光照明模型-环境光,考虑引入点光源。点光源:几何形状为一个点,位于空间中的某个位置,向周围所有的方向上辐射等强度的光。记其亮度为Ip点光源的照射:在物体的不同部分其亮度也不同,亮度的大小依赖于物体的朝向及它与点光源之间的距离.,漫反射,漫反射粗糙、无光泽物体(如粉笔)表面对光的反射光照明方程 Id 漫反射的亮度 Ip 点光源的亮度 Kd 漫反射系数 入射角漫反射光的强度只与入射角有关,漫反射,将环境光与漫反射结合起来一般取Ia=(0.020.2)Id例子,简单光照明模型-镜面反射,镜面反射光滑物体(如金属或

33、塑料)表面对光的反射高光入射光在光滑物体表面形成的特别亮的区域,简单光照明模型-镜面反射,理想镜面反射观察者只能在反射方向上才能看到反射光,偏离了该方向则看不到任何光。,简单光照明模型-镜面反射,非理想镜面反射P为物体表面上一点,L为从P指向光源的单位矢量,N为单位法矢量,R为反射单位矢量,V为从P指向视点的单位矢量,简单光照明模型-镜面反射,镜面反射Is为镜面反射光强。点光源的亮度Ks是与物体有关的镜面反射系数。n为镜面反射指数,n越大,则Is随a的增大衰减的越快。n的取值与表面粗糙程度有关。n越大,表面越平滑(散射现象少,稍一偏离,明暗亮度急剧下降)n越小,表面越毛糙(散射现象严重),或,

34、简单光照明模型-Phong光照明模型,Phong光照明模型的综合表述:由物体表面上一点P反射到视点的光强I为环境光的反射光强Ie、理想漫反射光强Id、和镜面反射光Is的总和。,Phong光照明模型的实现,对物体表面上的每个点P,均需计算光线的反射方向。为了减少计算量,假设:光源在无穷远处,L为常向量视点在无穷远处,V为常向量(HN)近似(RV),H为L与V的平分向量,对所有的点总共只需计算一次H的值,节省了计算时间,N,H,简单光照明模型-光的衰减,光的衰减两个阶段:1)从光源到物体表面的过程中的衰减2)从物体表面到人眼过程中的衰减总的效果:物体表面的亮度降低光照明方程 1)有效衰减函数的加入

35、2)深度暗示技术的加入,光的衰减,光的衰减光在光源到物体表面过程中的衰减光强按 1/d2 进行衰减:缺点:当d很大时,变化很小;当d很小时,变化很大。衰减函数光照明方程,光的衰减,光在物体表面到人眼过程中的衰减深度暗示(Depth Cueing)技术:最初用于线框图形的显示,使距离远的点比近的点暗一些。经过改进,这种技术同样适用于真实感图形显示。设前参考面Z=Zf,后参考面Z=Zb;其比例因子分别为Sf和Sb(Sf和Sb e0,1)。给定物体上一点的深度值Z0,该点对 应的比例因子S0按如下 方式确定,前参考面,后参考面,光的衰减,当Z0 Zf时,取S0=Sf当Z0 Zf时,取S0=Sb当Z0

36、e Zb,Zf时,取原亮度I按比例S0与融和亮度Idc混合,目的是获得最终用于显示的亮度I,Idc由用户指定,,光的衰减,特例:取Sf=1,Sb=0,Idc=0,则当物体位于参考面之前时,S0=Sf=1,I=I,即亮度没有被衰减。当物体位于后参考面之后时,S0=Sb=0,I=Idc=0,即亮度衰减为0。而当Z0 Zb,Zf时,I=S0I,亮度被部分衰减。由此可以产生较好的效果。,简单光照明模型-彩色场景的产生,产生彩色选择合适的颜色模型-RGB模型为颜色模型中的每一种基色建立光照明方程,彩色场景的产生,-系数分解,上述各等式中,右端的矢量用来控制表面的基本颜色,当选定了物体表面的颜色之后,它们

37、就固定不变了。用户通过调节Ka,Kd,Ks来改变表面的反射率。,彩色场景的产生,新的光照明方程统一表示,简单光照明模型-多个光源,采用多个光源采用m个光源的光照明方程,多个光源,例子:其中a图:线框图 b图:环境光c图:增加漫反射 d图:增加镜面反射e图:增加光的衰减 f图:两个点光源,多边形绘制方法,分类:均匀着色与光滑着色均匀着色方法:任取多边形上一点,利用光照明方程计算出它的颜色,用这个颜色填充整个多边形适用场合:1)光源在无穷远处;2)视点在无穷远处;3)多边形是物体表面的精确表示;,多边形绘制方法,缺点:产生的图形效果不好。如左图:相邻两个多边形的法向不同,计算出来的颜色也不同,因此

38、造成整个物体表面的颜色过渡不光滑。如何解决?光滑着色,亦称插值着色Gouraud着色方法Phong着色方法,Gouraud着色方法,Gouraud于1971年提出,又被称Gouraud明暗处理基本思想:在每个多边形顶点处计算颜色,然后在各个多边形内部进行线性插值,得到多边形内部各点颜色。即它是一种颜色插值着色方法。注意:Gouraud着色方法并不是孤立的处理单个多边形,而是将构成一个物体表面的所有多边形(多边形网格)作为一个整体来处理。,Gouraud着色方法,对多边形网格中的每一个多边形,Gourand 着色处理分为如下四个步骤:步骤1、计算多边形的单位法矢量2、计算多边形顶点的单位法矢量,

39、Gouraud着色方法-顶点法向计算,与某个顶点相邻的所有多边形的法向平均值近似作为该顶点的近似法向量计算出的平均法向一般与该多边形物体近似曲面的切平面比较接近,Gouraud着色方法,3、利用光照明方程计算顶点光强(颜色)4、对多边形顶点光强(颜色)进行双线性插值,获得多边形内部各点的光强(颜色),Gourand 着色方法-光强插值,双线性光强插值:假设待绘制的三角形投影为P1P2P3,Pi的坐标为(xi,yi),i=1,2,3;一条扫描线与三角形的两条边分别交于A(xA,yA),B(xB,yB)两点。P(x,y)是AB上的一点。A点的颜色IA由P1、P2点的颜色I1、I2线性插值得到,Go

40、urand 着色方法-增量算法,采用增量算法可以加速计算。1)当扫描线y递增一个单位变为y+1时,IA、IB的增量分别为DIA,DIB,即,Gourand 着色方法-增量算法,2)当x递增一个单位时,IP的增量为DIP 即,Gourand 着色方法,优点:能有效的显示漫反射曲面,计算量小缺点:1、高光有时会异常2、当对曲面采用不同的多边形进行分割时会产生不同的效果。3、Gouraud明暗处理会造成表面上出现过亮或过暗的条纹,称为马赫带(Mach_band)效应改进Phong提出双线性法向插值,以时间为代价,解决高光问题,Phong着色方法,基本思想:通过对多边形顶点的法矢量进行插值,获得其内部

41、各点的法矢量,又称为法向插值着色方法。步骤1、计算多边形单位法矢量2、计算多边形顶点单位法矢量 3、对多边形顶点法矢量进行双线性插值,获得内部各点的法矢量 4、利用光照明方程计算多边形内部各点颜色,Phong着色方法-法向插值,NA由N1、N2线性插值得到,Phong着色方法-增量算法,采用增量算法可以加速计算。1)当扫描线y递增一个单位变为y+1时,NA、NB的增量分别为DNA,DNB,即,Phong着色方法-增量算法,2)当x递增一个单位时,IP的增量为DIP 即,Phong着色方法,优点:Phong着色方法绘制的图形比Gouraud方法更真实,体现在两个方面:高光区域的扩散,产生正确的高

42、光区域缺点:1、Phong着色方法计算量远大于Gouraud着色方法 2、在处理某些多边形分割的曲面时,Phong算法还不如Gouraud算法好。,增量式模型示例,牛的三角网格模型用简单光照明模型显示用增量式光照明模型显示,透明,现实世界中有许多透明物体,如玻璃等。透过透明物体,可以观察到其后面的景物。如何模拟这种透明效果呢?模拟透明的最简单的方法是忽略光线在穿过透明体时所发生的折射。虽然这种模拟方法产生的结果不真实,但在许多场合往往非常有用。例如:我们有时希望能够看到透过某透明物体观察其后面的景物,而又不希望景物应为折射而发生变形。,透明效果的简单模拟,不考虑透明体对光的折射以及透明物体本身

43、的厚度光通过物体表面不改变方向产生简单透明效果的方法插值透明方法过滤透明方法,透明体,不透明体,(x,y),Ia,Ib,视点,简单透明-插值透明,假设:多边形1是透明的,它位于观察者与不透明的多边形2之间。像素的颜色Il由A、B两点的颜色Il1和Il2插值产生,即其中Kt1是多边形1的透射系数。Kt1范围(0,1)Kt1=0表示多边形完全不透明,所以Il=Il1Kt1=1表示多边形完全透明,所以Il=Il2,简单透明-插值透明,为了产生逼真的效果,通常只对两个多边形表面颜色的环境光分量和漫反射分量采用 进行计算,得到的结果再加上多边形1的镜面反射分量作为像素的颜色值。,简单透明-过滤透明,过滤

44、透明方法将透明物体看作一个过滤器,有选择的允许某些光透过而屏蔽了其余的光。对右图有:其中Kt1仍是多边形1的透射系数,但不再局限于(01)。Kt1越大,多边形2的颜色透过来的越多。Ctl对不同的颜色各不相同。Ctl=0表示某种颜色的光不能透过多边形1。,简单透明,无论采用插值透明方法还是采用过滤透明方法,当多边形1之前还有其它的透明多边形时,Il都要递归计算。简单透明比较容易结合到多边形绘制算法中。,考虑折射的透明,折射定律其中:i,t分别是入射光线在空气,物体中的折射率,i、t分别是入射角和折射角,考虑折射的透明-透射矢量的计算,设单位入射光矢量为I(方向与光线的入射方向相反),单位法矢量为

45、N,单位透射光矢量为T,则,考虑折射的透明,当光线从高密度介质向低密度介质时,hiht,即qtqi。如果入射角不断增大,到一定的程度,折射角qt=90度,此时透射光线沿着平行于分界面的方向传播,称此时的qi为临界角度,记为qc。当qi qc时,发生全反射,透射与反射光合二为一。,光透射模型的研究,早期简单透射现象的模拟1980年,Whitted光透射模型,首次考虑了光线的折射现象1983年,在Whitted的基础上,Hall光透射模型,考虑了漫透射和规则透射光,整体光照明模型,简单光照明模型亦称局部光照明模型,其假定物体是不透明的,只考虑光源的直接照射,而忽略了光在环境景物之间的传递。为了增加

46、图形的真实感,必须考虑环境的漫射、镜面反射和规则投射对景物表面产生的整体照明效果。整体光照明模型考虑了物体之间的相互影响以产生整体照明效果,整体光照明模型,物体表面入射光的构成(1)光源直接照射(2)其它物体的反射光(3)透射光局部光照明模型仅考虑了(1),整体光照明模型,例如:从视点观察到的物体A表面的亮度来源于三方面的贡献:(1)光源直接照射到A的表面,然后被反射到人眼中的光产生的。(2)光源或其它物体的光经A物体折射到人眼中的光产生的。(3)物体B的表面将光反射到物体A的表面,再经物体A的表面反射到人眼中产生的。局部光照明模型仅考虑了(1),Witted光照模型,Whitted光照模型基

47、于如下假设:物体表面向视点方向V辐射的光亮度Il由三部分组成:(1)光源直接照射引起的反射光亮度Ill。(2)来自V的镜面反射方向R的其它物体反射或折射来的光的亮度Isl。(3)来自V的透射方向T的其它物体反射或折射来的光的亮度Itl,Witted光照模型,Witted光照模型:Il=Ill+Ks Isl+KtItl或Isl为镜面反射方向的入射光强度;Ks为镜面反射系数,为01之间的一个常数Itl为折射方向光强,Kt为透射系数,是0 1之间的常数Ill的计算可采用Phong模型因此,关键是Is和It的计算。如何计算呢?,Witted光照模型-反射、折射方向计算,已知视线方向V,求其反射方向R与

48、折射方向T(N是表面的法向方向)视线V的反射方向R折射方向T,T、R方向确定后,下一步即可计算沿二方向投射景物表面上的光亮度,即Is和It。另外Whitted模型为一递归模型,为计算这一模型,将用到下面的光线跟踪技术。,光线跟踪(Raytracing),该方法由Appel于1968年提出。光线跟踪算法的基本原理自然界中光线的传播过程光源物体表面 物体表面人眼光线跟踪过程-光线传播的逆过程,光线跟踪,从视点向每个象素发出一条光线,它与场景中的一些物体表面相交,最近的交点即为可见点,记为P,像素的亮度即由P点的亮度确定。由Whitted光照模型可知,P点的亮度由三部分组成:Ill,Isl和Itl。

49、其中Ill可以直接由局部光照模型计算得到。,光线跟踪,为了求Isl和Itl,从P点发出反射光线和透射光线,它分别交场景中的物体表面于Ps和Pt,Ps和Pt点的亮度即分别为Isl和Itl,将它们求出代入Whitted模型即可。但是,Isl和Itl同样由Whitted模型确定,即Whitted模型是一个递归式,从而计算Isl和Itl需要重复以上的计算过程:计算局部光亮度、发出反射光线与透射光线。可以用一棵光线树来表示,光线跟踪,递归终止条件:1、光线不与场景中的任何物体相交2、被跟踪的光线达到了给定的层次3、由于Ks和Kt都小于0,当光线经过反射和折射后,其亮度会衰减。因此可以预先设置一个阈值,在

50、进行光线跟踪时,若被跟踪光线对像素亮度的贡献小于这个阈值,便停止跟踪。,光线跟踪算法-算法描述,设置视点,投影平面以及窗口的参数;For(窗口内的每一条扫描线)for(扫描线上的每一个像素)确定从视点指向像素中心的光线ray;像素的颜色=RayTracing(ray,1);,光线跟踪算法-算法描述,Color RayTracing(Ray ray,int depth)求ray与物体表面最近的交点P;if(有交点)用局部光照明模型计算P点的Ic;color=Ic;if(depth给定的最大跟踪层次)计算ray的反射光线;Is=RayTracing(反射光线,depth+1);if(物体是透明的)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号