光照明模型及表面绘制算法课件_第1页
光照明模型及表面绘制算法课件_第2页
光照明模型及表面绘制算法课件_第3页
光照明模型及表面绘制算法课件_第4页
光照明模型及表面绘制算法课件_第5页
已阅读5页,还剩141页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二节(Lecture6)

光照明模型及表面绘制算法

(Illumination&surfacerendering)12/29/20221第二节(Lecture6)

光照明模型及表面绘制算法

(本节内容一、光照明模型二、曲面绘制算法三、阴影生成12/29/20222本节内容一、光照明模型12/27/20222问题的提出已知:表面上一点的光亮度值计算公式:求表面绘制结果仅有光照模型是不够的!或12/29/20223问题的提出已知:表面上一点的光亮度值计算公式:求表面绘制结果绘制方法对表面上不同点应用光照公式的过程称为明暗处理(shading)过程,或称为绘制或渲染(rendering)过程绘制方法局部光照模型的绘制GouraudShadingphongShading全局光照模型的绘制光线跟踪(raytracing)方法辐射度方法(Radiositymethod)12/29/20224绘制方法对表面上不同点应用光照公式的过程称为明暗处理(shaGouraud明暗处理原理:在表面点集的子集上使用光照明公式,计算该点的光亮度值;在其它点上的光亮度值可通过已计算点的光亮度值插值计算得到实现步骤:表面多边形网格表示(常用三角网格)在网格顶点处应用光照模型计算其光亮度值对顶点光亮度值进行插值得到网格内部点的光亮度值12/29/20225Gouraud明暗处理原理:12/27/20225三角网格表示的表面顶点数18429,三角形36858顶点数26101,三角形5000012/29/20226三角网格表示的表面顶点数18429,三角形36858顶点数2网格顶点光亮度的计算关于顶点法向已知未知:定义为其相邻面片的法向的平均值12/29/20227网格顶点光亮度的计算关于顶点法向12/27/20227网格内点光亮度的双线性插值加速计算?假设光亮度值线性变化12/29/20228网格内点光亮度的双线性插值加速计算?假设光亮度值线性变化12续:更进一步,引入增量计算加速插值计算速度已知y扫描线上端点的亮度为I,则y-1扫描线上端点的亮度为:12/29/20229续:更进一步,引入增量计算加速插值计算速度已知y扫描线上端点优缺点分析光亮度的线性插值算法:优点克服了常数绘制模式带来的亮度不连续问题缺点不能正确模拟高光效果产生马赫带(Machbands)效应光亮度变化不连续的边界处呈现亮带或黑带12/29/202210优缺点分析光亮度的线性插值算法:12/27/202210Phong明暗处理思想:对表面上的每一点应用光照模型步骤:对离散的法向量采样作双线性插值,构造连续的法向量函数;将连续的法向插值函数代入光亮度计算公式,得到一个非线性的光亮度插值公式。12/29/202211Phong明暗处理思想:对表面上的每一点应用光照模型12/2图示12/29/202212图示12/27/202212加速shading技术当使用三角形表示物体表面时,可使用三角形插值加速计算。xyp建立三角形仿射坐标系仿射坐标变换公式12/29/202213加速shading技术当使用三角形表示物体表面时,可使用三角续:则在仿射坐标下,光亮度双线性插值公式可写为:代入仿射坐标变换公式,得到:上式可容易地使用增量法进行计算12/29/202214续:则在仿射坐标下,光亮度双线性插值公式可写为:代入仿射坐标续:同样可进行法向量的双线性插值计算:12/29/202215续:同样可进行法向量的双线性插值计算:12/27/20221全局光照明模型的绘制算法光线跟踪(Raytracing)辐射度方法(Radiositymethod)12/29/202216全局光照明模型的绘制算法光线跟踪(Raytracing)1基本原理快速算法:基于层次包围盒的快速光线跟踪算法基于空间剖分的快速光线跟踪算法光线跟踪算法12/29/202217基本原理光线跟踪算法12/27/202217Durer’s投射机(Raycastingmachine)AlbrechtDurer,16th世纪12/29/202218Durer’s投射机(RaycastingmachinDurer’sRaycastingmachine12/29/202219Durer’sRaycastingmachine12/投射法步骤从眼睛向每一个像素构造射线对场景中的每一个对象找到与相应射线相交与眼睛最近的交点计算该交点的法线方向在该点应用光照明模型(如Phong)12/29/202220投射法步骤12/27/202220光线跟踪的基本原理问题:1)如何寻找B,D:光线跟踪2)如何计算IB,ID:递归过程3)受遮挡时的计算:阴影测试

眼睛

12/29/202221光线跟踪的基本原理问题:1)如何寻找B,D:光线跟踪眼睛光线跟踪终止条件视线射出画面,不再与场景中的景物相交被跟踪的结点对屏幕象素显示光亮度的贡献小于一定阈值达到光线跟踪的最大深度

眼睛

12/29/202222光线跟踪终止条件眼睛12/27/202222算法描述1.由视点向屏幕上所有象素中心发射光线;2.每一根光线与场景中所有景物求交,找到最近的交点;3.计算该点处由光源直接照射产生的光亮度Il;4.若该点处表面为镜面或透射面,则作递归光线跟踪,计算周围环境通过该点向观察者方向投射的整体镜面反射光亮度Ir和透射光亮度It;5.显示每一象素处的光亮度12/29/202223算法描述1.由视点向屏幕上所有象素中心发射光线;2.每一根算法分析求交计算量占整个光线跟踪计算量90%以上减少求交计算量的方法包围盒方法空间剖分方法12/29/202224算法分析求交计算量占整个光线跟踪计算量90%以上12/27基于层次包围盒的快速光线跟踪算法包围盒:以简单的测试代替光线对包围盒内所含景物的复杂求交运算目标:快速剔除不交的物体对包围盒形状的要求:包裹要紧密求交测试要简便问题转化为:包围盒的构造光线与包围盒求交12/29/202225基于层次包围盒的快速光线跟踪算法包围盒:以简单的测试代替光线思考题包围盒的形状选择包围球/包围盒的求交测试顶点包含在多边形内的测试层次包围盒的构造原则。。。12/29/202226思考题包围盒的形状选择12/27/202226基于空间剖分的快速光线跟踪算法算法基本流程将空间划分为网格,光线只与它所穿过的空间网格中所含景物进行求交利用空间网格的邻接性质,引导光线从一个网格进入它将穿过的下一网格一旦发现光线与景物的第一个交点,即结束求交。12/29/202227基于空间剖分的快速光线跟踪算法算法基本流程12/27/202问题空间网格的划分技巧?表示空间网格的数据结构如何构造?如何通过预处理过程加速显示过程?。。。12/29/202228问题空间网格的划分技巧?12/27/202228绘制实例12/29/202229绘制实例12/27/202229光线跟踪算法的特点优点:真实感:考虑了环境中各物体之间的反射影响;实现了消隐:在光线跟踪过程中自然实现了消隐;可实现阴影效果:从表面上一点向光源发射一条阴影探测线。如果该光线在到达光源之前与场景中的任意不透明面相交,则该点处于阴影中,反之不然。可并行实现:各条光线的处理过程可独立进行。缺点:计算量非常大,显示速度慢依赖视点,当视点改变时需要重新计算(如何改进?)12/29/202230光线跟踪算法的特点优点:12/27/202230光能辐射度方法与视点无关的绘制方法!光能辐射度方法步骤辐射度方程的建立形状因子的求解辐射度方程的求解画面绘制光能辐射度方程逐步求精算法12/29/202231光能辐射度方法与视点无关的绘制方法!12/27/202231漫射场景的光能辐射度方程假定场景为一封闭的理想漫反射环境对于场景中任一面片j,Bj=Ej+ρjHj其中:为面片j单位面积上向四周辐射的辐射度为面片j自身向外均匀发射的光能为面片j的漫反射系数为面片j单位面积从周围环境接受的总的光能

12/29/202232漫射场景的光能辐射度方程假定场景为一封闭的理想漫反射环计算:是周围环境其它面片辐射度()的函数,面片i向四周辐射的总的光能为BiAi,其中一部分到达面片j,记为BiAiFij

到达面片j单位面积上的光能为BiAiFij/Aj,故12/29/202233计算:是周围环境其它面片辐射度(Fij的计算

Fij称为面片i对面片j的形状因子,

现在考虑面元dAi对面元dAj的形状因子,面元dAi向四周辐射的总的光能BidAi在无遮挡的情况下,面元dAi向面元dAj辐射的光能为12/29/202234Fij的计算Fij称为面片i对面片j的形状因子,由定义

对Aj积分得对Ai取平均,即12/29/202235由定义对Aj积分得对Ai取平均,即12/27/2022推论:1.

即故(标准辐射度方程)

2.

3.标准辐射度方程两端同除以,得场景各面片的光亮度方程

12/29/202236推论:1.即故(标准辐射度方程)2.计算形状因子的半立方体方法形状因子计算公式的几何解释:dAj对单位半球面作中心投影,其投影区域为

该区域垂直投影到半球的底平面上,其投影面积为与底平面圆面积之比为,即。NiidSiSjSj取Ai的中心点为球心,在Ai上方建立一单位半球面。12/29/202237计算形状因子的半立方体方法dAj对单位半球面作中心投影,其引申:对任何在半球面上占据相同投影区域的面片Ak,面片Ai对它们具有相同的形状因子,即

思路:寻找面片Ak,Ak的表面形状,朝向较为规范,计算比较容易,从而将Fij的计算转换为Fik的计算。

12/29/202238引申:对任何在半球面上占据相同投影区域的面片Ak,面片Ai对最规范的表面是围绕Ai,位于Ai上方的半立方体,立方体顶平面与面片Ai的法向垂直。因此,只要将面片Aj投影到半立方体表面上,Ai对其投影面积的形状因子即为Fij。将半立方体各表面离散为均匀网格,假定每一网格上各点的形状因子不变。面片Ai对每一网格的形状因子称为半立方体表面的微形状因子。面片Ai对Aj的形状因子归结为两个问题。第一,确定Aj在半立方体表面上所占网格;第二,计算每一网格的微形状因子。12/29/20223912/27/202239确定Aj在半立方体表面上的投影

取景变换和背面标志,将Aj变换到以Ai为中心的半立方体局部坐标系中。dSiQSjq对Aj作区域裁剪,以确定它投影到半立方体哪些表面上。 裁剪平面:z=x,z=-x,z=y,z=-y,x=y,x=-y。z-buffer消隐z-buffer中存储各网格的可见面号,而不是其深度值,故又称item-buffer。被遮挡的表面形状因子为零。12/29/202240确定Aj在半立方体表面上的投影dSiQSjq对Aj作区域裁xtopxsidezxyAsidezsiderijdSiyside=1ytopztop=1rijAtopqq计算每一网格的形状因子对于位于半立方体顶面网格12/29/202241xtopxsidezxyAsidezsiderijdSi对于位于半立方体侧面网格(以左侧面为例)由于半立方体表面各网格与其中心的相对方位是固定的,故可预先将半立方体表面各网格的微形状因子计算好,存储在一查找表中备用。

xtopxsidezxyAsidezsiderijdSiyside=1ytopztop=1rijAtopqq12/29/202242对于位于半立方体侧面网格(以左侧面为例)由于半立方体表面各辐射度方程的求解(1)由形状因子组成的系数矩阵主对角占优,可迭代求解。可取各面片之Ei作为迭代初值,一般迭代6-8次即可收敛。(2)对红、绿、蓝三原色分别求解辐射度方程(Ej,ρj与光谱分布有关)。(3)采用插值与平均方法将各面片中心的辐射度转换为各面片顶点处的辐射度。12/29/202243辐射度方程的求解12/27/202243辐射度方法流程输入场景将各景物表面剖分为小平面片计算面片间的形状因子求解辐射度方程画面绘制改变视点或视线方向12/29/202244辐射度方法流程输入场景将各景物表面剖分为小平面片计算面片间的选定视点和视线方向对场景中的景物作取景变换采用光线投射或扫描线算法,确定屏幕上每一象素中的可见面。采用双线性插值方法,确定象素中心处表面采样点的辐射度画面显示续:画面绘制12/29/202245选定视点和视线方向对场景中的景物作取景变换续:画面绘制12/问题:该方法的重要步骤--计算形状因子,确定系数矩阵,计算量存储量均为O(N2),这个计算量占整个方法的90%,任何有用的结果和画面显示都必须在系数矩阵确定后才能生成,显示速度慢!光能辐射度方法存在的问题12/29/202246问题:该方法的重要步骤--计算形状因子,确定系数矩阵,计算量

光能辐射度逐步求精算法图形学发展的两根主线:追求画面生成的真实感和实时性在追求真实感方面由线画图形->消隐图形->连续色调光栅图形由多边形图形->Gouraudshading->Phongshading由Lambert模型->Phong模型->整体光照模型由扫描线算法->光线跟踪算法->光能辐射度方法在追求画面实时生成方面硬件支持绘制处理景物细节简化技术基于图象的绘制逐步求精的画面生成算法12/29/202247光能辐射度逐步求精算法12/27/202247逐步求精画面的绘制算法的特点一开始就生成画面,包含有用的视觉信息。画面由粗糙逐步变得精细,真实感不断增强。每一步的计算都利用了前面步骤的计算结果。12/29/202248逐步求精画面的绘制算法的特点12/27/202248光能辐射度方程的迭代形式令则分析:上述方程表明,每一面片的辐射度增量应为其他面片向它入射的光能的线性组合,这一过程称之为Gathering。每一步迭代的代价 在接受面片i上建立一个半立方体,计算n个形状因子(所有Fij)。更新一个面片(i)的辐射度。12/29/202249光能辐射度方程的迭代形式令则分析:每一步迭代的代价12/27

在方程右侧的和式中,选择对刷新贡献最大的一项,取面片j作为辐射源,则(Dueto)=每一步迭代的效果在辐射源面片j上建立一个半立方体,计算n个形状因子(所有Fji),场景中大部分面片的辐射度均有所更新。这一过程称之为Shooting。改进12/29/202250 (Dueto)=每一步迭代的效果这逐步求精算法描述1)确定辐射源面片j2)在面片j上建立半立方体,计算面片j对所有其他面片的形状因子Fji3)对在场景中的每一个面片i

/*每一面片所积聚的光能增加*/

/*每一面片的当前辐射度值,供显示*/4)Bj=0/*面片j上所积聚的光能辐射完毕,清零*/对于每一次迭代12/29/202251逐步求精算法描述1)确定辐射源面片j2)在面片j上建立半立确定辐射源面片累计在各次迭代中,每一面片所积聚的光能取具有最大积聚光能的面片作为下一次迭代的辐射源第一次迭代初值:取ΔBi=Ei12/29/202252确定辐射源面片12/27/202252上述逐步迭代过程可能导致画面上那些不受光源直接照射的面片在很长一段时间都是黑的。解决方法:设立泛光项,该泛光项具有以下性质:泛光项是为了增强最初画面真实感的一个估计项和补充项仅依赖于场景中的基本景物几何而无需计算各面片间精确的形状因子随着迭代的进行,各面片的辐射度逐渐接近正确值,泛光项应越来越小。因此泛光项应作为ΔBi的函数进行动态估计泛光项仅为显示而设,不应影响各面片的ΔBi值泛光项的模拟12/29/202253上述逐步迭代过程可能导致画面上那些不受光源直接照射的面片在很由于泛光项是各面片辐射的光能对环境的整体光亮度贡献,取其中(注意=1)若考虑到环境与各个面片之间存在多重反射,令泛光项的估算12/29/202254其中(注意=1)若考虑实验结果RMSError=

Shooting,SortingandAmbient

ShootingandSorting

ShootingOnly

GatheringOnly

10304060801000.00.51.0RMS12/29/202255实验结果RMSError=Shooting,Sor绘制实例12/29/202256绘制实例12/27/202256小结局部光照模型的绘制算法Gouraud模型Phong模型全局光照明模型光线跟踪算法辐射度方法12/29/202257小结局部光照模型的绘制算法12/27/202257阴影生成阴影:物体上没有被光源直接照射到的区域作用:可反映物体间的相对位置关系,产生立体感及层次感,提高画面的真实感;分类:本影:物体表面没有被光源直接照射的部分;半影:物体表面被非全部光源直接照射的部分;软影:本影及其周围半影共同形成的区域注:在点光源的假设下,只须计算本影。12/29/202258阴影生成阴影:物体上没有被光源12/27/202258线光源下的软影12/29/202259线光源下的软影12/27/202259本影的计算原理:若取光源为观察点,则本影计算过程相当于消隐过程!算法的目的:加速计算过程影域多边形方法曲面细节多边形方法Z缓冲器方法光线跟踪方法12/29/202260本影的计算原理:若取光源为观察点,则本影计算过程相当于消隐过影域多边形方法针对多边形物体几个概念影域(阴影体):当光源直接照射表面为不透明表面时,在该表面后所形成的三维阴影区域(shadowvolume)确定某点是否落在阴影中只须判别该点是否位于影域中即可影域多面体:视域四棱锥与三维影域空间的交影域多边形:组成影域多面体的多边形扫描平面:每一条扫描线在视域空间所对应的垂直于成像平面的水平面12/29/202261影域多边形方法针对多边形物体12/27/202261可见景物表面与影域多面体在扫描平面上的截交线当前扫描线平面与第i个影域多边形的交线当前扫描线平面与景物多边形的交线续:算法实现:将影域多边形置入景物多边形表中,位于同一影域多面体中的面均写为阴影色。12/29/202262可见景物表面与影域多面体在扫描平面上的截交线当前扫描线平面与影域多边形方法特点优点:只需对现有的扫描线消隐算法稍加修改缺点:依赖视线的选择大量阴影多边形的加入,使得场景的复杂程度大大提高,算法效率极低12/29/202263影域多边形方法特点优点:只需对现有的扫描线消隐算法稍加修改1思考题如何解决影域多边形方法的效率低下问题?12/29/202264思考题如何解决影域多边形方法的效率低下问题?12/27/20曲面细节多边形方法曲面细节多边形的获得:取光源为视线方向对景物进行消隐计算出相对光源可见的景物多边形定义上述景物多边形为曲面细节多边形算法流程:建立曲面细节多边形与其所在原始多边形的对应关系对景物进行消隐计算(取视线方向),对于可见面:没有覆盖曲面细节多边形则为阴影面覆盖曲面细节多边形则计算其光亮度12/29/202265曲面细节多边形方法曲面细节多边形的获得:12/27/2022曲面细节多边形方法特点优点:曲面细节多边形保存了整个场景的阴影信息,可实现不同视线方向下对同一场景的绘制缺点:即使对于非可见的多边形仍需计算其对应的曲面细节多边形,增加了额外的计算量思考:如何改进?12/29/202266曲面细节多边形方法特点优点:曲面细节多边形保存了整个场景的阴Z缓冲器方法问题:光滑表面的阴影生成解决:近似方法:多边形逼近非近似方法:Z缓冲器方法、光线跟踪等Williams针对光滑曲面的阴影生成提出实现过程:两步法,类似于曲面细节多边形方法12/29/202267Z缓冲器方法问题:光滑表面的阴影生成12/27/202267Z缓冲器方法实现流程第一步:利用Z缓冲器消隐算法以光源为视点进行消隐景物变换到光源坐标系下Z缓冲器(阴影缓冲器)中存储离光源最近的景物点的深度值第二步利用Z缓冲器消隐算法按照视线方向计算画面将各像素对应的可见曲面上的点变换至光源坐标系将上述点的深度值和阴影缓冲器中的值进行比较若前者大于后者,则说明该点位于阴影中否则计算该点亮度值,并显示12/29/202268Z缓冲器方法实现流程第一步:12/27/202268Z缓冲器方法特点优点:适用于任意复杂曲面计算量小,程序简单缺点:存储代价高当光源方向偏离视线方向较远时,在阴影区域附近产生图像走样改进?12/29/202269Z缓冲器方法特点优点:12/27/202269线光源的软阴影生成真实的阴影是渐变的将真实的光源用多个点光源模拟是解决阴影突变的方式之一效率降低是由此产生的另一个问题阅读:WolfgangHeidrich,etc.Softshadowmapsforlinearlights,EGRenderingWorkshop’00使用两个点光源模拟出线光源的效果12/29/202270线光源的软阴影生成真实的阴影是渐变的12/27/202270使用两个点光源模拟出线光源的效果12/29/202271使用两个点光源模拟出线光源的效果12/27/202271小结阴影生成算法影域多边形方法曲面细节多边形方法Z缓冲器方法光线跟踪方法:从物体向光源发出测试光线12/29/202272小结阴影生成算法12/27/202272本节小结光照明模型局部光照明计算:Gouraud&Phong方法全局光照明计算:快速光线跟踪算法整体光照明计算:光能辐射度方法阴影生成12/29/202273本节小结光照明模型12/27/202273第二节(Lecture6)

光照明模型及表面绘制算法

(Illumination&surfacerendering)12/29/202274第二节(Lecture6)

光照明模型及表面绘制算法

(本节内容一、光照明模型二、曲面绘制算法三、阴影生成12/29/202275本节内容一、光照明模型12/27/20222问题的提出已知:表面上一点的光亮度值计算公式:求表面绘制结果仅有光照模型是不够的!或12/29/202276问题的提出已知:表面上一点的光亮度值计算公式:求表面绘制结果绘制方法对表面上不同点应用光照公式的过程称为明暗处理(shading)过程,或称为绘制或渲染(rendering)过程绘制方法局部光照模型的绘制GouraudShadingphongShading全局光照模型的绘制光线跟踪(raytracing)方法辐射度方法(Radiositymethod)12/29/202277绘制方法对表面上不同点应用光照公式的过程称为明暗处理(shaGouraud明暗处理原理:在表面点集的子集上使用光照明公式,计算该点的光亮度值;在其它点上的光亮度值可通过已计算点的光亮度值插值计算得到实现步骤:表面多边形网格表示(常用三角网格)在网格顶点处应用光照模型计算其光亮度值对顶点光亮度值进行插值得到网格内部点的光亮度值12/29/202278Gouraud明暗处理原理:12/27/20225三角网格表示的表面顶点数18429,三角形36858顶点数26101,三角形5000012/29/202279三角网格表示的表面顶点数18429,三角形36858顶点数2网格顶点光亮度的计算关于顶点法向已知未知:定义为其相邻面片的法向的平均值12/29/202280网格顶点光亮度的计算关于顶点法向12/27/20227网格内点光亮度的双线性插值加速计算?假设光亮度值线性变化12/29/202281网格内点光亮度的双线性插值加速计算?假设光亮度值线性变化12续:更进一步,引入增量计算加速插值计算速度已知y扫描线上端点的亮度为I,则y-1扫描线上端点的亮度为:12/29/202282续:更进一步,引入增量计算加速插值计算速度已知y扫描线上端点优缺点分析光亮度的线性插值算法:优点克服了常数绘制模式带来的亮度不连续问题缺点不能正确模拟高光效果产生马赫带(Machbands)效应光亮度变化不连续的边界处呈现亮带或黑带12/29/202283优缺点分析光亮度的线性插值算法:12/27/202210Phong明暗处理思想:对表面上的每一点应用光照模型步骤:对离散的法向量采样作双线性插值,构造连续的法向量函数;将连续的法向插值函数代入光亮度计算公式,得到一个非线性的光亮度插值公式。12/29/202284Phong明暗处理思想:对表面上的每一点应用光照模型12/2图示12/29/202285图示12/27/202212加速shading技术当使用三角形表示物体表面时,可使用三角形插值加速计算。xyp建立三角形仿射坐标系仿射坐标变换公式12/29/202286加速shading技术当使用三角形表示物体表面时,可使用三角续:则在仿射坐标下,光亮度双线性插值公式可写为:代入仿射坐标变换公式,得到:上式可容易地使用增量法进行计算12/29/202287续:则在仿射坐标下,光亮度双线性插值公式可写为:代入仿射坐标续:同样可进行法向量的双线性插值计算:12/29/202288续:同样可进行法向量的双线性插值计算:12/27/20221全局光照明模型的绘制算法光线跟踪(Raytracing)辐射度方法(Radiositymethod)12/29/202289全局光照明模型的绘制算法光线跟踪(Raytracing)1基本原理快速算法:基于层次包围盒的快速光线跟踪算法基于空间剖分的快速光线跟踪算法光线跟踪算法12/29/202290基本原理光线跟踪算法12/27/202217Durer’s投射机(Raycastingmachine)AlbrechtDurer,16th世纪12/29/202291Durer’s投射机(RaycastingmachinDurer’sRaycastingmachine12/29/202292Durer’sRaycastingmachine12/投射法步骤从眼睛向每一个像素构造射线对场景中的每一个对象找到与相应射线相交与眼睛最近的交点计算该交点的法线方向在该点应用光照明模型(如Phong)12/29/202293投射法步骤12/27/202220光线跟踪的基本原理问题:1)如何寻找B,D:光线跟踪2)如何计算IB,ID:递归过程3)受遮挡时的计算:阴影测试

眼睛

12/29/202294光线跟踪的基本原理问题:1)如何寻找B,D:光线跟踪眼睛光线跟踪终止条件视线射出画面,不再与场景中的景物相交被跟踪的结点对屏幕象素显示光亮度的贡献小于一定阈值达到光线跟踪的最大深度

眼睛

12/29/202295光线跟踪终止条件眼睛12/27/202222算法描述1.由视点向屏幕上所有象素中心发射光线;2.每一根光线与场景中所有景物求交,找到最近的交点;3.计算该点处由光源直接照射产生的光亮度Il;4.若该点处表面为镜面或透射面,则作递归光线跟踪,计算周围环境通过该点向观察者方向投射的整体镜面反射光亮度Ir和透射光亮度It;5.显示每一象素处的光亮度12/29/202296算法描述1.由视点向屏幕上所有象素中心发射光线;2.每一根算法分析求交计算量占整个光线跟踪计算量90%以上减少求交计算量的方法包围盒方法空间剖分方法12/29/202297算法分析求交计算量占整个光线跟踪计算量90%以上12/27基于层次包围盒的快速光线跟踪算法包围盒:以简单的测试代替光线对包围盒内所含景物的复杂求交运算目标:快速剔除不交的物体对包围盒形状的要求:包裹要紧密求交测试要简便问题转化为:包围盒的构造光线与包围盒求交12/29/202298基于层次包围盒的快速光线跟踪算法包围盒:以简单的测试代替光线思考题包围盒的形状选择包围球/包围盒的求交测试顶点包含在多边形内的测试层次包围盒的构造原则。。。12/29/202299思考题包围盒的形状选择12/27/202226基于空间剖分的快速光线跟踪算法算法基本流程将空间划分为网格,光线只与它所穿过的空间网格中所含景物进行求交利用空间网格的邻接性质,引导光线从一个网格进入它将穿过的下一网格一旦发现光线与景物的第一个交点,即结束求交。12/29/2022100基于空间剖分的快速光线跟踪算法算法基本流程12/27/202问题空间网格的划分技巧?表示空间网格的数据结构如何构造?如何通过预处理过程加速显示过程?。。。12/29/2022101问题空间网格的划分技巧?12/27/202228绘制实例12/29/2022102绘制实例12/27/202229光线跟踪算法的特点优点:真实感:考虑了环境中各物体之间的反射影响;实现了消隐:在光线跟踪过程中自然实现了消隐;可实现阴影效果:从表面上一点向光源发射一条阴影探测线。如果该光线在到达光源之前与场景中的任意不透明面相交,则该点处于阴影中,反之不然。可并行实现:各条光线的处理过程可独立进行。缺点:计算量非常大,显示速度慢依赖视点,当视点改变时需要重新计算(如何改进?)12/29/2022103光线跟踪算法的特点优点:12/27/202230光能辐射度方法与视点无关的绘制方法!光能辐射度方法步骤辐射度方程的建立形状因子的求解辐射度方程的求解画面绘制光能辐射度方程逐步求精算法12/29/2022104光能辐射度方法与视点无关的绘制方法!12/27/202231漫射场景的光能辐射度方程假定场景为一封闭的理想漫反射环境对于场景中任一面片j,Bj=Ej+ρjHj其中:为面片j单位面积上向四周辐射的辐射度为面片j自身向外均匀发射的光能为面片j的漫反射系数为面片j单位面积从周围环境接受的总的光能

12/29/2022105漫射场景的光能辐射度方程假定场景为一封闭的理想漫反射环计算:是周围环境其它面片辐射度()的函数,面片i向四周辐射的总的光能为BiAi,其中一部分到达面片j,记为BiAiFij

到达面片j单位面积上的光能为BiAiFij/Aj,故12/29/2022106计算:是周围环境其它面片辐射度(Fij的计算

Fij称为面片i对面片j的形状因子,

现在考虑面元dAi对面元dAj的形状因子,面元dAi向四周辐射的总的光能BidAi在无遮挡的情况下,面元dAi向面元dAj辐射的光能为12/29/2022107Fij的计算Fij称为面片i对面片j的形状因子,由定义

对Aj积分得对Ai取平均,即12/29/2022108由定义对Aj积分得对Ai取平均,即12/27/2022推论:1.

即故(标准辐射度方程)

2.

3.标准辐射度方程两端同除以,得场景各面片的光亮度方程

12/29/2022109推论:1.即故(标准辐射度方程)2.计算形状因子的半立方体方法形状因子计算公式的几何解释:dAj对单位半球面作中心投影,其投影区域为

该区域垂直投影到半球的底平面上,其投影面积为与底平面圆面积之比为,即。NiidSiSjSj取Ai的中心点为球心,在Ai上方建立一单位半球面。12/29/2022110计算形状因子的半立方体方法dAj对单位半球面作中心投影,其引申:对任何在半球面上占据相同投影区域的面片Ak,面片Ai对它们具有相同的形状因子,即

思路:寻找面片Ak,Ak的表面形状,朝向较为规范,计算比较容易,从而将Fij的计算转换为Fik的计算。

12/29/2022111引申:对任何在半球面上占据相同投影区域的面片Ak,面片Ai对最规范的表面是围绕Ai,位于Ai上方的半立方体,立方体顶平面与面片Ai的法向垂直。因此,只要将面片Aj投影到半立方体表面上,Ai对其投影面积的形状因子即为Fij。将半立方体各表面离散为均匀网格,假定每一网格上各点的形状因子不变。面片Ai对每一网格的形状因子称为半立方体表面的微形状因子。面片Ai对Aj的形状因子归结为两个问题。第一,确定Aj在半立方体表面上所占网格;第二,计算每一网格的微形状因子。12/29/202211212/27/202239确定Aj在半立方体表面上的投影

取景变换和背面标志,将Aj变换到以Ai为中心的半立方体局部坐标系中。dSiQSjq对Aj作区域裁剪,以确定它投影到半立方体哪些表面上。 裁剪平面:z=x,z=-x,z=y,z=-y,x=y,x=-y。z-buffer消隐z-buffer中存储各网格的可见面号,而不是其深度值,故又称item-buffer。被遮挡的表面形状因子为零。12/29/2022113确定Aj在半立方体表面上的投影dSiQSjq对Aj作区域裁xtopxsidezxyAsidezsiderijdSiyside=1ytopztop=1rijAtopqq计算每一网格的形状因子对于位于半立方体顶面网格12/29/2022114xtopxsidezxyAsidezsiderijdSi对于位于半立方体侧面网格(以左侧面为例)由于半立方体表面各网格与其中心的相对方位是固定的,故可预先将半立方体表面各网格的微形状因子计算好,存储在一查找表中备用。

xtopxsidezxyAsidezsiderijdSiyside=1ytopztop=1rijAtopqq12/29/2022115对于位于半立方体侧面网格(以左侧面为例)由于半立方体表面各辐射度方程的求解(1)由形状因子组成的系数矩阵主对角占优,可迭代求解。可取各面片之Ei作为迭代初值,一般迭代6-8次即可收敛。(2)对红、绿、蓝三原色分别求解辐射度方程(Ej,ρj与光谱分布有关)。(3)采用插值与平均方法将各面片中心的辐射度转换为各面片顶点处的辐射度。12/29/2022116辐射度方程的求解12/27/202243辐射度方法流程输入场景将各景物表面剖分为小平面片计算面片间的形状因子求解辐射度方程画面绘制改变视点或视线方向12/29/2022117辐射度方法流程输入场景将各景物表面剖分为小平面片计算面片间的选定视点和视线方向对场景中的景物作取景变换采用光线投射或扫描线算法,确定屏幕上每一象素中的可见面。采用双线性插值方法,确定象素中心处表面采样点的辐射度画面显示续:画面绘制12/29/2022118选定视点和视线方向对场景中的景物作取景变换续:画面绘制12/问题:该方法的重要步骤--计算形状因子,确定系数矩阵,计算量存储量均为O(N2),这个计算量占整个方法的90%,任何有用的结果和画面显示都必须在系数矩阵确定后才能生成,显示速度慢!光能辐射度方法存在的问题12/29/2022119问题:该方法的重要步骤--计算形状因子,确定系数矩阵,计算量

光能辐射度逐步求精算法图形学发展的两根主线:追求画面生成的真实感和实时性在追求真实感方面由线画图形->消隐图形->连续色调光栅图形由多边形图形->Gouraudshading->Phongshading由Lambert模型->Phong模型->整体光照模型由扫描线算法->光线跟踪算法->光能辐射度方法在追求画面实时生成方面硬件支持绘制处理景物细节简化技术基于图象的绘制逐步求精的画面生成算法12/29/2022120光能辐射度逐步求精算法12/27/202247逐步求精画面的绘制算法的特点一开始就生成画面,包含有用的视觉信息。画面由粗糙逐步变得精细,真实感不断增强。每一步的计算都利用了前面步骤的计算结果。12/29/2022121逐步求精画面的绘制算法的特点12/27/202248光能辐射度方程的迭代形式令则分析:上述方程表明,每一面片的辐射度增量应为其他面片向它入射的光能的线性组合,这一过程称之为Gathering。每一步迭代的代价 在接受面片i上建立一个半立方体,计算n个形状因子(所有Fij)。更新一个面片(i)的辐射度。12/29/2022122光能辐射度方程的迭代形式令则分析:每一步迭代的代价12/27

在方程右侧的和式中,选择对刷新贡献最大的一项,取面片j作为辐射源,则(Dueto)=每一步迭代的效果在辐射源面片j上建立一个半立方体,计算n个形状因子(所有Fji),场景中大部分面片的辐射度均有所更新。这一过程称之为Shooting。改进12/29/2022123 (Dueto)=每一步迭代的效果这逐步求精算法描述1)确定辐射源面片j2)在面片j上建立半立方体,计算面片j对所有其他面片的形状因子Fji3)对在场景中的每一个面片i

/*每一面片所积聚的光能增加*/

/*每一面片的当前辐射度值,供显示*/4)Bj=0/*面片j上所积聚的光能辐射完毕,清零*/对于每一次迭代12/29/2022124逐步求精算法描述1)确定辐射源面片j2)在面片j上建立半立确定辐射源面片累计在各次迭代中,每一面片所积聚的光能取具有最大积聚光能的面片作为下一次迭代的辐射源第一次迭代初值:取ΔBi=Ei12/29/2022125确定辐射源面片12/27/202252上述逐步迭代过程可能导致画面上那些不受光源直接照射的面片在很长一段时间都是黑的。解决方法:设立泛光项,该泛光项具有以下性质:泛光项是为了增强最初画面真实感的一个估计项和补充项仅依赖于场景中的基本景物几何而无需计算各面片间精确的形状因子随着迭代的进行,各面片的辐射度逐渐接近正确值,泛光项应越来越小。因此泛光项应作为ΔBi的函数进行动态估计泛光项仅为显示而设,不应影响各面片的ΔBi值泛光项的模拟12/29/2022126上述逐步迭代过程可能导致画面上那些不受光源直接照射的面片在很由于泛光项是各面片辐射的光能对环境的整体光亮度贡献,取其中(注意=1)若考虑到环境与各个面片之间存在多重反射,令泛光项的估算12/29/2022127其中(注意=1)若考虑实验结果RMSError=

Shooting,SortingandAmbient

ShootingandSorting

ShootingOnly

GatheringOnly

10304060801000.00.51.0RMS12/29/2022128实验结果RMSError=Shooting,Sor绘制实例12/29/2022129绘制实例12/27/202256小结局部光照模型的绘制算法Gouraud模型Phong模型全局光照明模型光线跟踪算法辐射度方法12/29/2022130小结局部光照模型的绘制算法12/27/202257阴影生成阴影:物体上没有被光源直接照射到的区域作用:可反映物体间的相对位置关系,产生立体感及层次感,提高画面的真实感;分类:本影:物体表面没有被光源直接照射的部分;半影:物体表面被非全部光源直接照射的部分;软影:本影及其周围半影共同形成的区域注:在点光源的假设下,只须计算本影。12/29/202213

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论