真实感图形生成.ppt
真实感图形生成现在学习的是第1页,共75页真实感图形生成的步骤场景造型取景变换、透视投影视域裁剪、消除隐藏面光亮度计算 现在学习的是第2页,共75页光亮度计算1 1依据:光照明模型依据:光照明模型局局部部光光照照明明模模型型:朗朗伯伯模模型型、PhongPhong模模型型整整体体光光照照明明模模型型:WhittedWhitted模模型型,光光能能辐射度方程(隐式)辐射度方程(隐式)追求目标追求目标:光照效果的真实感:光照效果的真实感 现在学习的是第3页,共75页 扫描线方法扫描线方法 光线跟踪方法光线跟踪方法 光能辐射度方法光能辐射度方法追求目标追求目标:画面生成的实时性:画面生成的实时性 2 2计算方法:绘制算法计算方法:绘制算法现在学习的是第4页,共75页本讲座内容 一、光照明模型的基本原理一、光照明模型的基本原理 二、快速光线跟踪算法二、快速光线跟踪算法1.1.平行平行2n2n面包围盒算法面包围盒算法 2.2.空间分割算法空间分割算法 三、光能辐射度方法三、光能辐射度方法1.1.形状因子计算形状因子计算 2.2.逐步求精算法逐步求精算法 现在学习的是第5页,共75页一、光照明模型的基本原理 1.1.概述概述 视觉的形成视觉的形成 物体的颜色物体的颜色 漫反射和镜面反射漫反射和镜面反射 现在学习的是第6页,共75页2 2PhongPhong光照明模型光照明模型 为计算方便,镜面高光分量可改写成为计算方便,镜面高光分量可改写成:漫反射分量漫反射分量 泛光泛光镜面高光分量镜面高光分量 Li NRiViiiPHi现在学习的是第7页,共75页3 3光度学的基本概念光度学的基本概念 光通量:单位时间内通过某一面积的光能量光通量:单位时间内通过某一面积的光能量 发光强度:沿给定方向单位立体角发出的发光强度:沿给定方向单位立体角发出的光通量光通量 光亮度:面光光亮度:面光dsds沿给定方向的光亮度为在沿给定方向的光亮度为在该方向上单位投影面积的发光强度该方向上单位投影面积的发光强度 照度照度:单位面积表面所接受的光通量单位面积表面所接受的光通量 现在学习的是第8页,共75页朱一宁模型朱一宁模型 目目标标:计计算算面面元元dSdSj j朝朝观观察察者者方方向向v v的的光光亮亮度度,先先计计算算dSdSj j所所接受来自周围环境的入射光能接受来自周围环境的入射光能 jjiNiSidjNjdiSjdSjdSir现在学习的是第9页,共75页由由dSdSi i发出并到达发出并到达dSdSj j的光通量为:的光通量为:面元面元dSdSj j所接受的照度所接受的照度:现在学习的是第10页,共75页 到达到达dSdSj j的光能除一部分被表面吸收外,大部分通过的光能除一部分被表面吸收外,大部分通过反射和折射继续向空间辐射。反射和折射继续向空间辐射。令令K K为光通量辐射比,为光通量辐射比,D D为未被吸收的光能向空为未被吸收的光能向空间任一方向立体角辐射的概率密度,则间任一方向立体角辐射的概率密度,则dSdSj j朝观察者朝观察者方向内辐射的光能为方向内辐射的光能为:现在学习的是第11页,共75页dSdSj j朝观察者方向的光亮度为朝观察者方向的光亮度为:dVNdSi现在学习的是第12页,共75页 设对设对dSdSj j有光能贡献的发光面元集合为有光能贡献的发光面元集合为S S,则表面朝,则表面朝V V方向的光亮度为方向的光亮度为:现在学习的是第13页,共75页现在学习的是第14页,共75页当当D D取不同的分布函数时,可得朗伯模型,取不同的分布函数时,可得朗伯模型,PhongPhong模型,模型,Cook-TorranceCook-Torrance模型模型 当当S S取发光面元集合时得各种局部光照明模型;取发光面元集合时得各种局部光照明模型;当当S S包括所有周围环境表面时,可得整体光照明模型包括所有周围环境表面时,可得整体光照明模型 当当S S取不同的几何形状时,可得线光源光照模型和面取不同的几何形状时,可得线光源光照模型和面光源光照模型光源光照模型 现在学习的是第15页,共75页现在学习的是第16页,共75页二、快速光线跟踪 1.1.光线跟踪的基本原理光线跟踪的基本原理 问题:问题:1 1)如何寻找)如何寻找B B,D D:光线跟踪:光线跟踪 2 2)如何计算)如何计算I IB B,I ID D:递归过程:递归过程 3 3)受遮挡时的计算:阴影测试)受遮挡时的计算:阴影测试 眼睛 现在学习的是第17页,共75页光线跟踪终止条件光线跟踪终止条件光线射出画面,不再与场景中的景物相交光线射出画面,不再与场景中的景物相交被被跟跟踪踪的的结结点点对对屏屏幕幕象象素素显显示示光光亮亮度度的的贡贡献小于一定阈值献小于一定阈值达到光线跟踪的最大深度达到光线跟踪的最大深度 现在学习的是第18页,共75页算法描述算法描述1 1由视点向屏幕上所有象素中心发射光线;由视点向屏幕上所有象素中心发射光线;2 2每一根光线与场景中所有景物求交,找到最近的交点;每一根光线与场景中所有景物求交,找到最近的交点;3 3计算该点处由光源直接照射产生的光亮度计算该点处由光源直接照射产生的光亮度I Il l;4 4若若该该点点处处表表面面为为镜镜面面或或透透射射面面,则则作作递递归归光光线线跟跟踪踪,计计算算周周围围环环境境通通过过该该点点向向观观察察者者方方向向投投射射的的整整体体镜镜面反射光亮度面反射光亮度I Ir r和透射光亮度和透射光亮度I It t;5 5显示每一象素处的光亮度显示每一象素处的光亮度 现在学习的是第19页,共75页算法分析:算法分析:1 1求交计算量占整个光线跟踪计算量求交计算量占整个光线跟踪计算量90%90%以上以上 减少求交计算量的方法减少求交计算量的方法包围盒方法包围盒方法空间剖分方法空间剖分方法 2 2点采样容易导致画面走样点采样容易导致画面走样 方法:自适应超级采样方法:自适应超级采样 基于层次包围盒的快速光线跟踪算法基于层次包围盒的快速光线跟踪算法 现在学习的是第20页,共75页2.2.基于层次包围盒的快速光线跟踪算法基于层次包围盒的快速光线跟踪算法包包围围盒盒:以以简简单单的的测测试试代代替替光光线线对对包包围围盒盒内内所所含含景景物物的复杂求交运算的复杂求交运算目标:目标:快速剔除不交的物体快速剔除不交的物体对包围盒形状的要求:对包围盒形状的要求:包裹要紧密包裹要紧密 求交测试要简便求交测试要简便 现在学习的是第21页,共75页平行平行2n2n面包围盒面包围盒 优点:优点:多面体可以较紧密地逼近一个物体多面体可以较紧密地逼近一个物体平面求交计算较为简单平面求交计算较为简单 表示方法:平面方程表示方法:平面方程 Ax+By+Cz-d=0Ax+By+Cz-d=0 其中其中d d表达了平面与原点之间的距离表达了平面与原点之间的距离 为节省存贮量,平面法向为节省存贮量,平面法向A A,B B,C C 隐含表示隐含表示 同一景物的三种平行包围体 (a)(b)(c)现在学习的是第22页,共75页景物的平行景物的平行2n2n面包围盒的确定面包围盒的确定确定各平行面的确定各平行面的d d值值1 1)多面体的平行)多面体的平行2n2n面包围盒面包围盒 设几何造型变换矩阵为设几何造型变换矩阵为M M(3333),平移矢量为),平移矢量为T T将变换后顶点矢量投影到平面法矢上将变换后顶点矢量投影到平面法矢上 对于一组平行平面对于一组平行平面现在学习的是第23页,共75页2 2)隐函数曲面的平行)隐函数曲面的平行2n2n面包围盒面包围盒 隐函数曲面隐函数曲面 曲面上任一点投影到包围盒平面法矢上曲面上任一点投影到包围盒平面法矢上现欲求在满足约束条件下现欲求在满足约束条件下 的条件极值。的条件极值。运用拉格朗日乘数法可求出运用拉格朗日乘数法可求出 现在学习的是第24页,共75页平移矢量平移矢量T T对对 的影响的影响 附加一个沿附加一个沿T T方向的平移量方向的平移量 组合物体的平行组合物体的平行2n2n面包围盒面包围盒 现在学习的是第25页,共75页光线与包围盒边界面的求交光线与包围盒边界面的求交给定一光线给定一光线 代入平面方程代入平面方程 由于由于N Ni i预先设定,对于给定光线,预先设定,对于给定光线,a a,b b为常数为常数 令令 则则 (一次减法,一次乘法)(一次减法,一次乘法)现在学习的是第26页,共75页光线与平行光线与平行2n2n面包围盒的求交面包围盒的求交由由于于平平行行2n2n包包围围盒盒为为凸凸体体,只只需需求求光光线线位位于于各各组组平平行面之间区段的交行面之间区段的交若若则则光光线线位位于于 之之间间的的区区段段为为光光线线与与包包围围盒盒的交的交现在学习的是第27页,共75页注:注:算算法法并并行行地地计计算算当当前前区区段段与与前前面面区区段段公公共共段的交。若无交,则不必再继续计算下去。段的交。若无交,则不必再继续计算下去。当当 为为负负时时,光光线线投投射射方方向向与与平平面面法法向相反,交换向相反,交换 的位置的位置现在学习的是第28页,共75页场景的层次包围盒结构场景的层次包围盒结构 求交测试计算量由求交测试计算量由 降至降至 同同一一层层次次的的结结点点按按光光线线与与其其包包围围盒盒入入口口点点的的t t值(值()排序存入一链表中)排序存入一链表中 总总是是取取光光线线最最先先进进入入的的包包围围盒盒内内所所含含景景物物作作进进一一步步测试测试由由于于链链表表中中相相邻邻结结点点的的包包围围盒盒可可能能重重迭迭,只只有有当当求求得得的的光光线线与与包包围围盒盒内内景景物物交交点点的的t t值值小小于于光光线线与与下下一一相相邻邻结结点点包包围围盒盒入入口口点点的的t t值值时时,才才能能停停止进一步的求交测试。止进一步的求交测试。光线现在学习的是第29页,共75页基于空间剖分的快速光线跟踪算法基于空间剖分的快速光线跟踪算法将将空空间间划划分分为为网网格格,光光线线只只与与它它所所穿穿过过的的空空间间网网格格中中所所含景物进行求交。含景物进行求交。利利用用空空间间网网格格的的邻邻接接性性质质,引引导导光光线线从从一一个个网网格格进进入它将穿过的下一网格。入它将穿过的下一网格。一旦发现光线与景物的第一个交点,即结束求交。一旦发现光线与景物的第一个交点,即结束求交。现在学习的是第30页,共75页现有的空间分割光线跟踪算法现有的空间分割光线跟踪算法3DDDA3DDDA算法算法 将将空空间间划划分分为为均均匀匀的的立立方方体体网网格格,利利用用光光线线的的线线性性几几何何,采采用用增增量量算算法法,求求得得光光线线与与当当前前网网格格的的出出口口点,并直接查取光线进入的下一网格。点,并直接查取光线进入的下一网格。问题:问题:1.1.不适合于景物分布稀疏的场景不适合于景物分布稀疏的场景 2.2.占用大量存贮空间占用大量存贮空间现在学习的是第31页,共75页GlassnerGlassner算法算法将将空空间间按按景景物物实实际际分分布布划划分分成成八八叉叉树树结结构构,每每一一网网格格仅仅包包含含一一定定数数量量的的景景物物表表面面,空空网网格格不不再再细细分。分。求求出出光光线线与与当当前前空空间间网网格格出出口口点点的的t t值值,再再向向前前移移动动tt,生成光线位于下一网格内的一点(,生成光线位于下一网格内的一点(x x,y y,z z)。)。利利用用HashHash查查找找技技术术,找找到到包包含含这这一一点点的的下下一一八八叉叉树树网格。网格。问题:问题:1.1.求下一网格定位点涉及求下一网格定位点涉及9 9次乘法次乘法 2.2.存贮全部八叉树结点,包括空网格结点存贮全部八叉树结点,包括空网格结点 现在学习的是第32页,共75页空间索引算法空间索引算法采采用用线线性性八八叉叉树树结结构构存存贮贮包包含含景景物物面面片片的的空空间间八八叉叉树结点,占用存贮小。树结点,占用存贮小。采采用用启启发发式式方方法法求求取取光光线线与与当当前前网网格格出出口口点点,大大大减少了计算量。大减少了计算量。利利用用线线性性八八叉叉树树结结点点编编码码性性质质,直直接接由由出出口口点点查查找找下一空间网格。下一空间网格。现在学习的是第33页,共75页问题问题:如何快速求取光线与当前空间网格的出口点?:如何快速求取光线与当前空间网格的出口点?思思路路:根根据据光光线线的的前前进进方方向向,优优先先选选取取最最有有可可能能与与光光线线相交的网格边界面与光线进行求交测试。相交的网格边界面与光线进行求交测试。为为此此引引入入光光线线前前进进主主方方向向,次次方方向向,第第三三方方向向概概念念,其其相相应应坐坐标标分分量量分分别别以以L L、S S、T T标标识识,显显然然光光线线从从垂垂直直于于主主方方向向的的空空间间网网格格边边界界面面出出口口的的可可能能性性最大,应优先测试最大,应优先测试现在学习的是第34页,共75页若若光光线线沿沿主主方方向向边边界界面面射射出出,出出口口点点应应位位于于边边界界面正方形内面正方形内即即设出口点为设出口点为I IP P则则现在学习的是第35页,共75页若若则光线沿次方向边界面射出则光线沿次方向边界面射出否则光线可能沿次方向或第三方向边界面射出否则光线可能沿次方向或第三方向边界面射出取取S-TS-T坐标系坐标系算出:算出:现在学习的是第36页,共75页否则光线沿第三方向边界面射出否则光线沿第三方向边界面射出现在学习的是第37页,共75页问题问题:如何高效查找光线将要进入的下一空间网格?:如何高效查找光线将要进入的下一空间网格?思路思路:利用线性八叉树结点的编码性质,确定下一相邻网格:利用线性八叉树结点的编码性质,确定下一相邻网格现在学习的是第38页,共75页沿沿x x轴正向,相邻兄弟结点编码增加轴正向,相邻兄弟结点编码增加 1 1沿沿y y轴正向,相邻兄弟结点编码增加轴正向,相邻兄弟结点编码增加 2 2沿沿z z轴正向,相邻兄弟结点编码增加轴正向,相邻兄弟结点编码增加 4 4线性八叉树结点的编码方式线性八叉树结点的编码方式将一空间沿将一空间沿x x,y y,z z中分面一分为八中分面一分为八01134576xyz现在学习的是第39页,共75页 设设立立方方体体空空间间为为 ,该该空空间间中中任任一一VoxelVoxel结结点点编编码码为为 为为八八进进制制数数,纪纪录录了了对对空空间间第第i i次次分分割割时时,含含该该VoxelVoxel的的子子结结点在其父结点中的方位。点在其父结点中的方位。表示一个只分割到第表示一个只分割到第i i层的空间结点,层的空间结点,子空间边长为子空间边长为 。现在学习的是第40页,共75页八叉树结点的原点坐标与其结点编码的关系八叉树结点的原点坐标与其结点编码的关系设某一八叉树结点编码为设某一八叉树结点编码为且且 则其局部原点坐标为:则其局部原点坐标为:反反过过来来,若若已已知知某某一一八八叉叉树树结结点点的的局局部部原原点点坐坐标标,则则可推导出其线性八叉树结点(可推导出其线性八叉树结点(VoxelVoxel)编码)编码 现在学习的是第41页,共75页 线线性性八八叉叉树树结结点点按按编编码码顺顺序序以以线线性性链链表表方方式式存存贮贮。结结点点的的父父子子、兄兄弟弟邻邻接接关关系系反反映映在在编编码码上上,同胞兄弟的结点具有相同的前缀。同胞兄弟的结点具有相同的前缀。现在学习的是第42页,共75页由出口点查找下一空间网格的步骤由出口点查找下一空间网格的步骤 1.1.首首先先由由出出口口点点确确定定下下一一空空间间网网格格的的局局部部坐坐标标原原点点(先先假假定定VoxelVoxel结点)结点)对对 IpL,IpS,IpT IpL,IpS,IpT分别取整得分别取整得O OL,S,TL,S,T 若若 stepL0 stepL0且光线沿且光线沿L L方向边界面入口方向边界面入口,O OLL=O OLL-1 1 若若 stepS0 stepS0且光线沿且光线沿S S方向边界面入口方向边界面入口,O OS=S=O OS-1S-1 若若 stepT0 stepT-消隐图形消隐图形-连续色调光栅图形连续色调光栅图形由多边形图形由多边形图形-Gouraud shading-Phong shading-Gouraud shading-Phong shading 由朗伯模型由朗伯模型-Phong-Phong 模型模型-整体光照模型整体光照模型由扫描线算法由扫描线算法-光线跟踪算法光线跟踪算法-光能辐射度方法光能辐射度方法现在学习的是第62页,共75页在追求画面实时生成方面在追求画面实时生成方面硬件支持绘制处理。硬件支持绘制处理。景物细节简化技术。景物细节简化技术。基于图象的绘制。基于图象的绘制。逐步求精的画面生成算法。逐步求精的画面生成算法。现在学习的是第63页,共75页逐逐 步步 求求 精精 画画 面面 的的 绘绘 制制 算算 法法 的的 特特 点点一开始就生成画面一开始就生成画面,包含有用的视觉信息。包含有用的视觉信息。画面由粗糙逐步变得精细画面由粗糙逐步变得精细,真实感不断增强。真实感不断增强。每一步的计算都利用了前面步骤的计算结果。每一步的计算都利用了前面步骤的计算结果。现在学习的是第64页,共75页基于光能辐射度的画面计算和生成过程基于光能辐射度的画面计算和生成过程 场景辐射度方程场景辐射度方程:B:Bi i=E=Ei i+i iBBj jF Fijij1)1)计算形状因子计算形状因子,确定系数矩阵确定系数矩阵,计算量存储量均为计算量存储量均为O O(N(N2 2)2)2)迭代法求解方程组迭代法求解方程组,获得环境中的光能分布获得环境中的光能分布 3)3)取取景景变变换换 ,确确定定可可见见面面 ,计计算算并并显显示示每每一一象象素素上上可可见面的光亮度值见面的光亮度值 问问题题:第第一一步步计计算算量量占占整整个个方方法法的的90%90%,任任何何有有用用的的结结果果和和画面显示都必须在系数矩阵确定后才能生成画面显示都必须在系数矩阵确定后才能生成 现在学习的是第65页,共75页光能辐射度方程的迭代形式光能辐射度方程的迭代形式令令则则现在学习的是第66页,共75页分析分析:上上述述方方程程表表明明 ,每每一一面面片片的的辐辐射射度度增增量量应应为为其其他他面面片片向向它它入入射射的的光光能能的的线线性性组组合合 ,这这一一过过程程称称之之为为GatheringGathering。每一步迭代的代价每一步迭代的代价在在接接受受面面片片i i上上建建立立一一个个半半立立方方体体,计计算算n n个个形形状状因因子子(所有(所有F Fijij)。更新一个面片)。更新一个面片(i)(i)的辐射度。的辐射度。现在学习的是第67页,共75页改进改进在在方方程程右右侧侧的的和和式式中中,选选择择对对刷刷新新 贡贡献献最最大大的一项的一项 ,取面片取面片j j 作为辐射源,则作为辐射源,则(Due to )=每一步迭代的效果每一步迭代的效果 在在辐辐射射源源面面片片j j上上建建立立一一个个半半立立方方体体,计计算算n n个个形形状状因因子(所有子(所有F Fjiji),场景中大部分面片的辐射度均有所更新。场景中大部分面片的辐射度均有所更新。这一过程称之为这一过程称之为ShootingShooting。现在学习的是第68页,共75页算法描述算法描述对于每一次迭代对于每一次迭代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上所积聚的光能辐射完毕,清零上所积聚的光能辐射完毕,清零*/*/现在学习的是第69页,共75页确定辐射源面片确定辐射源面片 累计在各次迭代中,累计在各次迭代中,每一面片所积聚的光能每一面片所积聚的光能 取取具具有有最最大大积积聚聚光光能能的的面面片片作作为为下下一一次次迭迭代代的的辐辐射射源源第第一一次次迭代初值:迭代初值:取取 B Bi i=E=Ei i现在学习的是第70页,共75页泛光项的模拟泛光项的模拟 上上述述迭迭代代过过程程可可能能导导致致画画面面上上那那些些不不受受光光源源直直接接照照射射的的面片在很长一段时间都是黑的。面片在很长一段时间都是黑的。解决方法:设立泛光项,该泛光项具有以下性质解决方法:设立泛光项,该泛光项具有以下性质:泛光项是为了增强最初画面真实感的一个估计项和补充项泛光项是为了增强最初画面真实感的一个估计项和补充项 仅依赖于场景中的基本景物几何而无需计算各面片间精确的形状因子仅依赖于场景中的基本景物几何而无需计算各面片间精确的形状因子 随随着着迭迭代代的的不不断断进进行行,各各面面片片的的辐辐射射度度逐逐渐渐接接近近正正确确值值,泛泛光光项项应应越越来来越越小小。因此泛光项应作为因此泛光项应作为B Bi i的函数进行动态估计的函数进行动态估计 泛光项仅为显示而设,而不应影响各面片的泛光项仅为显示而设,而不应影响各面片的B Bi i值值 现在学习的是第71页,共75页泛光项的估算泛光项的估算 由由于于泛泛光光项项是是各各面面片片辐辐射射的的光光能能对对环环境境的的整整体体光光亮亮度度贡献,取贡献,取 其中其中 (注意注意 =1)=1)若考虑到环境与各个面片之间存在多重反射,令若考虑到环境与各个面片之间存在多重反射,令现在学习的是第72页,共75页实实验验结结果果RMS Error=Shooting,Sorting and Ambient Shooting and Sorting Shooting Only Gathering Only 10 30 40 60 80 100 0.00.51.0EMS现在学习的是第73页,共75页现在学习的是第74页,共75页现在学习的是第75页,共75页