资源描述
第二节(Lecture 6)光照明模型及表面绘制算法(Illumination&surface rendering)7/10/20241第二节(Lecture 6)光照明模型及表面绘制算法(本节内容 一、光照明模型一、光照明模型二、二、曲面绘制算法曲面绘制算法三、三、阴影生成阴影生成7/10/20242本节内容 一、光照明模型8/14/20232问题的提出已知:表面上一点的光亮度值计算公式:求表面绘制结果仅有光照模型是不够的!或7/10/20243问题的提出已知:表面上一点的光亮度值计算公式:求表面绘制结果绘制方法对表面上不同点应用光照公式的过程称为明暗处理(shading)过程,或称为绘制或渲染(rendering)过程绘制方法局部光照模型的绘制Gouraud Shading phong Shading全局光照模型的绘制光线跟踪(ray tracing)方法辐射度方法(Radiosity method)7/10/20244绘制方法对表面上不同点应用光照公式的过程称为明暗处理(shaGouraud 明暗处理 原理:在表面点集的子集上使用光照明公式,计算该点的光亮度值;在其它点上的光亮度值可通过已计算点的光亮度值插值计算得到实现步骤:表面多边形网格表示(常用三角网格)在网格顶点处应用光照模型计算其光亮度值对顶点光亮度值进行插值得到网格内部点的光亮度值7/10/20245Gouraud 明暗处理 原理:8/14/20235三角网格表示的表面顶点数18429,三角形36858顶点数26101,三角形500007/10/20246三角网格表示的表面顶点数18429,三角形36858顶点数2网格顶点光亮度的计算关于顶点法向已知未知:定义为其相邻面片的法向的平均值7/10/20247网格顶点光亮度的计算关于顶点法向8/14/20237网格内点光亮度的双线性插值加速计算?假设光亮度值线性变化7/10/20248网格内点光亮度的双线性插值加速计算?假设光亮度值线性变化8/续:更进一步,引入增量计算增量计算加速插值计算速度已知y扫描线上端点的亮度为I,则y-1扫描线上端点的亮度为:7/10/20249续:更进一步,引入增量计算加速插值计算速度已知y扫描线上端点优缺点分析光亮度的线性插值算法:优点克服了常数绘制模式带来的亮度不连续问题缺点不能正确模拟高光效果产生马赫带(Mach bands)效应光亮度变化不连续的边界处呈现亮带或黑带7/10/202410优缺点分析光亮度的线性插值算法:8/14/202310Phong明暗处理思想:对表面上的每一点应用光照模型步骤:对离散的法向量采样作双线性插值,构造连续的法向量函数;将连续的法向插值函数代入光亮度计算公式,得到一个非线性的光亮度插值公式。7/10/202411Phong明暗处理思想:对表面上的每一点应用光照模型8/14图示7/10/202412图示8/14/202312加速shading技术当使用三角形表示物体表面时,可使用三角形插值加速计算。xyp建立三角形仿射坐标系仿射坐标变换公式7/10/202413加速shading技术当使用三角形表示物体表面时,可使用三角续:则在仿射坐标下,光亮度双线性插值公式可写为:代入仿射坐标变换公式,得到:上式可容易地使用增量法进行计算7/10/202414续:则在仿射坐标下,光亮度双线性插值公式可写为:代入仿射坐标续:同样可进行法向量的双线性插值计算:7/10/202415续:同样可进行法向量的双线性插值计算:8/14/202315全局光照明模型的绘制算法光线跟踪(Ray tracing)辐射度方法(Radiosity method)7/10/202416全局光照明模型的绘制算法光线跟踪(Ray tracing)8基本原理快速算法:快速算法:基于层次包围盒的快速光线跟踪算法基于层次包围盒的快速光线跟踪算法基于空间剖分的快速光线跟踪算法基于空间剖分的快速光线跟踪算法光线跟踪算法 7/10/202417基本原理光线跟踪算法 8/14/202317Durers 投射机(Ray casting machine)Albrecht Durer,16th 世纪7/10/202418Durers 投射机(Ray casting machinDurers Ray casting machine7/10/202419Durers Ray casting machine8/1投射法步骤从眼睛向每一个像素构造射线对场景中的每一个对象找到与相应射线相交与眼睛最近的交点计算该交点的法线方向在该点应用光照明模型(如 Phong)7/10/202420投射法步骤8/14/202320光线跟踪的基本原理光线跟踪的基本原理问题:问题:1 1)如何寻找)如何寻找B B,D D:光线跟踪:光线跟踪 2 2)如何计算)如何计算I IB B,I ID D:递归过程:递归过程 3 3)受遮挡时的计算:阴影测试)受遮挡时的计算:阴影测试 眼睛 7/10/202421光线跟踪的基本原理问题:1)如何寻找B,D:光线跟踪 眼睛 光线跟踪终止条件光线跟踪终止条件视线射出画面,不再与场景中的景物相交视线射出画面,不再与场景中的景物相交被被跟跟踪踪的的结结点点对对屏屏幕幕象象素素显显示示光光亮亮度度的的贡贡献献小小于于一定阈值一定阈值达到光线跟踪的最大深度达到光线跟踪的最大深度 眼睛 7/10/202422光线跟踪终止条件 眼睛 8/14/202322算法描述算法描述1 1由视点向屏幕上所有象素中心发射光线;由视点向屏幕上所有象素中心发射光线;2 2每每一一根根光光线线与与场场景景中中所所有有景景物物求求交交,找找到到最最近近的交点;的交点;3 3计算该点处由光源直接照射产生的光亮度计算该点处由光源直接照射产生的光亮度I Il l;4 4若若该该点点处处表表面面为为镜镜面面或或透透射射面面,则则作作递递归归光光线线跟跟踪踪,计计算算周周围围环环境境通通过过该该点点向向观观察察者者方方向向投投射的整体镜面反射光亮度射的整体镜面反射光亮度I Ir r和透射光亮度和透射光亮度I It t;5 5显示每一象素处的光亮度显示每一象素处的光亮度 7/10/202423算法描述1由视点向屏幕上所有象素中心发射光线;2每一根算法分析算法分析求求交交计计算算量量占占整整个个光光线线跟跟踪踪计计算算量量90%90%以上以上 减少求交计算量的方法减少求交计算量的方法包围盒方法包围盒方法空间剖分方法空间剖分方法 7/10/202424算法分析求交计算量占整个光线跟踪计算量90%以上 8/14/基于层次包围盒的快速光线跟踪算法基于层次包围盒的快速光线跟踪算法包包围围盒盒:以以简简单单的的测测试试代代替替光光线线对对包包围围盒盒内内所所含含景景物的复杂求交运算物的复杂求交运算目标:目标:快速剔除不交的物体快速剔除不交的物体对包围盒形状的要求:对包围盒形状的要求:包裹要紧密包裹要紧密 求交测试要简便求交测试要简便 问题转化为:问题转化为:包围盒的构造包围盒的构造光线与包围盒求交光线与包围盒求交7/10/202425基于层次包围盒的快速光线跟踪算法包围盒:以简单的测试代替光线思考题包围盒的形状选择包围球包围盒的求交测试顶点包含在多边形内的测试层次包围盒的构造原则。7/10/202426思考题包围盒的形状选择8/14/202326基于空间剖分的快速光线跟踪算法基于空间剖分的快速光线跟踪算法算法基本流程算法基本流程将空间划分为网格,光线只与它将空间划分为网格,光线只与它 所穿过的空间网格中所含景物进行求交所穿过的空间网格中所含景物进行求交利用空间网格的邻接性质,引导光线从一个网格进利用空间网格的邻接性质,引导光线从一个网格进入它将穿过的下一网格入它将穿过的下一网格一旦发现光线与景物的第一个交点,即结束求交。一旦发现光线与景物的第一个交点,即结束求交。7/10/202427基于空间剖分的快速光线跟踪算法算法基本流程8/14/2023问题空间网格的划分技巧?表示空间网格的数据结构如何构造?如何通过预处理过程加速显示过程?。7/10/202428问题空间网格的划分技巧?8/14/202328绘制实例7/10/202429绘制实例8/14/202329光线跟踪算法的特点优点:真实感:考虑了环境中各物体之间的反射影响;实现了消隐:在光线跟踪过程中自然实现了消隐;可实现阴影效果:从表面上一点向光源发射一条阴影探测线。如果该光线在到达光源之前与场景中的任意不透明面相交,则该点处于阴影中,反之不然。可并行实现:各条光线的处理过程可独立进行。缺点:计算量非常大,显示速度慢依赖视点,当视点改变时需要重新计算(如何改进?)7/10/202430光线跟踪算法的特点优点:8/14/202330光能辐射度方法与视点无关的绘制方法!光能辐射度方法步骤辐射度方程的建立形状因子的求解辐射度方程的求解画面绘制光能辐射度方程逐步求精算法7/10/202431光能辐射度方法与视点无关的绘制方法!8/14/202331漫射场景的光能辐射度方程漫射场景的光能辐射度方程 假定场景为一封闭的理想漫反射环境假定场景为一封闭的理想漫反射环境 对于场景中任一面片对于场景中任一面片j,j,B Bj j=E=Ej j+j j H Hj j 其中:其中:为面片为面片j j单位面积上向四周辐射的辐射度单位面积上向四周辐射的辐射度 为面片为面片j j自身向外均匀发射的光能自身向外均匀发射的光能 为面片为面片j j的漫反射系数的漫反射系数 为面片为面片j j单位面积从周围环境接受的总的光能单位面积从周围环境接受的总的光能 7/10/202432漫射场景的光能辐射度方程 假定场景为一封闭的理想漫反射环 计算计算:是是周周围围环环境境其其它它面面片片辐辐射射度度 ()的的函数,函数,面片面片i i向四周辐射的总的光能为向四周辐射的总的光能为B Bi iA Ai i,其中一部分到达面片其中一部分到达面片j j,记为,记为B Bi iA Ai iF Fij ij 到达面片到达面片j j单位面积上的光能为单位面积上的光能为B Bi iA Ai iF Fijij/A/Aj j,故故7/10/202433 计算:是周围环境其它面片辐射度 (F Fij ij 的计算的计算 F Fij ij 称为面片称为面片i 对面片对面片j 的形状因子,的形状因子,现在考虑面元现在考虑面元dAi 对面元对面元dAj 的形状因子,的形状因子,面元面元dAi 向四周辐射的总的光能向四周辐射的总的光能B Bi idAi在无遮挡的情况下,面元在无遮挡的情况下,面元dAi 向面元向面元dAj 辐射的光能为辐射的光能为7/10/202434Fij 的计算 Fij 称为面片i 对面片j 的形状因子,由定义由定义 对对A Aj j积分得积分得 对对A Ai i取平均,即取平均,即7/10/202435由定义 对Aj积分得 对Ai取平均,即8/14/20233推论推论:1 1 即即 故故 (标准辐射度方程)(标准辐射度方程)2 2 3 3标标准准辐辐射射度度方方程程两两端端同同除除以以 ,得得场场景景各各面片的光亮度方程面片的光亮度方程 7/10/202436推论:1 即 故(标准辐射度方程)2计算形状因子的半立方体方法计算形状因子的半立方体方法形状因子计算公式的几何解释:形状因子计算公式的几何解释:d dA Aj j 对单位半球面作中心投影,其投影区域为对单位半球面作中心投影,其投影区域为 该区域垂直投影到半球的底平面上,其投影面积为该区域垂直投影到半球的底平面上,其投影面积为 与底平面圆面积之比为与底平面圆面积之比为 ,即,即 。NiidSiSjSj取取A Ai i的中心点为球心,的中心点为球心,在在A Ai i上方建立一单位半球面。上方建立一单位半球面。7/10/202437计算形状因子的半立方体方法dAj 对单位半球面作中心投影,其引引申申:对对任任何何在在半半球球面面上上占占据据相相同同投投影影区区域域的的面面片片Ak,面片面片Ai对它们具有相同的形状因子,即对它们具有相同的形状因子,即 思路:寻找面片思路:寻找面片Ak,Ak的表面形状,朝向较为规范,的表面形状,朝向较为规范,计计算算 比比较较容容易易,从从而而将将F Fijij 的的计计算算转转换换 为为F Fikik的计算。的计算。7/10/202438引申:对任何在半球面上占据相同投影区域的面片Ak,面片Ai对最最规规范范的的表表面面是是围围绕绕Ai ,位位于于Ai上上方方的的半半立立方方体体,立立方方体体顶顶平平面面与与面面片片Ai的的法法向向垂垂直直。因因此此,只只要要将将面面片片Aj投投影影到到半半立立方方体体表表面面上上,Ai对对其其投投影影面面积积的的形形状状因因子即为子即为F Fijij。将将半半立立方方体体各各表表面面离离散散为为均均匀匀网网格格,假假定定每每一一网网格格上上各各点点的的形形状状因因子子不不变变。面面片片Ai对对每每一一网网格格的的形形状状因因子子称为半立方体表面的微形状因子。称为半立方体表面的微形状因子。面面片片Ai对对Aj的的形形状状因因子子归归结结为为两两个个问问题题。第第一一,确确定定Aj在在半半立立方方体体表表面面上上所所占占网网格格;第第二二,计计算算每每一一网网格格的微形状因子。的微形状因子。7/10/2024398/14/202339确定确定Aj在半立方体表面上的投影在半立方体表面上的投影 取取景景变变换换和和背背面面标标志志,将将Aj变变换换到到以以Ai为为中中心心的的半半立立方方体体局局部部坐坐标系中。标系中。dSiQSjq对对Aj作作区区域域裁裁剪剪,以以确确定定它它投投影影到到半半立立方方体体哪哪些些表表面面上。上。裁剪平面:裁剪平面: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。被遮挡的表面形状因子为零。被遮挡的表面形状因子为零。7/10/202440确定Aj在半立方体表面上的投影 dSiQSjq对Aj作区域裁xtopxsidezx yAsidezsiderijdSiyside=1ytopztop=1rijAtopqq计算每一网格的形状因子计算每一网格的形状因子对于位于半立方体顶面网格对于位于半立方体顶面网格7/10/202441xtopxsidezxyAsidezsiderijdSi对于位于半立方体侧面网格对于位于半立方体侧面网格(以左侧面为例)(以左侧面为例)由于半立方体表面各网格与其中心的相对方位是固定由于半立方体表面各网格与其中心的相对方位是固定的,故可预先将半立方体表面各网格的微形状因子计的,故可预先将半立方体表面各网格的微形状因子计算好,存储在一查找表中备用。算好,存储在一查找表中备用。xtopxsidezx yAsidezsiderijdSiyside=1ytopztop=1rijAtopqq7/10/202442对于位于半立方体侧面网格(以左侧面为例)由于半立方体表面各辐射度方程的求解(1 1)由由形形状状因因子子组组成成的的系系数数矩矩阵阵主主对对角角占占优优,可可迭迭代代求求解解。可可取取各各面面片片之之E Ei i作作为为迭迭代代初初值值,一一般般迭代迭代6 68 8次即可收敛。次即可收敛。(2 2)对对红红、绿绿、蓝蓝三三原原色色分分别别求求解解辐辐射射度度方方程程(E Ej j ,j j与光谱分布有关)。与光谱分布有关)。(3 3)采采用用插插值值与与平平均均方方法法将将各各面面片片中中心心的的辐辐射射度度转转换为各面片顶点处的辐射度。换为各面片顶点处的辐射度。7/10/202443辐射度方程的求解8/14/202343辐射度方法流程输入场景将各景物表面剖分为小平面片计算面片间的形状因子求解辐射度方程画面绘制改变视点或视线方向7/10/202444辐射度方法流程输入场景将各景物表面剖分为小平面片计算面片间的选定视点和视线方向对场景中的景物作取景变换选定视点和视线方向对场景中的景物作取景变换采采用用光光线线投投射射或或扫扫描描线线算算法法,确确定定屏屏幕幕上上每每一一象象素中的可见面。素中的可见面。采采用用双双线线性性插插值值方方法法,确确定定象象素素中中心心处处表表面面采采样样点的辐射度点的辐射度画面显示画面显示续:画面绘制续:画面绘制7/10/202445选定视点和视线方向对场景中的景物作取景变换续:画面绘制8/1问问题题:该该方方法法的的重重要要步步骤骤-计计算算形形状状因因子子,确确定定系系数数矩矩阵阵,计计算算量量存存储储量量均均为为O O(N(N2 2),这这个个计计算算量量占占整整个个方方法法的的90%90%,任任何何有有用用的的结结果果和和画画面面显显示示都都必必须须在在系系数数矩矩阵阵确确定定后后才能生成,才能生成,显示速度慢显示速度慢!光能辐射度方法存在的问题7/10/202446问题:该方法的重要步骤-计算形状因子,确定系数矩阵,计算量 光能辐射度逐步求精算法光能辐射度逐步求精算法图形学发展的两根主线图形学发展的两根主线:追求画面生成的真实感和实时性追求画面生成的真实感和实时性 在追求真实感方面在追求真实感方面由线画图形由线画图形-消隐图形消隐图形-连续色调光栅图形连续色调光栅图形由多边形图形由多边形图形-Gouraud shading-Phong shading-Gouraud shading-Phong shading 由由LambertLambert模型模型-Phong-Phong 模型模型-整体光照模型整体光照模型由扫描线算法由扫描线算法-光线跟踪算法光线跟踪算法-光能辐射度方法光能辐射度方法 在追求画面实时生成方面在追求画面实时生成方面硬件支持绘制处理硬件支持绘制处理景物细节简化技术景物细节简化技术基于图象的绘制基于图象的绘制逐步求精的画面生成算法逐步求精的画面生成算法 7/10/202447 光能辐射度逐步求精算法8/14/202347逐步求精画面的绘制算法的特点一开始就生成画面一开始就生成画面,包含有用的视觉信息。包含有用的视觉信息。画面由粗糙逐步变得精细画面由粗糙逐步变得精细,真实感不断增强。真实感不断增强。每一步的计算都利用了前面步骤的计算结果。每一步的计算都利用了前面步骤的计算结果。7/10/202448逐步求精画面的绘制算法的特点8/14/202348光能辐射度方程的迭代形式光能辐射度方程的迭代形式令令则则分析分析:上上述述方方程程表表明明 ,每每一一面面片片的的辐辐射射度度增增量量应应为为其其他他面面片片向向它它入入射射的的光光能能的的线线性性组组合合 ,这这一一过过程程称称之之为为GatheringGathering。每一步迭代的代价每一步迭代的代价在在接接受受面面片片i i上上建建立立一一个个半半立立方方体体,计计算算n n个个形形状状因子(所有因子(所有F Fijij)。更新一个面片)。更新一个面片(i)(i)的辐射度。的辐射度。7/10/202449光能辐射度方程的迭代形式令则分析:每一步迭代的代价8/14/在在方方程程右右侧侧的的和和式式中中,选选择择对对刷刷新新 贡贡献献最最大大的一项的一项 ,取面片取面片j j 作为辐射源,则作为辐射源,则(Due to )=每一步迭代的效果每一步迭代的效果 在在辐辐射射源源面面片片j j上上建建立立一一个个半半立立方方体体,计计算算n n个个形形状状因因子子(所所有有F Fjiji),场场景景中中大大部部分分面面片片的的辐辐射射度度均均有所更新。有所更新。这一过程称之为这一过程称之为ShootingShooting。改进改进7/10/202450(Due to )=每一步迭代的效果 这逐步求精算法描述逐步求精算法描述1 1)确定辐射源面片)确定辐射源面片j j 2 2)在在面面片片j j上上建建立立半半立立方方体体,计计算算面面片片j j对对所所有有其其他面片的形状因子他面片的形状因子F Fji ji 3 3)对在场景中的每一个面片)对在场景中的每一个面片i i /*/*每一面片所积聚的光能增加每一面片所积聚的光能增加*/*/*/*每一面片的当前辐射度值,供显示每一面片的当前辐射度值,供显示*/*/4 4)B Bj j=0 =0 /*/*面片面片j j上所积聚的光能辐射完毕,清零上所积聚的光能辐射完毕,清零*/*/对于每一次迭代对于每一次迭代7/10/202451逐步求精算法描述1)确定辐射源面片j 2)在面片j上建立半立确定辐射源面片确定辐射源面片 累计在各次迭代中,累计在各次迭代中,每一面片所积聚的光能每一面片所积聚的光能 取取具具有有最最大大积积聚聚光光能能的的面面片片作作为为下下一一次次迭迭代代的的辐辐射射源源第一次迭代初值:第一次迭代初值:取取 B Bi i=E=Ei i7/10/202452确定辐射源面片 8/14/202352上上述述逐逐步步迭迭代代过过程程可可能能导导致致画画面面上上那那些些不不受受光光源源直直接接照照射的面片在很长一段时间都是黑的。射的面片在很长一段时间都是黑的。解决方法:设立泛光项,该泛光项具有以下性质解决方法:设立泛光项,该泛光项具有以下性质:泛光项是为了增强最初画面真实感的一个估计项和补充项泛光项是为了增强最初画面真实感的一个估计项和补充项 仅仅依依赖赖于于场场景景中中的的基基本本景景物物几几何何而而无无需需计计算算各各面面片片间间精精确确的的形状因子形状因子 随随着着迭迭代代的的进进行行,各各面面片片的的辐辐射射度度逐逐渐渐接接近近正正确确值值,泛泛光光项项应越来越小。因此泛光项应作为应越来越小。因此泛光项应作为B Bi i的函数进行动态估计的函数进行动态估计 泛光项仅为显示而设,不应影响各面片的泛光项仅为显示而设,不应影响各面片的B Bi i值值 泛光项的模拟泛光项的模拟7/10/202453上述逐步迭代过程可能导致画面上那些不受光源直接照射的面片在很由由于于泛泛光光项项是是各各面面片片辐辐射射的的光光能能对对环环境境的的整整体体光光亮亮度度贡贡献,取献,取 其中其中 (注意注意 =1)=1)若考虑到环境与各个面片之间存在多重反射,令若考虑到环境与各个面片之间存在多重反射,令泛光项的估算泛光项的估算7/10/202454其中 (注意 =1)若考虑实实验验结结果果RMS Error=Shooting,Sorting and Ambient Shooting and Sorting Shooting Only Gathering Only 10 30 40 60 80 100 0.00.51.0RMS7/10/202455实验结果RMS Error=Shooting,Sor绘制实例7/10/202456绘制实例8/14/202356小结局部光照模型的绘制算法Gouraud 模型Phong 模型全局光照明模型光线跟踪算法辐射度方法7/10/202457小结局部光照模型的绘制算法8/14/202357阴影生成阴影:物体上没有被光源 直接照射到的区域作用:可反映物体间的相对位置关系,产生立体感及层次感,提高画面的真实感;分类:本影:物体表面没有被光源直接照射的部分;半影:物体表面被非全部光源直接照射的部分;软影:本影及其周围半影共同形成的区域注:在点光源的假设下,只须计算本影。7/10/202458阴影生成阴影:物体上没有被光源8/14/202358线光源下的软影7/10/202459线光源下的软影8/14/202359本影的计算原理:若取光源为观察点,则本影计算过程相当于消隐过程!算法的目的:加速计算过程影域多边形方法曲面细节多边形方法Z缓冲器方法光线跟踪方法7/10/202460本影的计算原理:若取光源为观察点,则本影计算过程相当于消隐过影域多边形方法针对多边形物体几个概念影域(阴影体):当光源直接照射表面为不透明表面时,在该表面后所形成的三维阴影区域(shadow volume)确定某点是否落在阴影中只须判别该点是否位于影域中即可影域多面体:视域四棱锥与三维影域空间的交影域多边形:组成影域多面体的多边形扫描平面:每一条扫描线在视域空间所对应的垂直于成像平面的水平面7/10/202461影域多边形方法针对多边形物体8/14/202361可见景物表面与影域多面体在扫描平面上的截交线当前扫描线平面与第i个影域多边形的交线当前扫描线平面与景物多边形的交线续:算法实现:将影域多边形置入景物多边形表中,位于同一影域多面体中的面均写为阴影色。7/10/202462可见景物表面与影域多面体在扫描平面上的截交线当前扫描线平面与影域多边形方法特点优点:只需对现有的扫描线消隐算法稍加修改缺点:依赖视线的选择大量阴影多边形的加入,使得场景的复杂程度大大提高,算法效率极低7/10/202463影域多边形方法特点优点:只需对现有的扫描线消隐算法稍加修改8思考题如何解决影域多边形方法的效率低下问题?7/10/202464思考题如何解决影域多边形方法的效率低下问题?8/14/202曲面细节多边形方法曲面细节多边形的获得:取光源为视线方向对景物进行消隐计算出相对光源可见的景物多边形定义上述景物多边形为曲面细节多边形算法流程:建立曲面细节多边形与其所在原始多边形的对应关系对景物进行消隐计算(取视线方向),对于可见面:没有覆盖曲面细节多边形则为阴影面覆盖曲面细节多边形则计算其光亮度7/10/202465曲面细节多边形方法曲面细节多边形的获得:8/14/20236曲面细节多边形方法特点优点:曲面细节多边形保存了整个场景的阴影信息,可实现不同视线方向下对同一场景的绘制缺点:即使对于非可见的多边形仍需计算其对应的曲面细节多边形,增加了额外的计算量思考:如何改进?7/10/202466曲面细节多边形方法特点优点:曲面细节多边形保存了整个场景的阴Z缓冲器方法问题:光滑表面的阴影生成解决:近似方法:多边形逼近非近似方法:Z缓冲器方法、光线跟踪等Williams针对光滑曲面的阴影生成提出实现过程:两步法,类似于曲面细节多边形方法7/10/202467Z缓冲器方法问题:光滑表面的阴影生成8/14/202367Z缓冲器方法实现流程第一步:利用利用Z缓冲器消隐算法以光源为视点进行消隐缓冲器消隐算法以光源为视点进行消隐景物变换到光源坐标系下景物变换到光源坐标系下Z缓冲器缓冲器(阴影缓冲器阴影缓冲器)中存储离光源最近的景物点的中存储离光源最近的景物点的深度值深度值第二步利用利用Z缓冲器消隐算法按照视线方向计算画面缓冲器消隐算法按照视线方向计算画面将各像素对应的可见曲面上的点变换至光源坐标系将各像素对应的可见曲面上的点变换至光源坐标系将上述点的深度值和阴影缓冲器中的值进行比较将上述点的深度值和阴影缓冲器中的值进行比较若前者大于后者,则说明该点位于阴影中若前者大于后者,则说明该点位于阴影中否则计算该点亮度值,并显示否则计算该点亮度值,并显示7/10/202468Z缓冲器方法实现流程第一步:8/14/202368Z缓冲器方法特点优点:适用于任意复杂曲面计算量小,程序简单缺点:存储代价高当光源方向偏离视线方向较远时,在阴影区域附近产生图像走样改进?7/10/202469Z缓冲器方法特点优点:8/14/202369线光源的软阴影生成真实的阴影是渐变的将真实的光源用多个点光源模拟是解决阴影突变的方式之一效率降低是由此产生的另一个问题阅读:Wolfgang Heidrich,etc.Soft shadow maps for linear lights,EG Rendering Workshop00使用两个点光源模拟出线光源的效果7/10/202470线光源的软阴影生成真实的阴影是渐变的8/14/202370使用两个点光源模拟出线光源的效果7/10/202471使用两个点光源模拟出线光源的效果8/14/202371小结阴影生成算法影域多边形方法曲面细节多边形方法Z缓冲器方法光线跟踪方法:从物体向光源发出测试光线7/10/202472小结阴影生成算法8/14/202372本节小结光照明模型局部光照明计算:Gouraud Phong方法全局光照明计算:快速光线跟踪算法整体光照明计算:光能辐射度方法阴影生成7/10/202473本节小结光照明模型8/14/202373
展开阅读全文