ahut计算机图形学8.ppt
第第8章章真真实实感感图图形形生生成成技技术术 _ 简单光照模型简单光照模型 _ 隐藏线面的消除隐藏线面的消除 _ 透明处理透明处理 _ 明暗处理明暗处理 _ 阴影处理阴影处理 _ 纹理处理纹理处理 _ 光线跟踪算法光线跟踪算法 _ 颜色模型颜色模型 用计算机生成三维形体的真实感图形,是计用计算机生成三维形体的真实感图形,是计算机图形学研究的重要内容之一。算机图形学研究的重要内容之一。 真实感图形生成技术在仿真模拟、几何造型、真实感图形生成技术在仿真模拟、几何造型、计算机动画制作、影视广告、科学计算可视化、计算机动画制作、影视广告、科学计算可视化、自然景物模拟、医学、气象学、地质学等领域都自然景物模拟、医学、气象学、地质学等领域都有广泛应用。有广泛应用。 近几年来随着多色彩高分辨率光栅图形设备近几年来随着多色彩高分辨率光栅图形设备的普及,真实感图形生成技术发展迅速。的普及,真实感图形生成技术发展迅速。 真实感图形生成技术涉及到的主要问题包括真实感图形生成技术涉及到的主要问题包括隐藏线面的消除隐藏线面的消除、明暗处理明暗处理、阴影处理阴影处理、纹理处纹理处理理等,缺乏这些处理,图形会缺乏真实感或真实等,缺乏这些处理,图形会缺乏真实感或真实感不足。感不足。第第8章章真真实实感感图图形形生生成成技技术术 8.1 隐藏线面的消除隐藏线面的消除 在用计算机生成三维图形时,形体的所有部分都将被表在用计算机生成三维图形时,形体的所有部分都将被表示,不管是可见的还是不可见的,这样的图形显示出来形状示,不管是可见的还是不可见的,这样的图形显示出来形状是不清楚的,甚至是不确定的。是不清楚的,甚至是不确定的。 图图1(a)所示是一个通过棱边表示的立方体的图形,如)所示是一个通过棱边表示的立方体的图形,如果不消隐不易辨别。通过适当删除不可见的隐藏部分,可以果不消隐不易辨别。通过适当删除不可见的隐藏部分,可以得到表示明确的图形。得到表示明确的图形。 图图1(b)是观察点在立方体的前上方的消隐图,)是观察点在立方体的前上方的消隐图, 图图1(c)是观察点位于立方体的前下方消隐图,消隐图)是观察点位于立方体的前下方消隐图,消隐图表示了明确的立体感形体。表示了明确的立体感形体。图图1 1第第8章章真真实实感感图图形形生生成成技技术术 观察点确定后,找出并消除图形中不可见的部观察点确定后,找出并消除图形中不可见的部分,称为分,称为消隐消隐。 经过消隐得到的图形称为经过消隐得到的图形称为消隐图消隐图。 消除隐藏线和隐藏面是计算机图形学中一个较消除隐藏线和隐藏面是计算机图形学中一个较为困难的问题,为困难的问题,消隐算法消隐算法是决定相对于空间给定位是决定相对于空间给定位置的观察者,哪些棱边、表面或物体是可见的,哪置的观察者,哪些棱边、表面或物体是可见的,哪些是不可见的。些是不可见的。 消隐不仅与消隐对象有关,还与观察点、观察消隐不仅与消隐对象有关,还与观察点、观察方向、投影面等的设置方位有关。改变这些设置,方向、投影面等的设置方位有关。改变这些设置,物体上某些可见的部分将会变成不可见,某些不可物体上某些可见的部分将会变成不可见,某些不可见的部分又会变成可见。见的部分又会变成可见。 第第8章章真真实实感感图图形形生生成成技技术术 虽然各种消隐算法的基本思想有所不同,但它虽然各种消隐算法的基本思想有所不同,但它们大多采用了们大多采用了排序和相关性排序和相关性以提高效率。以提高效率。 排序的主要目的是区分体、面、边、点与观察排序的主要目的是区分体、面、边、点与观察点间几何距离的远近。点间几何距离的远近。 因为一个物体离观察点愈远,它愈有可能被另因为一个物体离观察点愈远,它愈有可能被另一距离观察点较近的物体部分地或全部遮挡。一距离观察点较近的物体部分地或全部遮挡。 消隐算法的效率在很大程度上取决于排序的效消隐算法的效率在很大程度上取决于排序的效率。率。 通常利用画面在局部区域内的相关性来提高排通常利用画面在局部区域内的相关性来提高排序过程的效率。序过程的效率。第第8章章真真实实感感图图形形生生成成技技术术 消隐算法一般可以分为两类。消隐算法一般可以分为两类。 如果算法是在物体所定义的空间实现,那么如果算法是在物体所定义的空间实现,那么这种算法称为这种算法称为对象空间算法对象空间算法; 如果算法是在物体投影后的屏幕坐标空间实如果算法是在物体投影后的屏幕坐标空间实现,那么这种算法就称为现,那么这种算法就称为图象空间算法图象空间算法。 一般说来,对象空间算法有比较高的精度,一般说来,对象空间算法有比较高的精度, 而图象空间算法在精度上受屏幕分辨率的限而图象空间算法在精度上受屏幕分辨率的限制,但可以方便地利用图象空间中各种相关性获制,但可以方便地利用图象空间中各种相关性获得较高的计算效率。得较高的计算效率。第第8章章真真实实感感图图形形生生成成技技术术 8.1.1 凸多面体的消隐算法凸多面体的消隐算法 在消隐问题中,凸多面体是最简单情形。在消隐问题中,凸多面体是最简单情形。 凸多面体是由多个凸多边形平面包围而成的凸多面体是由多个凸多边形平面包围而成的立体,连接形体上不属于同一表面的任意两点的立体,连接形体上不属于同一表面的任意两点的线段完全位于形体的内部。线段完全位于形体的内部。 对于单个凸多面体,背向观察点的面是不可对于单个凸多面体,背向观察点的面是不可见面,如图见面,如图2所示。因此,只要判断出这些所示。因此,只要判断出这些“朝后朝后面面”,即可达到隐藏面消除的目的。,即可达到隐藏面消除的目的。第第8章章真真实实感感图图形形生生成成技技术术 图图2 2图图2 构成多面体的每个平面都有其构成多面体的每个平面都有其法线法线。通常规。通常规定法线的方向是由多面体的内部指向多面体的外定法线的方向是由多面体的内部指向多面体的外部,称为部,称为“外法线外法线”。第第8章章真真实实感感图图形形生生成成技技术术 假定在右手坐标系中,观察点位于原点,投影假定在右手坐标系中,观察点位于原点,投影面平行于面平行于XY坐标平面,以坐标平面,以Z轴作为深度坐标轴,视轴作为深度坐标轴,视线平行于线平行于Z轴,如图轴,如图3所示,则平面外法线同所示,则平面外法线同Z轴方轴方向的夹角,就是外法线同视线的夹角。向的夹角,就是外法线同视线的夹角。 很显然,对于单个凸多面体,当外法线同视线很显然,对于单个凸多面体,当外法线同视线的夹角小于的夹角小于90时,其平面背向观察点为不可见面。时,其平面背向观察点为不可见面。图图3第第8章章真真实实感感图图形形生生成成技技术术 设平面外法线同设平面外法线同Z轴方向的夹角为轴方向的夹角为,则,则cos为单为单位平面外法线矢量在位平面外法线矢量在Z轴上的分量。轴上的分量。角同可见性的关系为:角同可见性的关系为: (1)当)当 0 90 时,时,cos0,此面背向观察者,此面背向观察者为不可见面。为不可见面。 (2)当)当 90 时,时,cos0,此面平行于,此面平行于Z轴,轴,可以认为是不可见面。可以认为是不可见面。 (3)当)当 90 180 时,时,cos0,此面朝向观察,此面朝向观察者的,为可见面。者的,为可见面。 设平面方程为设平面方程为 Ax+By+Cz+D=0法向矢量为法向矢量为 NAiBjCk 则则cosC/|N|。作为判断依据,只需要知道。作为判断依据,只需要知道cos的正负号就够了。因为的正负号就够了。因为|N|恒大于恒大于 0,所以,所以cos的符的符号由号由C决定,因此,当决定,因此,当C0 时,为可见面。当时,为可见面。当C0时,为不可见面。时,为不可见面。第第8章章真真实实感感图图形形生生成成技技术术 由于三点可以构成一个平面,和三点可以构由于三点可以构成一个平面,和三点可以构成两个矢量,由两矢量的叉积可以求出平面的法成两个矢量,由两矢量的叉积可以求出平面的法线。线。 对于凸多面体,任取构成平面多边形的三个对于凸多面体,任取构成平面多边形的三个相邻点相邻点P0(x0,y0,z0),P1(x1,y1,z1),P2(x2,y2,z2),按右手,按右手规则确定点的顺序,此时有:规则确定点的顺序,此时有:)()(0112120112120101yyxxyyxxyyxxyyxxC 为了决定一个凸多面体的不可见面,对于每一为了决定一个凸多面体的不可见面,对于每一个面按上述公式进行计算,当个面按上述公式进行计算,当C0时为不可见面。时为不可见面。 对于对于单个凸多面体单个凸多面体,该方法可判别出所有隐藏,该方法可判别出所有隐藏面,因为每个面或是完全可见,或是完全不可见。面,因为每个面或是完全可见,或是完全不可见。对于其它形体,如凹多面体或由多个物体组成的复对于其它形体,如凹多面体或由多个物体组成的复杂形体,则还需进行更多的测试来检查是否存在被杂形体,则还需进行更多的测试来检查是否存在被其它面或其它物体完全或部分遮挡的表面。通常,其它面或其它物体完全或部分遮挡的表面。通常,凸多面体消隐处理可消除一半左右的隐藏面。凸多面体消隐处理可消除一半左右的隐藏面。第第8章章真真实实感感图图形形生生成成技技术术 8.1.2 画家算法画家算法 画家创作一幅画的过程是先画背景,然后画中画家创作一幅画的过程是先画背景,然后画中间景物,最后才画近景。这样,每一层总是在前一间景物,最后才画近景。这样,每一层总是在前一层的景物上覆盖,从而解决了隐藏面或可见性问题。层的景物上覆盖,从而解决了隐藏面或可见性问题。 采用同样的技术,首先将形体的所有面根据它采用同样的技术,首先将形体的所有面根据它们与观察点的距离排序,然后按距离递减顺序逐个们与观察点的距离排序,然后按距离递减顺序逐个将各面显示出来,由于当重迭时,后显示的画面会将各面显示出来,由于当重迭时,后显示的画面会覆盖先显示的画面,这样就可以实现消除隐藏面的覆盖先显示的画面,这样就可以实现消除隐藏面的目的。这种隐藏面消除算法通常称为目的。这种隐藏面消除算法通常称为画家算法画家算法。 画家算法也称画家算法也称表优先级算法表优先级算法或或深度优先排序算深度优先排序算法法。这种算法排序操作同时在对象空间和图象空间。这种算法排序操作同时在对象空间和图象空间完成,而在图象空间产生消隐图。实现时首先以深完成,而在图象空间产生消隐图。实现时首先以深度优先级进行排序,距观察点远的面优先级低,近度优先级进行排序,距观察点远的面优先级低,近的面优先级高,以此建立一张深度优先级表。然后的面优先级高,以此建立一张深度优先级表。然后按优先级表顺序将各面送入帧缓冲器进行显示。按优先级表顺序将各面送入帧缓冲器进行显示。第第8章章真真实实感感图图形形生生成成技技术术 深度优先级表的建立深度优先级表的建立是动态进行的。假定观察是动态进行的。假定观察方向同方向同Z轴同向,则最初可按各面的最小轴同向,则最初可按各面的最小z值排序。值排序。但这一初步排序可能出现差错,如图但这一初步排序可能出现差错,如图4所示的情况。所示的情况。图中尽管面图中尽管面S1的最小的最小z值小于面值小于面S2的最小的最小z值,但正值,但正确的顺序是面确的顺序是面S2位于面位于面S1前。因此在实际将前。因此在实际将z值最大值最大的面的面S写入帧缓冲器之前,需与其它面比较以确定是写入帧缓冲器之前,需与其它面比较以确定是否在否在Z方向存在重叠。若无重叠,则对方向存在重叠。若无重叠,则对S进行写入,进行写入,若存在重叠,则需作一些比较以决定是否有必要重若存在重叠,则需作一些比较以决定是否有必要重新排序。如果存在两面相交和循环遮挡,如图新排序。如果存在两面相交和循环遮挡,如图5中所中所示的情况,这时简单的排序是无法解决问题的,必示的情况,这时简单的排序是无法解决问题的,必须求交分割后再进行排序。须求交分割后再进行排序。图4图5第第8章章真真实实感感图图形形生生成成技技术术 下面给出这种算法过程的简单描述下面给出这种算法过程的简单描述 (1)计算各面最小)计算各面最小z值值zmin,并以此值的优先级进,并以此值的优先级进行排序,建立初步的深度优先表;行排序,建立初步的深度优先表; (2)表空结束。否则取表中深度最大的面)表空结束。否则取表中深度最大的面Sn,检查检查表中其它各面表中其它各面Sk(k=0,1,.,n-1)与与Sn是否在是否在Z方向存方向存在重叠的关系。存在,记重叠面为在重叠的关系。存在,记重叠面为Sj转转(3)。否则,。否则,将将Sn写入帧缓冲器,写入帧缓冲器,n=n-1转转(2); (3)检查检查Sn是否遮挡是否遮挡Sj,不遮挡则将,不遮挡则将Sn写入帧缓存写入帧缓存器,器,n=n-1转转(2)。否则,交换。否则,交换Sn和和Sj在表中位置,在表中位置,转转(2)。如果。如果Sn和和Sj已经交换过位置,则两面交叉遮已经交换过位置,则两面交叉遮挡,转挡,转(4); (4)用用Sn和和Sj的交线分割的交线分割Sn为两部分,转为两部分,转(1)。 画家算法的优点是简单,容易实现,缺点是算画家算法的优点是简单,容易实现,缺点是算法中的深度排序计算量大。法中的深度排序计算量大。第第8章章真真实实感感图图形形生生成成技技术术 8.1.3 深度缓冲器算法深度缓冲器算法 深度缓冲器算法深度缓冲器算法是一种图象空间消隐算法。由是一种图象空间消隐算法。由于一般采用于一般采用Z轴方向为观察方向,沿轴方向为观察方向,沿Z轴计算深度,轴计算深度,所以此方法也称为所以此方法也称为z缓冲器算法缓冲器算法。 它需要两个缓冲器,一个是深度缓冲器,用于它需要两个缓冲器,一个是深度缓冲器,用于保存表面上各象素点保存表面上各象素点(x,y)所对应的深度值所对应的深度值z,一个是,一个是刷新缓冲器,用于保存各点的属性值。两个缓冲器刷新缓冲器,用于保存各点的属性值。两个缓冲器的大小与屏幕上象素点的个数相同,也与显示器帧的大小与屏幕上象素点的个数相同,也与显示器帧缓冲器的单元个数相同。缓冲器的单元个数相同。 深度缓冲器算法的原理深度缓冲器算法的原理是,对一坐标是,对一坐标(x,y),查,查找最小的找最小的z(x,y)值。对每一象素计算值。对每一象素计算z(x,y)值并与已值并与已经存在经存在z缓冲器中该象素的原深度值缓冲器中该象素的原深度值z比较。如果比较。如果z(x,y)小于原小于原z值则替换原值,同时用当前点的属性值则替换原值,同时用当前点的属性更新原属性。算法的最大优点在于简单,它可轻而更新原属性。算法的最大优点在于简单,它可轻而易举地处理任意复杂的画面。因为图象空间的大小易举地处理任意复杂的画面。因为图象空间的大小是固定的,计算量最多随画面复杂度线性增长。是固定的,计算量最多随画面复杂度线性增长。第第8章章真真实实感感图图形形生生成成技技术术 深度缓冲器算法可描述如下深度缓冲器算法可描述如下: (1) 刷新缓冲器置成背景光强或颜色;刷新缓冲器置成背景光强或颜色; (2) 深度缓冲器置成最大深度缓冲器置成最大z值;值; (3) 以任意顺序扫描各多边形:以任意顺序扫描各多边形: 对于多边形中的每一象素对于多边形中的每一象素(x,y,z),将,将z(x,y)与深度缓与深度缓冲器中存储值冲器中存储值Zbuffer(x,y) 进行比较进行比较,若若z(x,y)Zbuffer(x,y),则将此点属性写入,则将此点属性写入刷新缓冲器,且用刷新缓冲器,且用z(x,y)重置重置Zbuffer(x,y); (4) 所有多边形都处理完后,显示消隐图。所有多边形都处理完后,显示消隐图。 深度缓冲器算法便于硬件实现。实际上,在当今生深度缓冲器算法便于硬件实现。实际上,在当今生产的大多数高档图形工作站,除了帧缓存外,还带有产的大多数高档图形工作站,除了帧缓存外,还带有用于消隐的深度缓存,从而克服了深度缓存算法占用用于消隐的深度缓存,从而克服了深度缓存算法占用大量存储单元的缺点。大量存储单元的缺点。第第8章章真真实实感感图图形形生生成成技技术术 8.1.4 区域细分算法区域细分算法 区域细分算法区域细分算法也称为也称为Warnock算法。这种算法在算法。这种算法在图像空间中实现。该算法充分利用图形的区域连贯性,图像空间中实现。该算法充分利用图形的区域连贯性,在连续的区域上确定可见线面及其属性。它既可以用在连续的区域上确定可见线面及其属性。它既可以用于消除隐藏线,也可以用于消除隐面,适用于解决多于消除隐藏线,也可以用于消除隐面,适用于解决多边形所表示的画面消隐问题。边形所表示的画面消隐问题。 区域细分算法的基本思想区域细分算法的基本思想是,把形体投影到全屏幕是,把形体投影到全屏幕窗口上,然后递归地分割窗口,直到窗口内仅包含单窗口上,然后递归地分割窗口,直到窗口内仅包含单个可见面或不包含任何面。算法先检测初始窗口是否个可见面或不包含任何面。算法先检测初始窗口是否包含图形,如果不包含,则按背景色显示,若窗口内包含图形,如果不包含,则按背景色显示,若窗口内只有单个面,则把该面显示出来。否则,当窗口内含只有单个面,则把该面显示出来。否则,当窗口内含有两个以上的面时,则把窗口等分成四个小窗口,对有两个以上的面时,则把窗口等分成四个小窗口,对每个小窗口再作上述同样的处理。这样反复地进行下每个小窗口再作上述同样的处理。这样反复地进行下去,如果窗口细分到象素大小,而窗口内仍有两个以去,如果窗口细分到象素大小,而窗口内仍有两个以上的面,这时不必再继续分割,只要取窗口内最近的上的面,这时不必再继续分割,只要取窗口内最近的可见面的颜色或所有可见面的平均色作为该象素的值。可见面的颜色或所有可见面的平均色作为该象素的值。第第8章章真真实实感感图图形形生生成成技技术术 细分过程如图细分过程如图6所示,算法每次将区域分割为四所示,算法每次将区域分割为四等分,类似于组织一棵四叉树。这样,即使是一个等分,类似于组织一棵四叉树。这样,即使是一个1024l024分辨率的窗口被细分分辨率的窗口被细分10次以后,也仅能次以后,也仅能使每个单元覆盖一个象素。使每个单元覆盖一个象素。图图6 6第第8章章真真实实感感图图形形生生成成技技术术 窗口与多边形面的相互关系可分为四种:内含、窗口与多边形面的相互关系可分为四种:内含、相交、包围和分离。内含指的是多边形全部落在窗相交、包围和分离。内含指的是多边形全部落在窗口内;相交指的是多边形一部分在窗口内,另一部口内;相交指的是多边形一部分在窗口内,另一部分在窗口外;包围是指窗口包含在多边形内;分离分在窗口外;包围是指窗口包含在多边形内;分离指的是多边形完全在窗口外。四种关系如图指的是多边形完全在窗口外。四种关系如图7所示。所示。图7第第8章章真真实实感感图图形形生生成成技技术术 我们可根据这四种关系来确定一个窗口是否需要我们可根据这四种关系来确定一个窗口是否需要继续细分。若以下条件之一为真,则无须再对窗口进继续细分。若以下条件之一为真,则无须再对窗口进行细分:行细分: 所有多边形均为窗口的分离多边形,此时窗口内所有多边形均为窗口的分离多边形,此时窗口内为空;为空; 在窗口内只有一个内含多边形;在窗口内只有一个内含多边形; 窗口只与一个多边形相交;窗口只与一个多边形相交; 窗口只被一个多边形所包围或包围多边形遮挡了窗口只被一个多边形所包围或包围多边形遮挡了其它所有多边形。其它所有多边形。 通过检查所有多边形的包围盒与窗口边界的关系通过检查所有多边形的包围盒与窗口边界的关系可以实现条件的检测。利用可以实现条件的检测。利用XY平面上的包围盒可平面上的包围盒可以判别内含多边形。窗口和多边形相交关系可以借助以判别内含多边形。窗口和多边形相交关系可以借助于裁剪算法来解决。利用平面方程计算可以测定所有于裁剪算法来解决。利用平面方程计算可以测定所有包围多边形、重叠多边形和内含多边形在窗口边界四包围多边形、重叠多边形和内含多边形在窗口边界四顶点处的深度值,若某多边形的深度值小于其它所有顶点处的深度值,若某多边形的深度值小于其它所有多边形,则条件结果为真。多边形,则条件结果为真。 第第8章章真真实实感感图图形形生生成成技技术术 区域细分算法可以借助于堆栈结构实现,算法描述如下:(1)将初始窗口入栈;(2) 栈空结束。否则,取出栈顶窗口转步骤(3);(3) 检测确定当前窗口与多边形关系,若 A条件为真,以背景颜色显示当前窗口,转步骤(2); B条件为真,多边形内区域,以该多边形颜色显示,其它区域以背景颜色显示,转步骤(2); C条件为真,相交多边形位于窗口内的区域以该多边形颜色显示,其它区域以背景颜色显示,转步骤(2); D条件为真,以包围多边形颜色显示当前窗口,转步骤(2); E条件均不满足,转步骤(4)。(4) 对当前窗口进行再细分,细分后的子窗口存入堆栈,转(2)。第第8章章真真实实感感图图形形生生成成技技术术 8.2 简单光照模型简单光照模型 当光照射到一个不透明的物体表面时,部分被反当光照射到一个不透明的物体表面时,部分被反射,部分被吸收并转化为热。射,部分被吸收并转化为热。 对一个透明的表面,部分入射光被反射,而另一对一个透明的表面,部分入射光被反射,而另一部分被透射。部分被透射。 其中,反射或透射部分的光使物体可见。如果入其中,反射或透射部分的光使物体可见。如果入射光全部被吸收,物体将不可见,该物体称为射光全部被吸收,物体将不可见,该物体称为黑体黑体。 一物体表面呈现的颜色是由物体表面向视线方一物体表面呈现的颜色是由物体表面向视线方向辐射的光能中向辐射的光能中各种波长的分布各种波长的分布所决定的。所决定的。 光能中被吸收、反射或透射的数量决定于光的波光能中被吸收、反射或透射的数量决定于光的波长和物体的表面特性。长和物体的表面特性。第第8章章真真实实感感图图形形生生成成技技术术 8.2 简单光照模型简单光照模型 由于光照射到物体表面产生的现象是很复杂的,由于光照射到物体表面产生的现象是很复杂的,它与光源的性质、形状、数量、位置有关,还与物体它与光源的性质、形状、数量、位置有关,还与物体的几何形状、光学性质、表面纹理等许多因素有关,的几何形状、光学性质、表面纹理等许多因素有关,甚至与人眼对光的生理与心理视觉因素有关,我们不甚至与人眼对光的生理与心理视觉因素有关,我们不可能把这一切都准确计算出来。可能把这一切都准确计算出来。 我们将讨论计算光强度的一些较为简单的方法,我们将讨论计算光强度的一些较为简单的方法,这些经验模型为计算物体表面某点处的光强度提供了这些经验模型为计算物体表面某点处的光强度提供了简单有效的途径,并能在许多应用场合获得较好的效简单有效的途径,并能在许多应用场合获得较好的效果。果。第第8章章真真实实感感图图形形生生成成技技术术 8.2.1 环境光环境光 在实际场景中,一个物体即使不直接暴露于光源在实际场景中,一个物体即使不直接暴露于光源之下,还会接收到从周围物体散射出来的光,这种光之下,还会接收到从周围物体散射出来的光,这种光是由于周围各物体被照明后多次反射所产生的。是由于周围各物体被照明后多次反射所产生的。 例如从墙壁、地板及天花板等反射回来的光。这例如从墙壁、地板及天花板等反射回来的光。这种光是一种分布光源,称为种光是一种分布光源,称为环境光环境光。第第8章章真真实实感感图图形形生生成成技技术术 8.2.1 环境光环境光 环境光的特点是照射在物体上的光来自周围各个环境光的特点是照射在物体上的光来自周围各个方向,又均匀地向各个方向反射。由于处理分布光源方向,又均匀地向各个方向反射。由于处理分布光源所需计算量甚大,通常将这种光所产生的效应简化为所需计算量甚大,通常将这种光所产生的效应简化为在各个方向都有均匀的光强度。在各个方向都有均匀的光强度。 这样,每个物体表面都得到同样大小的光照,且这样,每个物体表面都得到同样大小的光照,且反射光相对于该物体表面亦为常数,即反射光与观察反射光相对于该物体表面亦为常数,即反射光与观察方向和物体表面的朝向无关。方向和物体表面的朝向无关。 但不同物体的反射光强度取决于物体的表面特性,但不同物体的反射光强度取决于物体的表面特性,如果用如果用Ia表示环境光的大小,则表面上一点对环境光表示环境光的大小,则表面上一点对环境光的反射强度的反射强度Ie可表示为可表示为 IekaIa 0ka1式中式中ka为由物体表面材料属性决定的环境光反射系数。为由物体表面材料属性决定的环境光反射系数。第第8章章真真实实感感图图形形生生成成技技术术 8.2.2 漫反射光漫反射光 我们可以用光源来表示所有发出辐射能量的物我们可以用光源来表示所有发出辐射能量的物体,如灯泡或太阳。点光源是光源的最简单模型。体,如灯泡或太阳。点光源是光源的最简单模型。这种光源模型是对场景中比物体小得多的光源的合这种光源模型是对场景中比物体小得多的光源的合适的逼近。离场景足够远的光源,如太阳,也可用适的逼近。离场景足够远的光源,如太阳,也可用点光源模型来较好的模拟。我们在下面反射光的讨点光源模型来较好的模拟。我们在下面反射光的讨论中假定使用点光源模型。论中假定使用点光源模型。 从物体表面反射出来的光决定于光源中光的成从物体表面反射出来的光决定于光源中光的成分、光线的方向、光源的几何性质以及物体表面的分、光线的方向、光源的几何性质以及物体表面的朝向和表面的材料属性等。物体表面的反射光又可朝向和表面的材料属性等。物体表面的反射光又可分为漫反射光和镜面反射光。分为漫反射光和镜面反射光。漫反射光漫反射光可以认为是可以认为是光穿过物体表面并被吸收,然后重新发射出来的光,光穿过物体表面并被吸收,然后重新发射出来的光,漫反射光均匀地散布在各个方向,因此同观察者的漫反射光均匀地散布在各个方向,因此同观察者的位置无关。位置无关。第第8章章真真实实感感图图形形生生成成技技术术 朗伯(lambert)余弦定律总结了点光源所发出的光照射在一个完全漫反射体上时光的反射法则。根据朗伯定律,一个完全漫射体上反射出来的光强度同入射光与物体表面法线之间夹角的余弦成正比。即 IdkdIlcos 01式中Id为漫反射光强度;Il为从一点光源所发出的入射光的光强度;kd为决定于物体表面材料属性的漫反射系数,0kd1;为入射光与表面法向量之间的夹角,如下图所示。第第8章章真真实实感感图图形形生生成成技技术术 8.2.3 镜面反射光镜面反射光 除了漫反射,光源照射物体表面还会产生高光除了漫反射,光源照射物体表面还会产生高光或强光,这种现象称为或强光,这种现象称为镜面反射镜面反射。这种高光效果在。这种高光效果在光滑的物体表面上很明显,如磨光的金属表面光滑的物体表面上很明显,如磨光的金属表面,而而对于阴暗物体表面则效果较差。对于阴暗物体表面则效果较差。 镜面反射光是具有一定方向的反射光。镜面反镜面反射光是具有一定方向的反射光。镜面反射角等于入射角,它们位于表面的单位法向量射角等于入射角,它们位于表面的单位法向量N的的两侧,如图两侧,如图9所示。用所示。用R表示镜面反射方向的单位表示镜面反射方向的单位矢量,矢量,L表示指向点光源的单位矢量,表示指向点光源的单位矢量,V为指向视为指向视点的单位矢量,点的单位矢量, 是是V 与与R之间的夹角。对于一个之间的夹角。对于一个理想的镜面反射,入射光仅在镜面反射方向有反射理想的镜面反射,入射光仅在镜面反射方向有反射现象,即仅当现象,即仅当V与与R重合时才能观察到反射光,而重合时才能观察到反射光,而在其它方向都看不到反射光。对于这种光滑的反射在其它方向都看不到反射光。对于这种光滑的反射面,镜面的反射光强比漫反射的光强和环境光的光面,镜面的反射光强比漫反射的光强和环境光的光强高出很多倍。强高出很多倍。第第8章章真真实实感感图图形形生生成成技技术术 图9第第8章章真真实实感感图图形形生生成成技技术术 对于一般光滑表面,由于表面具有一定粗糙度,其表面实际上是由许多朝向不同的微小表面组成,镜面反射方向分布在R周围有限范围内。较光滑表面的镜面反射范围较小,而粗糙的物体表面则有较大的镜面反射范围。Phong提出一个计算镜面反射的经验公式,称为Phong模型。公式用余弦函数的幂次来模拟镜面反射光的空间分布,可表示为: IsksIlcosn 式中Is为镜面反射光强度;Il为入射光的光强度;ks为决定于物体表面材料属性的镜面反射系数,它是入射角和入射光波长的函数,很难精确得到,实际应用中常以美学观点或实验方法取一常数,0ks1;镜面反射光强度与cosn成正比,090,因而0cosn1。第第8章章真真实实感感图图形形生生成成技技术术 n为镜面反射光的会聚系数,其值同被观察物体表面的光滑度有关,会聚性好的光滑表面,如金属表面,n值较大,而粗糙表面如纸张表面的n值则较小。n值一般取12000,图10表示了n对镜面反射角度范围的影响。图10第第8章章真真实实感感图图形形生生成成技技术术 当视点取在镜面反射方向附近时,观察者接受到镜面反射光较强,而偏离这一方向观察时,接受到镜面反射光就会减弱,故高光随着观察者的位置变化而变化。另外,由于镜面反射光是经物体外表面直接反射而产生的,与漫反射光不同,高光具有与入射光同样性质,而与物体表面颜色无关。 若R与V已规格化为单位向量,则: IsksIl(RV)n 综上所述,从视点观察到物体表面上任一点处的颜色和亮度I应为反射光强度Ie、漫反射光强度Id及镜面反射光强度Is的总和,即 IIeIdIs将各入上式,则得 IkaIakdIl(NL)ksIl(RV)n 第第8章章真真实实感感图图形形生生成成技技术术 另外,反射光强度还和物体与点光源的距离d的平方成反比,即物体离光源愈远,显的愈暗。因此,若要得到真实感的光照效果,在光照明模型中必须考虑这一因素。然而,若采用因子1/d2来进行光强度衰减,简单的点光源照明并不总能产生真实感的图形。当d很小时,1/d2会产生过大的强度变化,而d很大时反射光强度项将无意义。另外,人对物体的视觉也同视点与物体的距离有关,因此综合考虑,可以用以下修正公式,它是根据经验,取同距离的关系为线性衰减。 IkaIaIl(kd(NL)ks(RV)n)/(d+K)常数项K为一调整常数,它的存在可以防止当d很小时1/d值太大。第第8章章真真实实感感图图形形生生成成技技术术 上式就是计算机图形学中通常使用的简单光照模型,也称为明暗函数,用它可以计算出物体表面上每一象素处的光强或明暗色调。上式的计算量是很大的,尤其是镜面反射方向矢量R的计算。使用矢量L与V间的半角矢量H来计算镜面反射范围可得到简化的Phong模型。只须以NH替代Phong模型中的点积VR。这等于用cos计算来替代cos,如图11所示。半角矢量可从下式计算得到: H(LV)/2替换后(8-8)可以写为: IkaIaIl(kd(NL)ks(NH)n)/(d+K)若观察点与光源离物体表面足够远,则V与L可以看作为常量,则H亦为常量。就是说只要计算一次H的值就可以,但R是随N变化而改变的,这就是用NH近似VR的好处。第第8章章真真实实感感图图形形生生成成技技术术 图11第第8章章真真实实感感图图形形生生成成技技术术 8.2.4 多点光源和颜色多点光源和颜色 若存在多个点光源,则物体表面上的反射光强度是各个点光源照射效果的线性相加,这时光照模型为: IkaIa (kd(NLi)ks(NHi)n) 其中,m为点光源的数目。大多数真实感图形均为彩色图形,要生成一幅彩色图形,需要用RGB三基色分量来标识光源强度和物体表面颜色,并根据光照模型来计算反射光中的RGB分量。但由于镜面反射光的颜色通常取决于入射光的颜色,因此计算RGB分量时ks取相同的常数值。将上式改写成RGB三个分量的形式为: IRkaRIaRIlR(kdR(NL)ks(NH)n)/(d+K) IGkaGIaGIlG(kdG(NL)ks(NH)n/(d+K) IBkaBIaBIlB(kdB(NL)ks(NH)n/(d+K)miiiliKdI1第第8章章真真实实感感图图形形生生成成技技术术 8.3 透明处理透明处理 前面介绍的光照模型假定所考虑的物体表面是前面介绍的光照模型假定所考虑的物体表面是不透明的。但有些物体是透明的,如水、玻璃等。不透明的。但有些物体是透明的,如水、玻璃等。一个透明物体的表面会同时产生反射光和折射光。一个透明物体的表面会同时产生反射光和折射光。 当光线从一种传播介质进入另一种传播介质时,当光线从一种传播介质进入另一种传播介质时,例如从空气进入水中时,光线会由于折射而产生弯例如从空气进入水中时,光线会由于折射而产生弯曲。曲。 光线弯曲的程度光线弯曲的程度由由Snell定律决定,该定律指出定律决定,该定律指出折射光线与入射光线位于同一平面内,而且入射角折射光线与入射光线位于同一平面内,而且入射角与折射角之间存在下列关系:与折射角之间存在下列关系: 1sin=2sin式中式中,1和和2分别为光线在第一种介质和第二种介质分别为光线在第一种介质和第二种介质中的折射率,中的折射率,为光线入射角,为光线入射角,为折射角,图为折射角,图12为为示意图。实际中,没有那种材料能够透过全部入射示意图。实际中,没有那种材料能够透过全部入射光,总有一部分被反射出去。光,总有一部分被反射出去。第第8章章真真实实感感图图形形生生成成技技术术 图12 入射与折射的关系第第8章章真真实实感感图图形形生生成成技技术术 光有光有规则透射规则透射和和漫透射漫透射。透明材料如玻璃等会产生规则透。透明材料如玻璃等会产生规则透射,透过透明材料观察物体仍然是清晰的。如果透射光线是发射,透过透明材料观察物体仍然是清晰的。如果透射光线是发散的,那么就会形成漫透射,发生漫透射的材料呈现朦胧的半散的,那么就会形成漫透射,发生漫透射的材料呈现朦胧的半透明状态。漫透射计算复杂,大多数光照模型仅考虑规则透射。透明状态。漫透射计算复杂,大多数光照模型仅考虑规则透射。 当要表示一个透明表面时,光强度计算公式必须进行修改,当要表示一个透明表面时,光强度计算公式必须进行修改,一方面要考虑由于透射的原因,表面反射光强度的减弱,另一一方面要考虑由于透射的原因,表面反射光强度的减弱,另一方面还要考虑表面背后物体的反射光穿过透明表面,对表面总方面还要考虑表面背后物体的反射光穿过透明表面,对表面总光强度的增加,如图光强度的增加,如图13所示。所示。 为了加速光强度的计算,简单的透明算法不考虑折射导致为了加速光强度的计算,简单的透明算法不考虑折射导致的路径变化,这样折射角总是与入射角相同,也不考虑光线在的路径变化,这样折射角总是与入射角相同,也不考虑光线在媒体中所经路线长度对光强的影响。对透明的可见面,取它与媒体中所经路线长度对光强的影响。对透明的可见面,取它与同它相距最近的另一表面光强的线性组合,则总的光强度可表同它相距最近的另一表面光强的线性组合,则总的光强度可表示为:示为: I=ktIt+(1-kt)Ic 0kt1 其中,其中,Ic为透明可见面的反射光强度,为透明可见面的反射光强度,It为透明可见面后第为透明可见面后第一个可见表面上的光强度。一个可见表面上的光强度。kt为透明可见面的透明度。为透明可见面的透明度。kt=0对对应不透明面,光线无透射。应不透明面,光线无透射。kt=1对应不可见面,光线全部透射。对应不可见面,光线全部透射。Ic和和It可用前面介绍的光照模型计算。可用前面介绍的光照模型计算。第第8章章真真实实感感图图形形生生成成技技术术 若若It所对应表面也是透明面,则上述算法可以递所对应表面也是透明面,则上述算法可以递归地使用,直到遇到一个不透明面或背景时为止。归地使用,直到遇到一个不透明面或背景时为止。 透明处理还可以用于显示复杂物体或空间的内部透明处理还可以用于显示复杂物体或空间的内部结构。为每一多边形表面均设一透明度,透明度的初结构。为每一多边形表面均设一透明度,透明度的初始值均取为始值均取为1,绘制出物体的外形消隐图。通过有选,绘制出物体的外形消隐图。通过有选择地将某些表面的透明度改为择地将某些表面的透明度改为0,即将它们当做看不,即将它们当做看不见的面处理,这样再次绘制画面时,就会显示出物体见的面处理,这