计算机图形学视觉外观浙江大学_第1页
计算机图形学视觉外观浙江大学_第2页
计算机图形学视觉外观浙江大学_第3页
计算机图形学视觉外观浙江大学_第4页
计算机图形学视觉外观浙江大学_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

1、v“light makes right” andrew glassnerv当绘制三维物体时,模型应不仅从从几何上当绘制三维物体时,模型应不仅从从几何上看正确,而且应具有看正确,而且应具有真实的视觉外观真实的视觉外观v实现方法:实现方法:通过给表面设置材料、应用光源、通过给表面设置材料、应用光源、加纹理、用雾、透明、反走样、合成等技术加纹理、用雾、透明、反走样、合成等技术v人为何可以看见物体?人为何可以看见物体?光子光子从物体表面发出或反射到达观察者的从物体表面发出或反射到达观察者的眼睛。这些光子可以来自光源或其它物体。眼睛。这些光子可以来自光源或其它物体。v这里主要讨论三类光源:这里主要讨论三

2、类光源:(1). 方向(平行)光源方向(平行)光源 directional lights(2). 点光源点光源 point lights (3). 聚光灯聚光灯 spotlights发散角发散角v方向光:放在离物体方向光:放在离物体无穷远无穷远的地方。的地方。例子:太阳光例子:太阳光v点光源和聚光灯都称为点光源和聚光灯都称为位置位置光源,因为它们都有光源,因为它们都有一个位置。点光源可看成发射光子的点。一个位置。点光源可看成发射光子的点。v聚光灯参数:方向矢量聚光灯参数:方向矢量sdir、发散角、发散角scut、spot exponent sexp(控制光从中心向周围的衰减)一个长方形网格(一

3、个长方形网格(1001002个三角形),个三角形),受平行光,点光源和聚光灯照射的光照效果受平行光,点光源和聚光灯照射的光照效果v光源参数:光源参数:亮度和颜色亮度和颜色v一个光源可进一步细分为一个光源可进一步细分为: ambient, diffuse, specular intensitynotationdescriptionsambambient intensity colorsdiffdiffuse intensity colorsspecspecular intensity colorsposlight source positionv在现实世界中,光源会随距离的平方衰减在现实世界中,

4、光源会随距离的平方衰减v在实时绘制中,在实时绘制中,光源通常不随距离衰减。光源通常不随距离衰减。这样做的原因:这样做的原因:(1). 容易控制(不必担心距离效应)容易控制(不必担心距离效应)(2). 计算速度快计算速度快v在实时绘制系统中,材质包含的参数:在实时绘制系统中,材质包含的参数:ambient, diffuse, specular, shininess (会聚会聚指数指数), and emissivev物体的颜色最终由下面的参数决定:材质物体的颜色最终由下面的参数决定:材质参数、照射表面的光源参数、光照模型参数、照射表面的光源参数、光照模型notationdescriptionmam

5、bambient material colormdiffdiffuse material colormspecspecular material colormshishininess parametermemiemissive material color第一排:第一排:ambient变化的影响;第二排:变化的影响;第二排:diffuse变化的影响变化的影响第三排:第三排:specular变化的影响;第四排:变化的影响;第四排:shininess变化的影响变化的影响vlighting: 用来指定材质、光源和物体几何之间用来指定材质、光源和物体几何之间的相互作用。的相互作用。vshading:是

6、指执行光亮度计算并决定象素颜色:是指执行光亮度计算并决定象素颜色的过程。的过程。v三种三种shading类型:类型:flat,gouraud,phong对应于按每个对应于按每个多边形多边形、顶点顶点、象素象素计算光亮度计算光亮度vflat shading:为每个三角形计算一颜色,:为每个三角形计算一颜色,整个三角形以该颜色填充。整个三角形以该颜色填充。vgouraud shading:先计算三角形每个顶:先计算三角形每个顶点的光亮度,然后在三角形上插值光亮度点的光亮度,然后在三角形上插值光亮度vphong shading: 对于每个象素,根据多边对于每个象素,根据多边形顶点的法向插值计算得到象

7、素的法向,形顶点的法向插值计算得到象素的法向,然后用该法向计算光亮度然后用该法向计算光亮度 flat shading gouraud shading phong shadingvflat shading的的优点优点:简单、快速、可看清曲面:简单、快速、可看清曲面蕴涵的小面片。蕴涵的小面片。缺点缺点:绘制的曲面看起来不光滑:绘制的曲面看起来不光滑vgouraud shading:绘制的曲面较光滑、快速:绘制的曲面较光滑、快速(基基本上与本上与flat shading一样快一样快 ),绝大多数图形硬件,绝大多数图形硬件支持。支持。绘制效果与物体的层次细节密切相关绘制效果与物体的层次细节密切相关2

8、18 288个三角形个三角形256 1024 16384个三角形个三角形vgouraud shading的其它缺点:丢失高光、丢失聚光灯的其它缺点:丢失高光、丢失聚光灯效果、效果、mach带效应。带效应。部分解决方法:采用带有光照效果的纹理部分解决方法:采用带有光照效果的纹理vphong shading可以避免上述缺陷,但算法复杂、计算可以避免上述缺陷,但算法复杂、计算量大。商用的大部分图形卡不支持。量大。商用的大部分图形卡不支持。v在在gouraud shading中,如果把三角形剖分成比象素还小,中,如果把三角形剖分成比象素还小,则则gouraud shading可取得和可取得和phong

9、 shading一样的绘制一样的绘制效果。但需较大的速度代价。因而该思想很少在实时绘效果。但需较大的速度代价。因而该思想很少在实时绘制系统实施。制系统实施。v顶点的照明采用光照模型(顶点的照明采用光照模型(lighting model)计算。在实)计算。在实时绘制中,所有的光照模型都非常相似,主要分成三部时绘制中,所有的光照模型都非常相似,主要分成三部分:分: ambient, diffuse, specularambient diffuse specular resultv实时绘制的光照模型通常不完全基于物理理论,实时绘制的光照模型通常不完全基于物理理论,但容易控制且结果基本可以接收。但容易

10、控制且结果基本可以接收。v大部分图形加速卡采用类似的光照明模型。大部分图形加速卡采用类似的光照明模型。vvertex 和和pixel shading支持程序员把自己的支持程序员把自己的shader写入硬件。写入硬件。v基于基于lambert 定律定律:对于理想的漫反射表面,其反射光:对于理想的漫反射表面,其反射光由表面法向由表面法向n和光矢量和光矢量l的余弦决定:的余弦决定:coslndiffi几何解释几何解释lll cos/v漫反射与摄像机的位置和方向无关,即漫反射分量是漫反射与摄像机的位置和方向无关,即漫反射分量是view independent。v为了利用光源和物体的漫反射颜色,我们改造

11、上述方为了利用光源和物体的漫反射颜色,我们改造上述方程,得到程,得到漫反射贡献:漫反射贡献:v由于表面法向由于表面法向n和光矢量和光矢量l的夹角大于的夹角大于900时,漫反射分时,漫反射分量为量为0,得到,得到v注注:部分波长的光子会被材料吸收部分波长的光子会被材料吸收。例如,若。例如,若 则则表示把相应分量相乘 ;)(diffdiffdiffsmlnidiffdiffdiffsmlni)0),max()0 . 0 , 0 . 0 , 0 . 1 (diffm)0 . 0 , 0 . 0 , 0 . 1 (diffdiffsm)0 . 1 , 0 . 1 , 0 . 1 (diffsv镜面反射

12、主要使得物体看起来发亮镜面反射主要使得物体看起来发亮(shiny),有高光。,有高光。高光帮助观察者了解问题的曲率,并判断光源的位置高光帮助观察者了解问题的曲率,并判断光源的位置和方向。和方向。没有镜面反射没有镜面反射 有高光有高光 v假设表面点为假设表面点为p,v为为p到观察者的矢量,到观察者的矢量,r为光矢量对于为光矢量对于法向法向n的反射矢量:的反射矢量:v该公式称为该公式称为phong光照方程。镜面分量是光照方程。镜面分量是view dependentshishimmspeci)(cos)(vrv反射矢量反射矢量r的计算:的计算:ll)n2(nrv由由blinn提出的光照方程的另一形式

13、提出的光照方程的另一形式 采用该方程的原因:采用该方程的原因:不需要计算反射矢量,速度快不需要计算反射矢量,速度快shishishishimmmmspeci4)()( )(cos)(hnvrvlvlhhn。其中:v若考虑物体的材质和光源的参数若考虑物体的材质和光源的参数v当当n和和h的夹角大于的夹角大于900时,镜面反射分量为时,镜面反射分量为0,得到,得到specspecmspecshismhni)(specspecmspecshismhni0 ,)(max会聚指数越大,则高光区域越窄会聚指数越大,则高光区域越窄当会聚指数较小时(高光区域较大),随着当会聚指数较小时(高光区域较大),随着sh

14、ading算法的算法的改善,改善,phong高光反而会出现缺陷。这会在高光反而会出现缺陷。这会在(n.l)1时,为时,为downsampling;当当a require “n” passes for all geometry # of passes is practically unboundedvt-buffer require 1 pass for all static geometry # of samples depends on implementation limits multiple rendering for moving objects # could be 2-4 for

15、 slow moving objects # more for fast moving objectsvt-buffer 和和 accumulation buffer与与fsaa(全屏(全屏幕反走样)相比的幕反走样)相比的共同优点共同优点:在一个象素单元内,:在一个象素单元内,采样模板不一定是均匀的。采样模板不一定是均匀的。v每个每个pass与其它与其它pass无关,因而可采用均匀模板无关,因而可采用均匀模板外其它的模板,如外其它的模板,如(0,0.25), (0.5,0.0), (0.75, 0.5), (0.25,0.75)。v上述模板称为上述模板称为旋转网格超采样旋转网格超采样(rota

16、ted grid super-sampling, 简称简称 rgss),这种模板对于接,这种模板对于接近水平或垂直的直线能提供更好的反走样效果,近水平或垂直的直线能提供更好的反走样效果,而这也是应用中最需要的。而这也是应用中最需要的。rgssvmultisampling:在单个:在单个pass中对每个象素采样多中对每个象素采样多次的方法。次的方法。va-buffer是一种是一种multisampling方法,由方法,由carpenter提出。通常用于在软件中生成高质量提出。通常用于在软件中生成高质量的绘制结果,但不能实时生成。它的主要思想是的绘制结果,但不能实时生成。它的主要思想是计算覆盖象素

17、网格单元的多边形逼近。计算覆盖象素网格单元的多边形逼近。v是一种是一种边反走样方法边反走样方法,可以绘制透明物体。,可以绘制透明物体。v在硬件在硬件a-buffer中,为了节省计算量,象素网格中,为了节省计算量,象素网格单元对应的多边形光亮度值只计算一次,所有象单元对应的多边形光亮度值只计算一次,所有象素网格单元内的采样点共享该光亮度值。因此,素网格单元内的采样点共享该光亮度值。因此,基本的基本的a-buffer算法不能处理纹理和阴影的反走算法不能处理纹理和阴影的反走样。样。v在在a-buffer中,对于每个屏幕网格单元,每个绘中,对于每个屏幕网格单元,每个绘制的多边形生成一个制的多边形生成一

18、个coverage mask(完全或部分完全或部分覆盖象素单元覆盖象素单元) 多边形的角多边形的角 部分覆盖象素网格单元,网格单元细分为部分覆盖象素网格单元,网格单元细分为4x4的子网格。覆盖的子网格单元为的子网格。覆盖的子网格单元为1,其余为,其余为0。16位的位的mask为:为:0000 0111 1111 01110 0 0 00 1 1 10 1 1 11 1 1 1v一般的反走样方法一个采样点只影响一个象素,一般的反走样方法一个采样点只影响一个象素, nvidia的的quincunx方法单个采样点影响的象方法单个采样点影响的象素多于一个。素多于一个。1/21/81/81/81/8由于

19、共享,每个象由于共享,每个象素平均只需素平均只需2个采样个采样点,但是效果却比点,但是效果却比2个采样点的全屏幕个采样点的全屏幕反走样好不少。反走样好不少。v由于场景中可能包含在屏幕上投影非常小的物由于场景中可能包含在屏幕上投影非常小的物体,因此规整的采样模板总会存在某种形式的体,因此规整的采样模板总会存在某种形式的走样。走样。v解决方案:把采样点在象素内随机分布,每个解决方案:把采样点在象素内随机分布,每个象素有不同的采样模板。这种方法称为象素有不同的采样模板。这种方法称为随机采随机采样样。v随机采样原理随机采样原理:用噪声取代重复性的走样现象,:用噪声取代重复性的走样现象,人的视觉系统更能

20、接收。人的视觉系统更能接收。v最常用的随机采样方法为最常用的随机采样方法为jittering,这是一种,这是一种分层采样分层采样(stratified sampling).v原理原理: 假设每个象素需要假设每个象素需要n个采样点,我们把象个采样点,我们把象素区域分成素区域分成n个面积相同的区域,把每个采样个面积相同的区域,把每个采样点随机地置于其中的一个区域。象素的最终颜点随机地置于其中的一个区域。象素的最终颜色取为采样点的加权平均。色取为采样点的加权平均。每个象素划分成每个象素划分成3x3的子单元,每个采样点在子的子单元,每个采样点在子单元内随机出现单元内随机出现v采用交替随机采样可以把由于

21、每个象素采用相采用交替随机采样可以把由于每个象素采用相同模板引起的走样缺陷最小化。同模板引起的走样缺陷最小化。采用累积缓存反走样,采用累积缓存反走样,每个象素采样四个点每个象素采样四个点每个象素的采样模板不相每个象素的采样模板不相同,模板交替。同,模板交替。效果好!效果好!可见重复模板走样现象可见重复模板走样现象v在实时绘制中,透明效果的处理通常是简单化和在实时绘制中,透明效果的处理通常是简单化和有限的。有限的。v如下效果通常没有:折射、透明物体厚度引起的如下效果通常没有:折射、透明物体厚度引起的光的衰减等光的衰减等v有一些透明效果总比一点透明效果都没有好!有一些透明效果总比一点透明效果都没有

22、好!v通过把表面颜色与其后面物体的颜色相混合,实通过把表面颜色与其后面物体的颜色相混合,实时绘制系统确实提供了绘制半透明表面的能力。时绘制系统确实提供了绘制半透明表面的能力。v为了把透明物体的颜色与其后面物体的颜色相混为了把透明物体的颜色与其后面物体的颜色相混合,需要合,需要alpha blendingv当物体绘制到屏幕上时,除了当物体绘制到屏幕上时,除了rgb颜色值、颜色值、z深深度外,度外,还可以有一个还可以有一个可选项可选项(rgba或者或者rgb )。v值用来描述物体在给定象素的值用来描述物体在给定象素的不透明度不透明度,1.0表表示不透明示不透明(完全覆盖完全覆盖); 0.0表示完全

23、不被隐藏表示完全不被隐藏;v为了使一个物体看起来透明为了使一个物体看起来透明,我们把它绘制到已我们把它绘制到已有场景的上面有场景的上面,其其值小于值小于1.0;vblending通过通过over操作来实现操作来实现:v很显然很显然,当当=1,即物体不透明时即物体不透明时,该象素的颜色变该象素的颜色变为当前物体的颜色为当前物体的颜色.,)1 (为合成后的颜色色为混合前目标物体的颜值为透明物体的为透明物体的颜色其中odssdsssoccccccv为了绘制透明物体为了绘制透明物体, 场景通常需要排序。首先绘场景通常需要排序。首先绘制不透明物体,然后把不透明物体以制不透明物体,然后把不透明物体以bac

24、k to front的次序与其进行混合。由于混合操作是与的次序与其进行混合。由于混合操作是与次序有关的,以任意次序绘制会导致不正确的结次序有关的,以任意次序绘制会导致不正确的结果。果。以任意次序绘制透明物以任意次序绘制透明物体,结果不正确体,结果不正确以后向前的次序绘制,以后向前的次序绘制,结果正确结果正确以任意次序绘制透明物以任意次序绘制透明物体,结果不正确体,结果不正确从后向前的次序绘制从后向前的次序绘制(采用采用depth-peeling技技术术),结果正确结果正确v当无法进行场景排序时,最好用当无法进行场景排序时,最好用z缓存进行排序缓存进行排序测试。但绘制透明物体时,其测试。但绘制透

25、明物体时,其z值不更新。这样值不更新。这样在绘制结果中,至少所有的透明物体都会出现。在绘制结果中,至少所有的透明物体都会出现。v不需要排序的方法:不需要排序的方法: 采用该方程,由于透明物体的采用该方程,由于透明物体的alpha值不影响目值不影响目标物体,绘制次序可以任意。但结果看起来不自标物体,绘制次序可以任意。但结果看起来不自然。然。dssocccvover操作在真实场景和虚拟场景的混合中非常有操作在真实场景和虚拟场景的混合中非常有用。这个过程称为合成(用。这个过程称为合成(compositing)。)。v在合成中,每个象素除了在合成中,每个象素除了rgb值外,还有值外,还有alpha值。

26、值。valpha通道有时也称遮罩(通道有时也称遮罩(matte),它显示了物),它显示了物体的轮廓形状。体的轮廓形状。v存贮存贮rgba图像的最常用方法为预乘图像的最常用方法为预乘alpha(pre multiplied alphas)。在该方法中,)。在该方法中,rgb值在存值在存贮之前,先乘上贮之前,先乘上alpha值。此时值。此时over操作变得更操作变得更有效:有效:值为预存的其中rgb)1 (sdssoccccv与与alpha通道相关的另一个概念为色键技术。通道相关的另一个概念为色键技术。v演员在演员在篮色篮色、黄色或绿色屏幕前拍摄,然后与、黄色或绿色屏幕前拍摄,然后与背景混合。其原

27、理为把该颜色当成透明色。背景混合。其原理为把该颜色当成透明色。v在电影工业中,该过程称为在电影工业中,该过程称为blue screen matting.v在实时图形学中,雾是一种可加到最终图像的在实时图形学中,雾是一种可加到最终图像的大气现象。大气现象。无雾效果无雾效果有雾效果有雾效果v增强室外场景的增强室外场景的真实感真实感v由于雾的效果随着离视点距离的增加而真强,由于雾的效果随着离视点距离的增加而真强,因此它有助于帮助观察者因此它有助于帮助观察者判断物体的远近判断物体的远近。v有助于提供有助于提供光滑的光滑的通过远平面实现的通过远平面实现的物体剔除物体剔除。如果把雾的效果设置成在接近远平面

28、的地方由如果把雾的效果设置成在接近远平面的地方由于浓雾而不可见,则在远平面外的物体看起来于浓雾而不可见,则在远平面外的物体看起来可自然隐退。如果没有雾的效果,远平面外的可自然隐退。如果没有雾的效果,远平面外的物体会突然出现或消失。物体会突然出现或消失。v雾的效果雾的效果可用硬件实现可用硬件实现,不会或带来很少的额,不会或带来很少的额外计算量。外计算量。v假设雾的颜色(由用户指定)为假设雾的颜色(由用户指定)为cf,雾因子,雾因子(fog factor)为)为f,待绘制物体的颜色为,待绘制物体的颜色为cs ,则象素的最终颜色则象素的最终颜色cp为:为:v在上述方程中,在上述方程中,f 的值不是很

29、直观,它随离视的值不是很直观,它随离视点的距离而递减。这是点的距离而递减。这是opengl和和directx采采用的方程,其好处是可使计算用的方程,其好处是可使计算f的方程变得简的方程变得简单。单。v另一种描述方式为另一种描述方式为f = 1- ffspffccc)1 ( v指数雾指数雾(exponential fog):v平方指数雾平方指数雾(squared exponential fog): 其中其中df为控制雾浓度的参数。计算得到为控制雾浓度的参数。计算得到 f 以后,以后,把结果截取把结果截取(clamp)到到0,1pfzdef2)(pfzdefv在硬件加速中,有时采用查找表来实现雾函

30、数。在硬件加速中,有时采用查找表来实现雾函数。v对于给定的一些深度值,先计算并存贮好其雾对于给定的一些深度值,先计算并存贮好其雾因子的值。对于任一深度值,雾因子从查找表因子的值。对于任一深度值,雾因子从查找表直接读取(或为最接近两个值的线性插值)。直接读取(或为最接近两个值的线性插值)。v查找表中可以存贮任意值(而不仅仅是上面的查找表中可以存贮任意值(而不仅仅是上面的线性或指数函数),从而线性或指数函数),从而生成一些特殊效果生成一些特殊效果。v雾既可以在雾既可以在顶点层顶点层也可以在也可以在象素层象素层计算。计算。v顶点层:顶点层:雾的效果在光照明方程计算,其它地雾的效果在光照明方程计算,其它地方用方用gouraud shading插值。插值。v象素层象素层:用

温馨提示

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

评论

0/150

提交评论