1、2022-6-81光照明模型及表面绘制算法(Illumination & surface rendering)2022-6-82本节内容 一、光照明模型一、光照明模型二、二、曲面绘制算法曲面绘制算法三、三、阴影生成阴影生成2022-6-83问题的提出)coscos(1insidliiMiaakkIfIkI已知:表面上一点的光亮度值计算公式:sjisjiijiVNDKEVNdLNDKII)( )()(求表面绘制结果仅有光照模型是不够的!或2022-6-84绘制方法对表面上不同点应用光照公式的过程称为明暗处理(shading )过程,或称为绘制或渲染(rendering)过程绘制方法局部光照模型的
2、绘制Gouraud Shading phong Shading全局光照模型的绘制光线跟踪(ray tracing)方法辐射度方法(Radiosity method)2022-6-85Gouraud 明暗处理 原理:在表面点集的子集上使用光照明公式,计算该点的光亮度值;在其它点上的光亮度值可通过已计算点的光亮度值插值计算得到实现步骤:表面多边形网格表示(常用三角网格)在网格顶点处应用光照模型计算其光亮度值对顶点光亮度值进行插值得到网格内部点的光亮度值2022-6-86三角网格表示的表面顶点数18429,三角形36858顶点数26101,三角形500002022-6-87网格顶点光亮度的计算关于顶
3、点法向已知未知:定义为其相邻面片的法向的平均值)coscos(1insidliiMiaakkIfIkI2022-6-88网格内点光亮度的双线性插值加速计算?假设光亮度值线性变化2022-6-89续:2112IIIIyy更进一步,引入增量计算增量计算加速插值计算速度已知y扫描线上端点的亮度为I,则y-1扫描线上端点的亮度为:2022-6-810优缺点分析光亮度的线性插值算法:优点克服了常数绘制模式带来的亮度不连续问题缺点不能正确模拟高光效果产生马赫带(Mach bands)效应光亮度变化不连续的边界处呈现亮带或黑带2022-6-811Phong明暗处理思想:对表面上的每一点应用光照模型步骤:对离
4、散的法向量采样作双线性插值,构造连续的法向量函数;将连续的法向插值函数代入光亮度计算公式,得到一个非线性的光亮度插值公式。2022-6-812图示2022-6-813加速shading技术当使用三角形表示物体表面时,可使用三角形插值加速计算。xyp)0 , 0(1p)0 , 1 (2p) 1 , 0(3p建立三角形仿射坐标系222111cybxacybxa仿射坐标变换公式2022-6-814续:则在仿射坐标下,光亮度双线性插值公式可写为:321)1 (),(IIIyxI11IN22IN33IN代入仿射坐标变换公式,得到:121322112132211213221)1 ()()(),(IccIc
5、IcCIbbIbIbBIaaIaIaACByAxyxI其中上式可容易地使用增量法进行计算2022-6-815续:同样可进行法向量的双线性插值计算:121322112132211213221321)1 ()()()1 (),(NccNcNcCNbbNbNbBNaaNaNaACByAxNNNyxN其中2022-6-816全局光照明模型的绘制算法光线跟踪(Ray tracing)辐射度方法(Radiosity method)2022-6-817基本原理快速算法:快速算法:基于层次包围盒的快速光线跟踪算法基于层次包围盒的快速光线跟踪算法基于空间剖分的快速光线跟踪算法基于空间剖分的快速光线跟踪算法光线跟
6、踪算法 2022-6-818Durers 投射机(Ray casting machine)Albrecht Durer, 16th 世纪2022-6-819Durers Ray casting machine2022-6-820投射法步骤从眼睛向每一个像素构造射线对场景中的每一个对象找到与相应射线相交与眼睛最近的交点计算该交点的法线方向在该点应用光照明模型 (如 Phong)光线跟踪的基本原理光线跟踪的基本原理DtABsAcAAIkIkII问题:问题:1 1)如何寻找)如何寻找B B,D D:光线跟踪:光线跟踪 2 2)如何计算)如何计算I IB B,I ID D:递归过程:递归过程 3 3)
7、受遮挡时的计算:阴影测试)受遮挡时的计算:阴影测试 眼睛 光线跟踪终止条件光线跟踪终止条件视线射出画面,不再与场景中的景物相交视线射出画面,不再与场景中的景物相交被跟踪的结点对屏幕象素显示光亮度的贡献小被跟踪的结点对屏幕象素显示光亮度的贡献小于一定阈值于一定阈值达到光线跟踪的最大深度达到光线跟踪的最大深度 眼睛 2022-6-823算法描述算法描述1 1由视点向屏幕上所有象素中心发射光线;由视点向屏幕上所有象素中心发射光线; 2 2每一根光线与场景中所有景物求交,找到最近每一根光线与场景中所有景物求交,找到最近的交点;的交点; 3 3计算该点处由光源直接照射产生的光亮度计算该点处由光源直接照射
8、产生的光亮度I Il l; 4 4若该点处表面为镜面或透射面,则作递归光线若该点处表面为镜面或透射面,则作递归光线跟踪,计算周围环境通过该点向观察者方向投跟踪,计算周围环境通过该点向观察者方向投射的整体镜面反射光亮度射的整体镜面反射光亮度I Ir r和透射光亮度和透射光亮度I It t; 5 5显示每一象素处的光亮度显示每一象素处的光亮度 trlIIII2022-6-824算法分析算法分析求交计算量占整个光线跟踪计算量求交计算量占整个光线跟踪计算量90%90%以上以上 减少求交计算量的方法减少求交计算量的方法 包围盒方法包围盒方法 空间剖分方法空间剖分方法 2022-6-825基于层次包围盒的
9、快速光线跟踪算法基于层次包围盒的快速光线跟踪算法包围盒:以简单的测试代替光线对包围盒内所含景包围盒:以简单的测试代替光线对包围盒内所含景物的复杂求交运算物的复杂求交运算目标:目标: 快速剔除不交的物体快速剔除不交的物体对包围盒形状的要求:对包围盒形状的要求: 包裹要紧密包裹要紧密 求交测试要简便求交测试要简便 问题转化为:问题转化为: 包围盒的构造包围盒的构造 光线与包围盒求交光线与包围盒求交2022-6-826思考题包围盒的形状选择包围球包围盒的求交测试顶点包含在多边形内的测试层次包围盒的构造原则。2022-6-827基于空间剖分的快速光线跟踪算法基于空间剖分的快速光线跟踪算法算法基本流程算
10、法基本流程将空间划分为网格,光线只与它将空间划分为网格,光线只与它 所穿过的空间网格中所含景物进行求交所穿过的空间网格中所含景物进行求交利用空间网格的邻接性质,引导光线从一个网格进利用空间网格的邻接性质,引导光线从一个网格进入它将穿过的下一网格入它将穿过的下一网格一旦发现光线与景物的第一个交点,即结束求交。一旦发现光线与景物的第一个交点,即结束求交。 2022-6-828问题空间网格的划分技巧?表示空间网格的数据结构如何构造?如何通过预处理过程加速显示过程?。2022-6-829绘制实例2022-6-830光线跟踪算法的特点优点:真实感:考虑了环境中各物体之间的反射影响;实现了消隐:在光线跟踪
11、过程中自然实现了消隐;可实现阴影效果:从表面上一点向光源发射一条阴影探测线。如果该光线在到达光源之前与场景中的任意不透明面相交,则该点处于阴影中,反之不然。可并行实现:各条光线的处理过程可独立进行。缺点:计算量非常大,显示速度慢依赖视点,当视点改变时需要重新计算(如何改进?)2022-6-831光能辐射度方法与视点无关的绘制方法!光能辐射度方法步骤辐射度方程的建立形状因子的求解辐射度方程的求解画面绘制光能辐射度方程逐步求精算法2022-6-832漫射场景的光能辐射度方程漫射场景的光能辐射度方程 假定场景为一封闭的理想漫反射环境假定场景为一封闭的理想漫反射环境 对于场景中任一面片对于场景中任一面
12、片j, j, B Bj j = E = Ej j+j j H Hj j 其中:其中: 为面片为面片j j单位面积上向四周辐射的辐射度单位面积上向四周辐射的辐射度 为面片为面片j j自身向外均匀发射的光能自身向外均匀发射的光能 为面片为面片j j的漫反射系数的漫反射系数 为面片为面片j j单位面积从周围环境接受的总的光能单位面积从周围环境接受的总的光能 jBjEjjH280.cosppIdIB彭群生等实感图形的算法基础推导过程见计算机真注:2022-6-833 计算计算: : jH 是周围环境其它面片辐射度是周围环境其它面片辐射度 ( )( )的的函数,函数, jHiBjiNi , 1面片面片i
13、 i向四周辐射的总的光能为向四周辐射的总的光能为B Bi iA Ai i , ,其中一部分到达面片其中一部分到达面片j j,记为,记为B Bi iA Ai iF Fijij 到达面片到达面片j j单位面积上的光能为单位面积上的光能为B Bi iA Ai iF Fijij /A /Aj j ,故故NijijiijAFABH1NijijiijjjAFABEB12022-6-834F Fijij 的计算的计算 F Fijij 称为面片称为面片i 对面片对面片j 的形状因子,的形状因子, 现在考虑面元现在考虑面元dAi 对面元对面元dAj 的形状因子,的形状因子,面元面元dAi 向四周辐射的总的光能向
14、四周辐射的总的光能B Bi idAi在无遮挡的情况下,面元在无遮挡的情况下,面元dAi 向面元向面元dAj 辐射的光能为辐射的光能为cosiiiijidB dAIddA ijjiidArdAI2coscosjijiidAdArI2coscos2022-6-835由定义由定义 jjiiiiiiidAdAdArBIdABdAdBFji2coscosjjidAr2coscos对对A Aj j积分得积分得 jjiAjjiAdAdArF2coscos对对A Ai i取平均,即取平均,即 ijjiA AijjiiAAdAdArAF2coscos12022-6-836推论推论: 1 1 jijijiFAFA
15、即即 jijijiAFAF故故 NijiijjjFBEB1(标准辐射度方程)(标准辐射度方程) 2 2 11NjijFNijiijjjFIeI1), 1(Ni 3 3标准辐射度方程两端同除以标准辐射度方程两端同除以 ,得场景各,得场景各面片的光亮度方程面片的光亮度方程 计算形状因子的半立方体方法计算形状因子的半立方体方法形状因子计算公式的几何解释:形状因子计算公式的几何解释: d dA Aj j 对单位半球面作中心投影,其投影区域为对单位半球面作中心投影,其投影区域为 2cosrdAjj该区域垂直投影到半球的底平面上,其投影面积为该区域垂直投影到半球的底平面上,其投影面积为 icos)( 与底
16、平面圆面积之比为与底平面圆面积之比为 ,即,即 。icos)( jjidAr2coscosNiidSiSjSj取取A Ai i的中心点为球心,的中心点为球心,在在A Ai i上方建立一单位半球面。上方建立一单位半球面。jjidAr2coscos2022-6-838引申:对任何在半球面上占据相同投影区域的面片引申:对任何在半球面上占据相同投影区域的面片Ak,面片面片Ai对它们具有相同的形状因子,即对它们具有相同的形状因子,即 ijikFF思路:寻找面片思路:寻找面片Ak,Ak的表面形状,朝向较为规范,的表面形状,朝向较为规范, 计算计算 比较容易,从而将比较容易,从而将F Fijij 的计算转换
17、的计算转换 为为F Fikik的计算。的计算。 2coscosrji2022-6-839 最规范的表面是围绕最规范的表面是围绕Ai ,位于,位于Ai上方的半立方体,上方的半立方体,立方体顶平面与面片立方体顶平面与面片Ai的法向垂直。因此,只要将面的法向垂直。因此,只要将面片片Aj投影到半立方体表面上,投影到半立方体表面上,Ai对其投影面积的形状对其投影面积的形状因子即为因子即为F Fijij。 将半立方体各表面离散为均匀网格,假定每一网格上将半立方体各表面离散为均匀网格,假定每一网格上各点的形状因子不变。面片各点的形状因子不变。面片Ai对每一网格的形状因子对每一网格的形状因子称为半立方体表面的
18、微形状因子。称为半立方体表面的微形状因子。 面片面片Ai对对Aj的形状因子归结为两个问题。第一,确定的形状因子归结为两个问题。第一,确定Aj在半立方体表面上所占网格;第二,计算每一网格在半立方体表面上所占网格;第二,计算每一网格的微形状因子。的微形状因子。 2022-6-840确定确定Aj在半立方体表面上的投影在半立方体表面上的投影 取景变换和背面标志,将取景变换和背面标志,将Aj变换变换到以到以Ai为中心的半立方体局部坐为中心的半立方体局部坐标系中。标系中。 dSiQSjq 对对Aj作区域裁剪,以确定它投影到半立方体哪些表面作区域裁剪,以确定它投影到半立方体哪些表面上。上。 裁剪平面:裁剪平
19、面:z=x,z=-x,z=y,z=-y,x=y,x=-yz=x,z=-x,z=y,z=-y,x=y,x=-y。 z-bufferz-buffer消隐消隐 z-bufferz-buffer中存储各网格的可见面号,而不是其深度值,中存储各网格的可见面号,而不是其深度值,故又称故又称item-bufferitem-buffer。被遮挡的表面形状因子为零。被遮挡的表面形状因子为零。 2022-6-841xtopxsidezx yAsidezsiderijdSiyside=1ytopztop=1rijAtopqq计算每一网格的形状因子计算每一网格的形状因子对于位于半立方体顶面网格对于位于半立方体顶面网格
20、122yxrrji1coscos2222) 1( coscosyxAArFjiq2022-6-842对于位于半立方体侧面网格对于位于半立方体侧面网格(以左侧面为例)(以左侧面为例) 122zyrrzicosrj1cosAzyzArFjiq2222) 1(coscos由于半立方体表面各网格与其中心的相对方位是固定由于半立方体表面各网格与其中心的相对方位是固定的,故可预先将半立方体表面各网格的微形状因子计的,故可预先将半立方体表面各网格的微形状因子计算好,存储在一查找表中备用。算好,存储在一查找表中备用。 xtopxsidezx yAsidezsiderijdSiyside=1ytopztop=1
21、rijAtopqq2022-6-843辐射度方程的求解(1 1)由形状因子组成的系数矩阵主对角占优,可迭)由形状因子组成的系数矩阵主对角占优,可迭代求解。可取各面片之代求解。可取各面片之E Ei i作为迭代初值,一般作为迭代初值,一般迭代迭代6 68 8次即可收敛。次即可收敛。(2 2)对红、绿、蓝三原色分别求解辐射度方程)对红、绿、蓝三原色分别求解辐射度方程( E Ej j , ,j j与光谱分布有关)。与光谱分布有关)。(3 3)采用插值与平均方法将各面片中心的辐射度转)采用插值与平均方法将各面片中心的辐射度转换为各面片顶点处的辐射度。换为各面片顶点处的辐射度。NijiijjjFBEB12
22、022-6-844辐射度方法流程输入场景将各景物表面剖分为小平面片计算面片间的形状因子求解辐射度方程画面绘制改变视点或视线方向2022-6-845 选定视点和视线方向对场景中的景物作取景变换选定视点和视线方向对场景中的景物作取景变换 采用光线投射或扫描线算法,确定屏幕上每一象采用光线投射或扫描线算法,确定屏幕上每一象素中的可见面。素中的可见面。 采用双线性插值方法,确定象素中心处表面采样采用双线性插值方法,确定象素中心处表面采样点的辐射度点的辐射度 画面显示画面显示续:画面绘制续:画面绘制2022-6-846问题问题: :该方法的重要步骤该方法的重要步骤-计算形状因子计算形状因子, ,确确定系
23、数矩阵定系数矩阵, ,计算量存储量均为计算量存储量均为O O(N(N2 2) ),这,这个计算量占整个方法的个计算量占整个方法的90% , 90% , 任何有用的任何有用的结果和画面显示都必须在系数矩阵确定后结果和画面显示都必须在系数矩阵确定后才能生成,才能生成,显示速度慢显示速度慢!光能辐射度方法存在的问题2022-6-847 光能辐射度逐步求精算法光能辐射度逐步求精算法图形学发展的两根主线图形学发展的两根主线: : 追求画面生成的真实感和实时性追求画面生成的真实感和实时性 在追求真实感方面在追求真实感方面由线画图形由线画图形-消隐图形消隐图形-连续色调光栅图形连续色调光栅图形由多边形图形由
24、多边形图形-Gouraud shading - Phong-Gouraud shading - Phong shading shading 由由LambertLambert模型模型- Phong- Phong 模型模型 -整体光照模型整体光照模型由扫描线算法由扫描线算法-光线跟踪算法光线跟踪算法-光能辐射度方法光能辐射度方法 在追求画面实时生成方面在追求画面实时生成方面硬件支持绘制处理硬件支持绘制处理景物细节简化技术景物细节简化技术基于图象的绘制基于图象的绘制逐步求精的画面生成算法逐步求精的画面生成算法 2022-6-848逐步求精画面的绘制算法的特点 一开始就生成画面一开始就生成画面, ,包
25、含有用的视觉信息。包含有用的视觉信息。 画面由粗糙逐步变得精细画面由粗糙逐步变得精细, ,真实感不断增强。真实感不断增强。 每一步的计算都利用了前面步骤的计算结果。每一步的计算都利用了前面步骤的计算结果。2022-6-849光能辐射度方程的迭代形式光能辐射度方程的迭代形式NjijkjikikiFBEB11kikikiBBB11令令NjijkjikiFBB11则则分析分析: : 上述方程表明上述方程表明 , , 每一面片的辐射度增量应为其他每一面片的辐射度增量应为其他面片向它入射的光能的线性组合面片向它入射的光能的线性组合 , , 这一过程称之这一过程称之为为GatheringGathering
26、。每一步迭代的代价每一步迭代的代价在在接受面片接受面片i i上建立一个半立方体,上建立一个半立方体, 计算计算n n个形状个形状因子(所有因子(所有F Fijij)。更新一个面片)。更新一个面片(i)(i)的辐射度。的辐射度。2022-6-850 在方程右侧的和式中,选择对刷新在方程右侧的和式中,选择对刷新 贡献最大贡献最大的一项的一项 , 取面片取面片j j 作为辐射源,则作为辐射源,则1kiBijkjFB1(Due to ) =1kiBkiBijjikjiAAFB/每一步迭代的效果每一步迭代的效果 在在辐射源面片辐射源面片j j上建立一个半立方体,计算上建立一个半立方体,计算n n个形个形
27、状因子(所有状因子(所有F Fjiji), ,场景中大部分面片的辐射度均场景中大部分面片的辐射度均有所更新。有所更新。这一过程称之为这一过程称之为ShootingShooting。改进改进NjijkjikiFBB112022-6-851逐步求精算法描述逐步求精算法描述1 1)确定辐射源面片)确定辐射源面片j j 2 2)在面片)在面片j j上建立半立方体,计算面片上建立半立方体,计算面片j j对所有其对所有其他面片的形状因子他面片的形状因子F Fjiji 3 3)对在场景中的每一个面片)对在场景中的每一个面片i i ijjijiAAFBRad/RadBBiiRadBBii/ /* *每一面片所
28、积聚的光能增加每一面片所积聚的光能增加* */ / / /* *每一面片的当前辐射度值,供显示每一面片的当前辐射度值,供显示* */ / 4 4) B Bj j = 0 = 0 / /* *面片面片j j上所积聚的光能辐射完毕,清零上所积聚的光能辐射完毕,清零* */ /对于每一次迭代对于每一次迭代2022-6-852确定辐射源面片确定辐射源面片 累计在各次迭代中,累计在各次迭代中, 每一面片所积聚的光能每一面片所积聚的光能 取具有最大积聚光能的面片作为下一次迭代的辐射源取具有最大积聚光能的面片作为下一次迭代的辐射源第一次迭代初值:第一次迭代初值: 取取 BBi i = E= Ei i2022
29、-6-853上述逐步迭代过程可能导致画面上那些不受光源直接照上述逐步迭代过程可能导致画面上那些不受光源直接照射的面片在很长一段时间都是黑的。射的面片在很长一段时间都是黑的。 解决方法:设立泛光项,该泛光项具有以下性质解决方法:设立泛光项,该泛光项具有以下性质: :泛光项是为了增强最初画面真实感的一个估计项和补充项泛光项是为了增强最初画面真实感的一个估计项和补充项 仅依赖于场景中的基本景物几何而无需计算各面片间精确仅依赖于场景中的基本景物几何而无需计算各面片间精确的形状因子的形状因子 随着迭代的进行,各面片的辐射度逐渐接近正确值,泛光随着迭代的进行,各面片的辐射度逐渐接近正确值,泛光项应越来越小
30、。因此泛光项应作为项应越来越小。因此泛光项应作为B Bi i的函数进行动态估计的函数进行动态估计 泛光项仅为显示而设,不应影响各面片的泛光项仅为显示而设,不应影响各面片的B Bi i值值 泛光项的模拟泛光项的模拟2022-6-854由于泛光项是各面片辐射的光能对环境的整体光亮度贡由于泛光项是各面片辐射的光能对环境的整体光亮度贡献,取献,取 NjjjFBAmbient1*其中其中 ( (注意注意 = 1)= 1)jjAAjF*jjF*jjjAA*若考虑到环境与各个面片之间存在多重反射,令若考虑到环境与各个面片之间存在多重反射,令*2*111RNjjjFBRAmbient1*泛光项的估算泛光项的估
31、算实实验验结结果果jjjjjAABB12*)(RMS Error = Shooting , Sorting and Ambient Shooting and Sorting Shooting Only Gathering Only 10 30 40 60 80 100 0.00.51.0RMS2022-6-856绘制实例2022-6-857小结局部光照模型的绘制算法Gouraud 模型Phong 模型全局光照明模型光线跟踪算法辐射度方法2022-6-858阴影生成阴影:物体上没有被光源 直接照射到的区域作用:可反映物体间的相对位置关系,产生立体感及层次感,提高画面的真实感;分类:本影:物体表面
32、没有被光源直接照射的部分;半影:物体表面被非全部光源直接照射的部分;软影:本影及其周围半影共同形成的区域注:在点光源的假设下,只须计算本影。2022-6-859线光源下的软影2022-6-860本影的计算原理:若取光源为观察点,则本影计算过程相当于消隐过程!算法的目的:加速计算过程影域多边形方法曲面细节多边形方法Z缓冲器方法光线跟踪方法2022-6-861影域多边形方法针对多边形物体几个概念影域(阴影体):当光源直接照射表面为不透明表面时,在该表面后所形成的三维阴影区域(shadow volume)确定某点是否落在阴影中只须判别该点是否位于影域中即可影域多面体:视域四棱锥与三维影域空间的交影域
33、多边形:组成影域多面体的多边形扫描平面:每一条扫描线在视域空间所对应的垂直于成像平面的水平面2022-6-862可见景物表面与影域多面体在扫描平面上的截交线当前扫描线平面与第i个影域多边形的交线当前扫描线平面与景物多边形的交线续:算法实现:将影域多边形置入景物多边形表中,位于同一影域多面体中的面均写为阴影色。2022-6-863影域多边形方法特点优点:只需对现有的扫描线消隐算法稍加修改缺点:依赖视线的选择大量阴影多边形的加入,使得场景的复杂程度大大提高,算法效率极低2022-6-864思考题如何解决影域多边形方法的效率低下问题?2022-6-865曲面细节多边形方法曲面细节多边形的获得:取光源
34、为视线方向对景物进行消隐计算出相对光源可见的景物多边形定义上述景物多边形为曲面细节多边形算法流程:建立曲面细节多边形与其所在原始多边形的对应关系对景物进行消隐计算(取视线方向),对于可见面:没有覆盖曲面细节多边形则为阴影面覆盖曲面细节多边形则计算其光亮度2022-6-866曲面细节多边形方法特点优点:曲面细节多边形保存了整个场景的阴影信息,可实现不同视线方向下对同一场景的绘制缺点:即使对于非可见的多边形仍需计算其对应的曲面细节多边形,增加了额外的计算量思考:如何改进?2022-6-867Z缓冲器方法问题:光滑表面的阴影生成解决:近似方法:多边形逼近非近似方法:Z缓冲器方法、光线跟踪等Willi
35、ams针对光滑曲面的阴影生成提出实现过程:两步法,类似于曲面细节多边形方法2022-6-868Z缓冲器方法实现流程第一步:利用利用Z缓冲器消隐算法以光源为视点进行消隐缓冲器消隐算法以光源为视点进行消隐景物变换到光源坐标系下景物变换到光源坐标系下Z缓冲器缓冲器(阴影缓冲器阴影缓冲器)中存储离光源最近的景物点的深中存储离光源最近的景物点的深度值度值第二步利用利用Z缓冲器消隐算法按照视线方向计算画面缓冲器消隐算法按照视线方向计算画面将各像素对应的可见曲面上的点变换至光源坐标系将各像素对应的可见曲面上的点变换至光源坐标系将上述点的深度值和阴影缓冲器中的值进行比较将上述点的深度值和阴影缓冲器中的值进行比
36、较若前者大于后者,则说明该点位于阴影中若前者大于后者,则说明该点位于阴影中否则计算该点亮度值,并显示否则计算该点亮度值,并显示2022-6-869Z缓冲器方法特点优点:适用于任意复杂曲面计算量小,程序简单缺点:存储代价高当光源方向偏离视线方向较远时,在阴影区域附近产生图像走样改进?2022-6-870线光源的软阴影生成真实的阴影是渐变的将真实的光源用多个点光源模拟是解决阴影突变的方式之一效率降低是由此产生的另一个问题阅读:Wolfgang Heidrich, etc. Soft shadow maps for linear lights, EG Rendering Workshop00使用两个点光源模拟出线光源的效果2022-6-871使用两个点光源模拟出线光源的效果2022-6-872小结阴影生成算法影域多边形方法曲面细节多边形方法Z缓冲器方法光线跟踪方法:从物体向光源发出测试光线2022-6-873本节小结光照明模型局部光照明计算:Gouraud Phong方法全局光照明计算:快速光线跟踪算法整体光照明计算:光能辐射度方法阴影生成