《第六章真实感图形生成技术.ppt》由会员分享,可在线阅读,更多相关《第六章真实感图形生成技术.ppt(36页珍藏版)》请在三一办公上搜索。
1、图形光照模型,真实感图形表示的两个方面:物体的精确图形表示场景中光照效果的适当的物理描述图形光照模型的三个主要方面:光照明模型:用于物体表面光照强度的计算面绘制算法:确定物体表面所有投影像素点的光照强度光照效果:透明性、纹理、阴影的处理,不同形状、颜色、位置的光源可以为一个场景带来不同的光照效果,简单光照模型,光源点光源:光线由光源向四周发散,这种光源模型是对场景中比物体小得多及离现场足够远的光源的合适的逼近。分布式光源:对光源大小与场景中面片相比不够小及近处光源光照效果的模拟。,当光照射到一个不透明的物体表面时,部分被反射,部分被吸收并转化为热。对一个透明的表面,部分入射光被反射,而另一部分
2、被透射。其中,反射或透射部分的光使物体可见。如果入射光全部被吸收,物体将不可见,该物体称为黑体。一物体表面呈现的颜色是由物体表面向视线方向辐射的光能中各种波长的分布所决定的。光能中被吸收、反射或透射的数量决定于光的波长和物体的表面特性。由于光照射到物体表面产生的现象是很复杂的,它与光源的性质、形状、数量、位置有关,还与物体的几何形状、光学性质、表面纹理等许多因素有关,甚至与人眼对光的生理与心理视觉因素有关,我们不可能把这一切都准确计算出来。我们将讨论计算光强度的一些较为简单的方法,这些经验模型为计算物体表面某点处的光强度提供了简单有效的途径,并能在许多应用场合获得较好的效果。,光的反射类型:漫
3、反射:粗糙物体表面上反射光向各个方向散射。特点:从各视角看到的光亮度几乎相同。镜面反射:光源产生的高光或强光。特点:在光滑物体表面很明显,对于粗糙物体表面则效果很差。环境光:在简单光照模型中,可以用环境光(背景光)来简单模拟从不同物体表面所产生的反射光的统一照明。没有空间或方向上的特征,在所有方向上和所有物体表面上投射的环境光数量都恒定不变。,漫反射:朗伯(lambert)余弦定律总结了点光源所发出的光照射在一个完全漫反射体上时光的反射法则。根据朗伯定律,一个完全漫射体上反射出来的光强度同入射光与物体表面法线之间夹角的余弦成正比。即 IdkdILcos 01(1)式中Id为漫反射光强度;IL为
4、从一点光源所发出的入射光的光强度;kd为决定于物体表面材料属性的漫反射系数,0kd1;为入射光与表面法向量之间的夹角,如下图所示。,反射光的光强度是光波长的函数,然而在简单的光照模型中,通常假定光波长为常数。若N为物体表面的单位法向量,L为从表面上一点指向点光源的单位矢量,则 cos=NL,则:IdkdIL(NL)(2),环境光 在实际场景中,一个物体即使不直接暴露于光源之下,还会接收到从周围物体散射出来的光,这种光是由于周围各物体被照明后多次反射所产生的。例如从墙壁、地板及天花板等反射回来的光。这种光是一种分布光源,称为环境光。环境光的特点是照射在物体上的光来自周围各个方向,又均匀地向各个方
5、向反射。由于处理分布光源所需计算量甚大,通常将这种光所产生的效应简化为在各个方向都有均匀的光强度。这样,每个物体表面都得到同样大小的光照,且反射光相对于该物体表面亦为常数,即反射光与观察方向和物体表面的朝向无关。但不同物体的反射光强度取决于物体的表面特性,如果用Ia表示环境光的大小,则表面上一点对环境光的反射强度Ie可表示为 IekaIa 0ka1(3)式中ka为由物体表面材料属性决定的环境光反射系数。,镜面反射光 除了漫反射,光源照射物体表面还会产生高光或强光,这种现象称为镜面反射。这种高光效果在光滑的物体表面上很明显,如磨光的金属表面,而对于阴暗物体表面则效果较差。镜面反射光是具有一定方向
6、的反射光。镜面反射角等于入射角,它们位于表面的单位法向量N的两侧,如图所示。用R表示镜面反射方向的单位矢量,L表示指向点光源的单位矢量,V为指向视点的单位矢量,是V 与R之间的夹角。对于一个理想的镜面反射,入射光仅在镜面反射方向有反射现象,即仅当V与R重合时才能观察到反射光,而在其它方向都看不到反射光。对于这种光滑的反射面,镜面的反射光强比漫反射的光强和环境光的光强高出很多倍。,对于一般光滑表面,由于表面具有一定粗糙度,其表面实际上是由许多朝向不同的微小表面组成,镜面反射方向分布在R周围有限范围内。较光滑表面的镜面反射范围较小,而粗糙的物体表面则有较大的镜面反射范围。Phong提出一个计算镜面
7、反射的经验公式,称为Phong模型。公式用余弦函数的幂次来模拟镜面反射光的空间分布,可表示为:IsksIlcosn(4)式中Is为镜面反射光强度;Il为入射光的光强度;ks为决定于物体表面材料属性的镜面反射系数,它是入射角和入射光波长的函数,很难精确得到,实际应用中常以美学观点或实验方法取一常数,0ks1;镜面反射光强度与cosn成正比,090,因而0cosn1。,n为镜面反射光的会聚系数,其值同被观察物体表面的光滑度有关,会聚性好的光滑表面,如金属表面,n值较大,而粗糙表面如纸张表面的n值则较小。n值一般取12000,下图表示了n对镜面反射角度范围的影响。,当视点取在镜面反射方向附近时,观察
8、者接受到镜面反射光较强,而偏离这一方向观察时,接受到镜面反射光就会减弱,故高光随着观察者的位置变化而变化。另外,由于镜面反射光是经物体外表面直接反射而产生的,与漫反射光不同,高光具有与入射光同样性质,而与物体表面颜色无关。若R与V已规格化为单位向量,则式(4)可改写为:IsksIl(RV)n(5)综上所述,从视点观察到物体表面上任一点处的颜色和亮度I应为反射光强度Ie、漫反射光强度Id及镜面反射光强度Is的总和,即 IIeIdIs(6)将各量代入上式,则得 IkaIakdIl(NL)ksIl(RV)n(7),多点光源和颜色 若存在多个点光源,则物体表面上的反射光强度是各个点光源照射效果的线性相
9、加,这时光照模型为:其中,m为点光源的数目。,大多数真实感图形均为彩色图形,要生成一幅彩色图形,需要用RGB三基色分量来标识光源强度和物体表面颜色,并根据光照模型来计算反射光中的RGB分量。但由于镜面反射光的颜色通常取决于入射光的颜色,因此计算RGB分量时ks取相同的常数值。将上式改写成RGB三个分量的形式为:计算出RGB三个基色分量的强度,用来控制RGB彩色显示器中相应的电子枪,就可以获得彩色图形。,面绘制模型,面绘制算法通过光照模型中的光强度计算来确定场景中物体表面的所有投影像素点的光强度,也称为面的明暗模型或光照模型;对场景中所有曲面投影位置的像素点根据光照模型来计算光强度值的过程称为面
10、绘制,表面法线的计算 但为了提高计算速度,一般用多边形平面逼近曲面。对于多边形平面,可根据其平面方程的系数,决定平面的法向量,平面内所有点的法向量是相同的。而多边形平面在顶点处的法向量可取包围该顶点的各多边形平面法向量的平均值。如图中,顶点V处的近似法向量为:NV(N1N2.Nn)/n其中,n为包围顶点的平面个数,图中示例n=4。,但多边形一般是由顶点和棱边存储的,在各多边形平面方程未知的情况下,顶点处的法向量可取交于此顶点的各棱边叉积的平均值。如图中,顶点V处的法向量可由下式计算:NVVV1VV2VV2VV3VV3VV4VV4VV1上式近似法向量的模依赖于围绕顶点的各多边形棱边数和长度。多边
11、形愈大,棱边愈长,模愈大,实际使用中应该单位化。,当观察画面上具有相同光强度的区域时,在其边界处眼睛所感受到的明亮度常常会不同于实际值。眼睛的这一视觉特性使得光强度为常数的区域看上去似乎是光强度发生了变化,这一现象称之为马赫(Mach)带效应。在光强度发生急剧变化的地方会出现马赫带效应,这时常显得更亮或更暗。对于多边形平面,每一点的光强度由相应多边形的法向量决定,则在两多边形平面的交界处,光强度会发生急剧改变,产生马赫带效应。马赫带效应影响图形的真实感,利用下面介绍的两种明暗处理方法都可不同程度的改善这一现象。,Gouraud光强度插值方法 这种由Gouraud提出的光强度插值方法通常被称为G
12、ouraud明暗处理。该方法先计算出各多边形顶点处的光强度值,然后再采用双线性插值方法确定多边形平面上每一点处的光强度值。由于两相交多边形平面边界上的光强度值被同时用于两平面内点的光强度插值计算,这样就消除了在多边形平面绘制中存在的光强度不连续现象。多边形顶点处的法向量可以计算得到,然后可以根据光照模型来确定顶点处的光强度值,再使用二次线性插值求出其它点的光强度。具体计算办法如图所示,假设多边形三个顶点的光强度值已经计算出,分别记为I1,I2,I3。如要计算扫描线上点P的光强度值,先用I1,I2,I3第一次线性插值计算扫描线与三角形交点R和Q点的光强度值:,图A,式中x,y为各点投影到屏幕后的
13、坐标。上面各次线性插值还可以改成增量的形式,例如改为:,0t1,采用Gouraud明暗处理解决了两多边形平面之间光强度的不连续过渡以及多边形平面域内光强度单一的问题,而且计算速度较之简单光照模型有明显的提高。但此方法对漫射效果好,对镜面反射效果差。主要表现在高光域的形状不规整,高光域只能在顶点周围形成,不能在多边形域内形成。,Phong 法向量插值方法 Phong提出了对法向量而不是光强度进行插值的方法。在多边形平面上各点处按照线性插值计算法向量,然后根据光照模型计算光强度。该方法通常被称为Phong明暗处理。它能够更真实地表现物体表面镜面反射效果并大大降低马赫带效应。这种方法与Gouraud
14、方法一样,首先计算多边形每个顶点的法向量,然后应用与Gouraud光强度插值计算类似方法求得每个点处的法矢量。如图B,假设三个顶点处的法向量已经计算出,分别记为N1,N2,N3。如果要计算点P处的法向量NP,先用N1,N2,N3线性插值计算R和Q这两点处的法向量NR和NQ,然后再利用NR和NQ线性插值计算NP。,图B,Phong明暗处理对法向量插值的方法,比Gouraud明暗处理中对光强度插值法所得到的结果精确得多。法向量插值可以生成高光,真实感更强。然而,法向量插值计算量较大,既要计算各项点的法向量,插值计算多边形平面上各点的法向量,还要用光照模型计算各点的光强度值。,两种方法的比较,Pho
15、ne方法可以产生正确的高光区域,Gouraud Phone,阴影处理 当观察方向与光源方向重合时,观察者是看不到阴影的。只有当两者方向不一致时,才会看到阴影。阴影使人感到画面上景物的远近深浅,从而极大地增强画面的真实感。阴影一般分为两类:自身阴影和投射阴影。物体本身遮挡而使光线照不到某些面称自身阴影。投射阴影有本影和半影之分。我们观察一个物体影子时,可以看到位于中间全黑的轮廓分明部分就是本影。本影周围半明半暗的区域为半影。本影是所有光源的光线照不到的区域,而半影则为可接收到分布光源部分光线的区域。如果只有一个点光源或平行光,将只产生本影。如果在有限距离内有分布光源,将同时形成本影和半影。为避免
16、大量计算,通常只考虑由点光源形成的本影。,自身阴影和投射阴影,由于阴影是光线照射不到而观察者却可见到的区域,所以在画面中生成阴影的过程基本上相当于二次消隐,一次是对光源消隐,另一次是对视点消隐。生成自身阴影的过程如下:(1)首先将视点置于光源位置,用相同于消除隐藏面的方法找出光线照不到的面;(2)然后按实际的视点位置和观察方向,对物体进行消隐。投射阴影是由于物体遮挡光线,使场景中位于它后面的物体或区域受不到光线照射而形成的。投射阴影可从光源投射光线将所有非自隐藏面投影到场景中而得到。投影面与场景中其它平面的交线组成阴影多边形,这只需先找到物体的轮廓线并将它对场景作投影,而不必将所有非自隐藏面都
17、投影到场景中。在得到阴影信息后,就可利用光照模型计算得到有阴影效果的图形。若选用简单光照模型,并只有点光源,则阴影由于不能得到光源的直接照射,只有环境光对其亮度有贡献。另外,阴影决定于光源的位置而与观察者位置无关。一旦对所有光源确定出阴影区域。只要光源位置不变,则对于任意选定的观察位置,由隐藏面算法所生成的阴影均是正确的。,前面介绍的光照模型假定所考虑的物体表面是不透明的。但有些物体是透明的,如水、玻璃等。一个透明物体的表面会同时产生反射光和折射光。当光线从一种传播介质进入另一种传播介质时,例如从空气进入水中时,光线会由于折射而产生弯曲。光线弯曲的程度由Snell定律决定,该定律指出折射光线与
18、入射光线位于同一平面内,而且入射角与折射角之间存在下列关系:1sin=2sin式中,1和2分别为光线在第一种介质和第二种介质中的折射率,为光线入射角,为折射角,下图为示意图。实际中,没有哪种材料能够透过全部入射光,总有一部分被反射出去。,透明处理,入射与折射的关系,光有规则透射和漫透射。透明材料如玻璃等会产生规则透射,透过透明材料观察物体仍然是清晰的。如果透射光线是发散的,那么就会形成漫透射,发生漫透射的材料呈现朦胧的半透明状态。漫透射计算复杂,大多数光照模型仅考虑规则透射。当要表示一个透明表面时,光强度计算公式必须进行修改,一方面要考虑由于透射的原因,表面反射光强度的减弱,另一方面还要考虑表
19、面背后物体的反射光穿过透明表面,对表面总光强度的增加。为了加速光强度的计算,简单的透明算法不考虑折射导致的路径变化,这样折射角总是与入射角相同,也不考虑光线在媒体中所经路线长度对光强的影响。对透明的可见面,取它与同它相距最近的另一表面光强的线性组合,则总的光强度可表示为:I=ktIt+(1-kt)Ic 0kt1其中,Ic为透明可见面的反射光强度,It为透明可见面后第一个可见表面上的光强度。kt为透明可见面的透明度。kt=0对应不透明面,光线无透射。kt=1对应不可见面,光线全部透射。Ic和It可用前面介绍的光照模型计算。,若It所对应表面也是透明面,则上述算法可以递归地使用,直到遇到一个不透明
20、面或背景时为止。透明处理还可以用于显示复杂物体或空间的内部结构。为每一多边形表面均设一透明度,透明度的初始值均取为1,绘制出物体的外形消隐图。通过有选择地将某些表面的透明度改为0,即将它们当做看不见的面处理,这样再次绘制画面时,就会显示出物体的内部结构。,光线跟踪算法 前面介绍的光照模型仅考虑了光源直接照射在物体表面产生的反射和折射光能,忽略了光能在环境景物之间的传递。一般来说,物体表面入射光除来自光源外,还有来自相邻的不同景物表面的反射光。简单光照模型将周围环境对物体表面光强度的贡献概括成一均匀入射的环镜光分量,并用一常数表示,忽略了来自环境的镜面反射光和漫射光,使图形真实性受到影响。为了增
21、加图形的真实感,必须考虑环境的漫射、镜面反射和透射对物体表面产生的光照效果。二十世纪80年代初出现的光线跟踪方法,就是这样的方法。光线跟踪方法是基于几何光学的原理,通过模拟光的传播路径来确定反射、透射和阴影等。由于每个象素都单独计算,故能更好地表现曲面细节。,*光线跟踪算法 除光源直接照射所产生的反射光强度外,光线跟踪算法还考虑了来自环境的漫射、镜面反射和透射对物体表面产生的光强度,其光照模型是由Whitted提出的,表示式如下:II1RsIsRtIt 其中,I1是不考虑环境影响时,由简单光照模型计算的光强度;Is是在镜面反射方向上来自其它物体的光强度;It是在折射方向上来自其它物体的光强度;
22、Rs和Rt分别表示物体表面的反射系数和透射系数。此式也称为整体光照模型。,光线跟踪算法利用光线可逆性原理,不是从光源出发,而是从视点出发,沿其视线方向追踪,模拟光的反射和透射,通过对每个象素分别计算光强度来生成图形。如图19所示。,以光线跟踪本质上是个递归算法,每个像素的光强度必须综合各级递归计算的结果才能获得。光线跟踪结束的条件有三个,光线与光源相交、光线与背景相交以及被跟踪的光线对交点处的光强度作用趋近于0。光线跟踪过程可用一棵二叉树(称为光线跟踪树)来表示。逐个将相交点加入到二叉树中,树的左分支表示反射光线,右分支表示透射光线。光线跟踪树的最大深度可由用户选定,或由存储容量决定。当树中的一束光线到达光源、背景或预定的最大深度时,就停止跟踪。在计算像素点的光强度时,需从叶结点开始由底向上遍历相应的二叉树,在树的每一个结点处,递归地调用整体光照模型公式,累计光强度贡献直到二叉树根结点。,