深圳专业建网站多少钱,宁波房产网上备案查询,网站 外包方案,设计工作室发展前景第十一章 真实感图形技术1,简单光照明模型2,多边形绘制方法3,透明4,整体观照明模型5,光线跟踪算法第十章 真实感图形绘制光照模型 (Illumination Model):计算某一点的光强度的模型11.1 真实感图形的 特点? 能反映物体表面颜色和亮度的细微变化? 能表现物体表面的质感? 能通过…第十一章 真实感图形技术1,简单光照明模型2,多边形绘制方法3,透明4,整体观照明模型5,光线跟踪算法第十章 真实感图形绘制光照模型 (Illumination Model):计算某一点的光强度的模型11.1 真实感图形的 特点? 能反映物体表面颜色和亮度的细微变化? 能表现物体表面的质感? 能通过光照下的物体阴影极大地改善场景的深度感和层次感充分体现物体间的相互遮挡关系? 能模拟透明物体的透明效果和镜面物体的镜面效果影响观察者看到的表面颜色的因素① 物体的几何形状②光源 位置、距离、颜色、数量、强度、种类③环境 遮挡关系、光的反射与折射, 阴影④视点位置⑤物性 材料、颜色、透明度 折射性⑥表面光洁度光源① 几何性质– 点光源– 线光源– 面光源② 光谱组成– 白色光等能量的各种波长可见光的组合– 彩色光– 单色光11.2 真实感图形学早期发展? 1967年,Wylie等人第一次在显示物体时加进光照效果认为光强与距离成反比。? 1970年,Bouknight提出第一个光反射模型,Lambert漫反射环境光? 1971年,Gouraud提出漫反射模型加插值的思想? 1975年,Phong提出图形学中第一个有影响的光照明模型相关物理知识? 光的传播– 反射定律入射角等于反射角而且反射光线、入射光线与法向量在同一平面上光源 法向量入射光 反射光视线折射定律– 折射定律折射线在入射线与法线构成的平面上折射角与入射角满足入射光折射光??2?1?12s ins in?????能量关系– 在光的反射和折射现象中的能量分布– 下标为 i,d,s,t,v的能量项分别表示 为入射光强漫反射光强镜面反射光强透射光强吸收光强– 能量是守恒的i d s t vI I I I I? ? ? ?11.3 简单光照明模型模拟物体表面的光照明物理现象的数学模型光照明模型简单光照明模型 亦称局部光照明模型其假定物体是不透明的只考虑光源的直接照射而将光在物体之间的传播效果笼统地模拟为环境光。可以处理物体之间光照的相互作用的模型称为整体光照明模型简单光照明模型光照射到物体表面主要发生反射透射(对透明物体)部分被吸收成热能反射光透射光决定了物体所呈现的颜色简单光照明模型 -环境光假定物体是不透明的(即无透射光)? 环境光,在空间中近似均匀分布即在任何位置、任何方向上强度一样,记为 Ia? 环境光反射系数 Ka,在分布均匀的环境光照射下不同物体表面所呈现的亮度未必相同因为它们的环境光反射系数不同。? 光照明方程(仅含环境光),Ie KaIaIe为物体表面所呈现的亮度。简单光照明模型 - 环境光例子? 具有不同环境光反射系数的两个球0.1?aI4.0?aK 8.0?aK简单光照明模型 -环境光? 缺点虽然不同的物体具有不同的亮度但是同一物体的表面的亮度是一个恒定的值没有明暗的自然过度。简单光照明模型? 考虑引入点光源。? 点光源几何形状为一个点位于空间中的某个位置向周围所有的方向上辐射等强度的光。记其亮度为 Ip? 点光源的照射,在物体的不同部分其亮度也不同亮度的大小依赖于物体的朝向及它与点光源之间的距离,简单光照明模型,-漫反射 角度余弦的推导? 漫反射– 粗糙、无光泽物体(如粉笔)表面对光的反射– 光照明方程? 漫反射的亮度? 点光源的亮度? 漫反射系数? 入射角漫反射光的强度只与入射角有关]2,0[c o s ??? ?? dpd KIIpIdK?dI简单光照明模型 -漫反射? 将环境光与漫反射结合起来一般取 Ia (0.02~0.2)Id? 例子)( NLKIKIIII dpaade ?????简单光照明模型 -漫反射缺点对于许多物体使用上式计算其反射光是可行的但对于大多数的物体如擦亮的金属、光滑的塑料等是不适用的原因是这些物体还会产生镜面发射。简单光照明模型 -镜面反射? 镜面反射– 光滑物体(如金属或塑料)表面对光的反射? 高光– 入射光在光滑物体表面形成的特别亮的区域简单光照明模型 -镜面反射? 理想镜面反射? 观察者只能在反射方向上才能看到反射光偏离了该方向则看不到任何光。简单光照明模型 -镜面反射? 非理想镜面反射? P为物体表面上一点,L为从 P指向光源的单位矢量,N为单位法矢量,R为反射单位矢量,V为从 P指向视点的单位矢量光滑平面I Ip K scosna镜面简单光照明模型 -镜面反射? 镜面反射? Is为 镜面反射光强。 点光源的亮度– Ks是与物体有关的镜面反射系数。 n为 镜面反射指数,n越大则 Is随 a的增大衰减的越快。– n的取值与表面粗糙程度有关。– n越大表面越平滑(散射现象少稍一偏离明暗亮度急剧下降)– n越小表面越毛糙(散射现象严重)ansps KII c o s? nsps RVKII )( ??或pI简单光照明模型 -镜面反射– 反射方向计算– L在 N上的投影矢量为 Ncosu则 SL Ncosu记矢量 S Ncosu -L则有 R Ncosu S? ? LLNNLNR ????? 2c o s2 ?NRL V??S S简单光照明模型 -Phong光照明模型? 简单光照明模型模拟物体表面对光的反射作用,光源为点光源? 反射作用分为– 物体间作用用环境光 (Ambient Light)– 漫反射 (Diffuse Reflection)– 镜面反射 (Specular Reflection)简单光照明模型 -Phong光照明模型? Phong光照明模型的综合表述由物体表面上一点 P反射到视点的光强 I为环境光的反射光强 Ie、理想漫反射光强 Id、和镜面反射光 Is的总和。])()([ nsdpaasdeRVKNLKIKIIIII????????简单光照明模型 -Phong光照明模型的实现? 对物体表面上的每个点 P均需计算光线的反射方向。为了减少计算量假设– 光源在无穷远处,L为常向量– 视点在无穷远处,V为常向量– ( H?N)近似( R?V),H为 L与 V的平分向量N HL RaVbH----L和 V的角平分线? 对所有的点总共只需计算一次 H的值节省了计算时间简单光照明模型 -Phong光照明模型? Phong模型几何PL N HRV简单光照明模型 -光的衰减? 光的衰减两个阶段1)从光源到物体表面的过程中的衰减2)从物体表面到人眼过程中的衰减总的效果物体表面的亮度降低? 光照明方程1)有效衰减函数的加入2)深度暗示技术的加入简单光照明模型 -光的衰减? 光的衰减– 光在光源到物体表面过程中的衰减– 光强按 1/d2 进行衰减缺点当 d很大时变化很小当 d很小时变化很大。? 衰减函数? 光照明方程)1,1m i n ()( 2210 dcdccdf ???])()([)( nsdpaa RVKNLKIdfKII ?????简单光照明模型 -光的衰减– 光在物体表面到人眼过程中的衰减? 深度暗示( Depth Cueing)技术最初用于线框图形的显示使距离远的点比近的点暗一些。经过改进这种技术同样适用于真实感图形显示。? 设前参考面 ZZf后参考面 ZZb其比例因子分别为 Sf和 Sb( Sf和 Sb e[0,1])。给定物体上一点的深度值 Z0该点对应的比例因子 S0按如下方式确定前参考面后参考面简单光照明模型 -光的衰减? 当 Z0 Zf时取 S0Sf? 当 Z0 ? 当 Z0e [Zb,Zf]时取? 原亮度 I按比例 S0与融和亮度 Idc混合目的是获得最终用于显示的亮度 I’, Idc由用户指定)( 00 bbfbfb ZZZZSSSS ?????dcISISI )1( 00 ????简单光照明模型 -光的衰减? 特例? 取 Sf1,Sb0,Idc0则当物体位于参考面之前时,S0 Sf 1,I’ I即亮度没有被衰减。当物体位于后参考面之后时S0 Sb 0,I’ Idc0即亮度衰减为 0。而当 Z0e [Zb,Zf]时,I’ S0I亮度被部分衰减。由此可以产生较好的效果。dcISISI )1( 00 ????简单光照明模型 -彩色场景的产生? 产生彩色– 选择合适的颜色模型 ----RGB模型– 为颜色模型中的每一种基色建立光照明方程????????????????????])()([)(])()([)(])()([)(nsBdBpBaBaBBnsGdGpGaGaGGnsRdRpRaRaRRRVKNLKIdfKIIRVKNLKIdfKIIRVKNLKIdfKII简单光照明模型 -彩色场景的产生– 系数分解? 上述各等式中右端的矢量用来控制表面的基本颜色当选定了物体表面的颜色之后它们就固定不变了。用户通过调节 Ka,Kd,Ks来改变表面的反射率。?????????????????????dBdGdRaaBaGaRCCCKKKK?????????????????????dBdGdRddBdGdRCCCKKKK?????????????????????sBsGsRssBsGsRCCCKKKK简单光照明模型 -彩色场景的产生– 新的光照明方程– 统一表示????????????????????])()([)(])()([)(])()([)(nsBsdBdpBaBdBaBnsGsdGdpGaGdGaGnsRsdRdpRaRdRaRRVCKNLCKIdfICKIRVCKNLCKIdfICKIRVCKNLCKIdfICKI])()([)( nssddpada RVCKNLCKIdfICKI ????? ??????BGR,,??简单光照明模型 -多个光源? 采用多个光源– 采用 m个光源的光照明方程???????minissiddpiadaRVCKNLCKIdfICKIi1])()([)( ??????简单光照明模型 -多个光源– 例子其中 a图线框图 b图环境光c图增加漫反射 d图增加镜面反射e图增加光的衰减 f图两个点光源Phong光照明模型的 不足? Phong光照明模型是真实感图形学中提出的第一个有影响的光照明模型? 经验模型,Phong模型存在不足– 显示出的物体象塑料无质感变化– 没有考虑物体间相互反射光– 镜面反射颜色与材质无关– 镜面反射大入射角失真现象11.4 多边形绘制方法? 分类,均匀着色与光滑着色? 均匀着色方法任取多边形上一点利用光照明方程计算出它的颜色用这个颜色填充整个多边形适用场合,1)光源在无穷远处2)视点在无穷远处3)多边形是物体表面的精确表示多边形绘制方法? 缺点产生的图形效果不好。? 如左图相邻两个多边形的法向不同计算出来的颜色也不同因此造成整个物体表面的颜色过渡不光滑。? 如何解决? 光滑着色亦称插值着色Gouraud着色方法Phong着色方法Gouraud着色方法? Gouraud于 1971年提出又被称 Gouraud明暗处理? 基本思想在每个多边形顶点处计算颜色然后在各个多边形内部进行线性插值得到多边形内部各点颜色。即它是一种 颜色插值着色方法。? 注意,Gouraud着色方法并不是孤立的处理单个多边形而是将构成一个物体表面的所有多边形(多边形网格)作为一个整体来处理。Gourand 着色方法? 对多边形网格中的每一个多边形Gourand 着色处理分为如下四个步骤– 步骤1、计算多边形的单位法矢量2、计算多边形顶点的单位法矢量? 与某个顶点相邻的所有多边形的法向平均值近似作为该顶点的近似法向量? 计算出的平均法向一般与该多边形物体近似曲面的切平面比较接近Gouraud着色方法 -顶点法向计算?????niniivNiNN11Gourand 着色方法3、利用光照明方程计算顶点光强(颜色)4、对多边形顶点光强(颜色)进行双线性插值获得多边形内部各点的光强(颜色)Gourand 着色方法 -光强插值? 双线性光强插值假设待绘制的三角形投影为P1P2P3,Pi的坐标为 (xi,yi),i1,2,3一条扫描线与三角形的两条边分别交于 A(xA,yA),B(xB,yB)两点。 P(x,y)是 AB上的一点。 A点的颜色 IA由 P1、P2点的颜色 I1,I2线性插值得到BABAAABBPBBBAAAIxxxxIxxxxIIyyyyIyyyyIIyyyyIyyyyI??????????????????3311131322111212Gourand 着色方法 -增量算法? 采用增量算法可以加速计算。? 1)当扫描线 y递增一个单位变为 y1时IA,IB的增量分别为 DIA, DIB即31312121,1,,1,yyIIIyyIIIIIIIIIBAByByBAyAyA???D???DD??D?? ??其中Gourand 着色方法 -增量算法? 2)当 x递增一个单位时,IP的增量为 DIP即ABABPPxPxPxxIIIIII???DD???其中,1,Gourand 着色方法? 优点,能有效的显示漫反射曲面计算量小? 缺点? 1、高光有时会异常? 2、当对曲面采用不同的多边形进行分割时会产生不同的效果。? 3,Gouraud明暗处理会造成表面上出现过亮或过暗的条纹称为马赫带( Mach_band)效应? 改进 Phong提出双线性法向插值以时间为代价解决高光问题Phong着色方法? 基本思想通过对多边形顶点的法矢量进行插值获得其内部各点的法矢量又称为法向插值着色方法。– 步骤1、计算多边形单位法矢量2、计算多边形顶点单位法矢量3、对多边形顶点法矢量进行双线性插值获得内部各点的法矢量4、利用光照明方程计算多边形内部各点颜色Phong着色方法 -法向插值NA由 N1,N2线性插值得到BABAAABBPBBBAAANxxxxNxxxxNNyyyyNyyyyNNyyyyNyyyyN??????????????????3311131322111212Phong着色方法 -增量算法? 采用增量算法可以加速计算。? 1)当扫描线 y递增一个单位变为 y1时NA,NB的增量分别为 DNA, DNB即31312121,1,,1,yyNNNyyNNNNNNNNNBAByByBAyAyA???D???DD??D?? ??Phong着色方法 -增量算法? 2)当 x递增一个单位时,IP的增量为 DIP即ABABPPxPxPxxNNNNNN???DD???其中,1,Phong着色方法优点Phong着色方法绘制的图形比 Gouraud方法更真实体现在两个方面高光区域的扩散产生正确的高光区域缺点1,Phong着色方法计算量远大于 Gouraud着色方法2、在处理某些多边形分割的曲面时,Phong算法还不如 Gouraud算法好。增量式模型示例? 牛的三角网格模型? 用简单光照明模型显示? 用增量式光照明模型显示插值多边形绘制方法? 着色方法存在的问题– 不光滑的物体轮廓物体边缘轮廓是折线段而非光滑曲线插值着色多边形绘制方法– 透视变形– 方向依赖性插值着色多边形绘制方法– 公共顶点处颜色不连续– 顶点方向不具有代表性11.5 透明? 现实世界中有许多透明物体如玻璃等。透过透明物体可以观察到其后面的景物。如何模拟这种透明效果呢? 模拟透明的最简单的方法是忽略光线在穿过透明体时所发生的折射。虽然这种模拟方法产生的结果不真实但在许多场合往往非常有用。例如我们有时希望能够看到透过某透明物体观察其后面的景物而又不希望景物应为折射而发生变形。透明效果的简单模拟? 不考虑透明体对光的折射以及透明物体本身的厚度? 光通过物体表面不改变方向? 产生简单透明效果的方法插值透明方法过滤透明方法),( yxaIbI透明体不透明体简单透明 -插值透明? 假设多边形 1是透明的它位于观察者与不透明的多边形2之间。像素的颜色 I?由 A,B两点的颜色 I?1和 I?2插值产生即? 其中 Kt1是多边形 1的透射系数。? Kt1范围( 0,1)? Kt1 0表示多边形完全不透明所以 I? I?1? Kt1 1表示多边形完全透明所以 I? I?221 11 )1( ??? IKIKI tt ???简单透明 -插值透明? 为了产生逼真的效果通常只对两个多边形表面颜色的环境光分量和漫反射分量采用?? 进行计算得到的结果再加上多边形 1的镜面反射分量作为像素的颜色值。21 11 )1( ??? IKIKI tt ???简单透明 -过滤透明? 过滤透明方法将透明物体看作一个过滤器有选择的允许某些光透过而屏蔽了其余的光。对右图有? 其中 Kt1仍是多边形 1的透射系数但不再局限于 (0~1)。 Kt1越大多边形 2的颜色透过来的越多。 Ct?对不同的颜色各不相同。 Ct? 0表示某种颜色的光不能透过多边形 1。21 1 ???? ICKII tt??简单透明? 无论采用插值透明方法还是采用过滤透明方法当多边形 1之前还有其它的透明多边形时,I?都要递归计算。? 简单透明比较容易结合到多边形绘制算法中。考虑折射的透明? 折射定律? 其中,?i, ?t分别是入射光线在空气物体中的折射率,?i, ?t分别是入射角和折射角itti???? ?s ins in考虑折射的透明 -透射矢量的计算– 设单位入射光矢量为 I(方向与光线的入射方向相反)单位法矢量为 N单位透射光矢量为 T则INTINMMINtNMTtiitiitiitt??????????????????????????????)c o sc o s(c o sc o ss i nis i nc o s令考虑折射的透明? 当光线从高密度介质向低密度介质时?i?t,即 ?t?i。如果入射角不断增大到一定的程度折射角 ?t?90度此时透射光线沿着平行于分界面的方向传播称此时的 ?i为临界角度记为 ?c 。当 ?i ?c时发生全反射透射与反射光合二为一。? 如何产生带有折射的透明效果呢光透射模型的研究? 早期简单透射现象的模拟? 1980年,Whitted光透射模型首次考虑了光线的折射现象? 1983年在 Whitted的基础上,Hall光透射模型考虑了漫透射和规则透射光11.6 整体光照明模型简单光照模型(亦称局部光照模型)不考虑周围环境对当前景物表面的光照明影响,忽略了光在环境景物之间的传递,很难表现自然界复杂场景的高质量真实感图形。为了增加图形的真实感必须考虑环境的漫射、镜面反射和规则投射对景物表面产生的整体照明效果。整体光照明模型? 物体表面入射光的构成( 1)光源直接照射( 2)其它物体的反射光( 3)透射光? 局部光照明模型仅考虑了( 1)整体光照明模型? 例如从视点观察到的物体 A表面的亮度来源于三方面的贡献( 1)光源直接照射到 A的表面然后被反射到人眼中的光产生的。( 2)光源或其它物体的光经 A物体折射到人眼中的光产生的。( 3)物体 B的表面将光反射到物体A的表面再经物体 A的表面反射到人眼中产生的。? 局部光照明模型仅考虑了( 1)Witted光照模型? Whitted光照模型基于如下假设? 物体表面向视点方向 V辐射的光亮度 I?由三部分组成( 1)光源直接照射引起的反射光亮度 Il?。( 2)来自 V的镜面反射方向 R的其它物体反射或折射来的光的亮度 Is?。( 3)来自 V的透射方向 T的其它物体反射或折射来的光的亮度 It?Witted光照模型? Witted光照模型,I? Il? Ks Is? KtIt?? 或– Is?为镜面反射方向的入射光强度 Ks为镜面反射系数为 0 1之间的一个常数– It?为折射方向光强,Kt为透射系数是 0 1之间的常数– Il?的计算可采用 Phong模型因此关键是 Is和 It的计算。如何计算呢?????? tttsssl ICKICKII ???Witted光照模型 -反射、折射方向计算? 已知视线方向 V求其反射方向 R与折射方向 T( N是表面的法向方向 )? 视线 V的反射方向 R? 折射方向 TNVRLTi?i?t?i?t?VVNNR ??? )(2INT titi???????????)c o sc o s(令光线跟踪算法的基本原理? 自然界中光线的传播过程光源 物体表面 物体表面人眼? 光线跟踪过程 ----光线传播的逆过程光线跟踪算法的基本原理? 从视点向每个 象素发出一条光线它与场景中的一些物体表面相交最近的交点即为可见点记为 P像素的亮度即由 P点的亮度确定。由 Whitted光照模型可知,P点的亮度由三部分组成其中 Il?可以直接由局部光照模型计算得到。光线跟踪算法的基本原理? 为了求 Is?和 It?从 P点发出反射光线和透射光线它分别交场景中的物体表面于 Ps和 Pt,Ps和 Pt点的亮度即分别为 Is?和 It?,将它们求出代入 Whitted模型即可。但是,Is?和 It?同样由Whitted模型确定即 Whitted模型是一个递归式从而计算 Is?和 It?需要重复以上的计算过程,计算局部光亮度、发出反射光线与透射光线。。。可以用一棵光线树来表示光线跟踪算法的基本原理? 递归终止条件1、光线不与场景中的任何物体相交2、被跟踪的光线达到了给定的层次3、由于 Ks和 Kt都小于 0当光线经过反射和折射后其亮度会衰减。因此可以预先设置一个阈值在进行光线跟踪时若被跟踪光线对像素亮度的贡献小于这个阈值便停止跟踪。光线跟踪算法 -算法描述设置视点投影平面以及窗口的参数For (窗口内的每一条扫描线)for (扫描线上的每一个像素){ 确定从视点指向像素中心的光线 ray像素的颜色 RayTracing(ray,1)}光线跟踪算法描述Color RayTracing(Ray ray,int depth){ 求 ray与物体表面最近的交点 Pif (有交点){ 用局部光照明模型计算 P点的 Iccolor Ic;if ( depth{ 计算 ray的反射光线IsRayTracing(反射光线,depth1)if (物体是透明的){ 计算 ray的透射光线ItRayTracing(透射光线,depth1);}color Ic Is It ;}} else color blackreturn color ;}光线跟踪算法根据光线跟踪基本原理假设在显示分辨率为N× M的屏幕上生成图形必须从视点出发通过屏幕向景物发射 N× M条光线。设每根光线在场景中经过反射和折射平均派生出 d根光线并设每一景物交点朝光源发射 m 条阴影探测光线则总的光线数增加至 (m1)dNM。当 m为 2,d为 5N为 800,M为 600时其光线数目是 720万条。这意味着需进行 720万次直线与景物的求交计算才能完成图形的绘制。庞大的求交量使图形绘制耗费大大增加。生成一幅中等复杂程度的真实感图形需要数分钟至数小时。光线跟踪算法优点能够方便的产生阴影模拟镜面反射与折射现象。缺点计算量大每一条光线都要与场景中的物体进行求交、计算光照模型等。