版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
真实感图形的生成与处理要点:简单光照模型明暗处理方法阴影产生技术整体光照模型与光线跟踪纹理处理颜色
OpenGL中的真实感图形的生成生成真实感图形的四个步骤(1)场景造型和几何建模在计算机上进行场景造型。也就是采用数学的方法建立所需要的三维场景的几何描述,并将其输入到计算机中。(2)透视变换将三维几何描述转换为二维透视图,即进行场景变换和透视变换。(3)可见面判定确定场景中的所有可见面,也就是消隐处理,将视域之外或被其他景物遮挡的不可见面消除。(4)光照及颜色处理计算场景中可见的颜色,也就是根据假定的光照条件和景物外观因素,依据一定的光照模型,计算可见面投射到观察者眼中的光亮度和颜色分量,并把它们转换为适合图形设备处理的颜色值。从而确定投影画面上每一个像素的颜色,最终生成图形,达到视觉上的最佳效果。光线与物质
lightandMatterWhenlightstrikeasurface,someofitsabsorbed,andsomeofitisreflected.Ifthesurfaceisopaque,reflectionandabsorptionaccountforallthelightstrikingthesurface.Ifthesurfaceistranslucent,someofthelightistransmittedthroughthematerialandemergestointeractwithotherobject.Thisinteractiondependonwavelength.Anobjectilluminatedbywhitelightappearsredbecauseitabsorbmostoftheincidentlightbutreflectslightintheredrangeoffrequencies.Ashinyobjectappearssobecauseitssurfaceissmooth.Conversely,adullobjecthasaroughsurface.
LightandMatterSpeculardiffuseTranslucent光源
LightSourcesAddingthecontributionfromasourceLightsourceLightSourcesPointlightilluminatingasurfaceShadowscreatedbyfinite-sizelightsourceParallellightsourceSpotlight光照模型
lightingModel简单光照模型只考虑光源照射在物体表面的发射光,假定物体表面是光滑的,而且是由理想材料构成。复杂光照模型
又叫整体光照模型,这种模型不仅要考虑发射光,还需要考虑周围环境的光对物体表面的影响、物体的透明度、阴影的处理、光源的位置和个数等。光照模型LightingModel环境光
Ee=IaKa
Ee——环境光强;Ia——泛光光强;Ka——漫放射系数[0-1]镜面反射光
Es=IsKscosnβ
Es——反射光在观察方向的光强;Is——点光源的光强;
Ks——物体表面反射率[0—100%];漫射光Ed=IdKdcosθPhong模型(环境光+镜面反射光+漫射光)环境光AmbientReflection环境光
:光线在空间中经过复杂的传播之后形成的弥漫于整个空间,无固定的光源、方向的光。环境光可以认为是周围景物如墙壁、天花板、桌面等物体发出的通过物体表面而反射出来的光。环境光强Ee=IaKa
Ia——漫射光强度(泛光光强);
Ka——漫反射系数[0≤
Ka≤1]
不同的物体有不同的Ke值镜面反射光SpecularReflection镜面反射光:在光源照射下,物体表面可以产生高亮度或是亮点,即所谓的高光效应,这种现象称为镜面反射。Es=IsKscosnβ
Es—反射光在观察方向的光强;
Is—点光源的光强;
Ks—物体表面反射率[0—100%];
β—视点方向S与镜面反射方向的夹角。
n—物体表面光滑度系数(0—2000)βθθSNLR漫反射光DiffuseReflection漫反射光:是由特定光源在物体表面反射光中那些向空间各个方向均匀反射出去的光。这种光的反射强度与观察点的位置无关.Ed=IdKdcosθ
Id—点光源发出的入射光的强度
Kd—入射光的漫反射系数(0-1之间)MNLθPhong模型PhongReflectionModelPhong模型(环境光+镜面反射光+漫射光)单个光源E=Ee+Ed+Es=IaKa+IdKdcosθ+IsKscosnβ多个光源(n个)PhongReflectionModel可分解为RGB三种颜色:光的强度随距离的衰减公式d—从点光源发出的光线到某一观察点的所经过的距离a、b、c——系数,调整其大小可以得到不同光照效果。明暗处理shading在计算机三维图形真实感绘制过程中,得到了物体在光照条件下的表面个点的强度值后,还需要将这些强度值转换为计算机图形系统所能支持的明暗模式,从而进行浓淡处理。对曲面,可通过计算曲面上每点的亮度来获得光照效果对平面,由于其上每点的法向量相等,可以使用同一亮度来获得光照效果。不同的多边形具有不同的亮度,在进行明暗处理以后,可以使所生成的物体图形具有层次感恒定光强的明暗处理也叫Flat明暗处理法采用一种颜色来对多边形进行绘制,在多边形上任意取一点,利用简单光照模型计算出该点的颜色,把这点的颜色作为多边形的颜色。适用于平面体的真实感图形的处理。
当:(1)光源无穷远;(cosθand衰减函数=const.)(2)观察点距物体足够远;(cosβ=const.)(3)多边形中不含有曲线面。时,可以得到一个比较真实的场景。由于相邻多边形的法向量不同,因而计算出的颜色也不同。存在在相邻边界处颜色过渡不光滑的问题。也叫亮度插值明暗处理,它是通过在面片上将光强度值进行线性插值来对该多边形面片进行绘制的。步骤如下:(1)确定每个多边形在顶点处的平均单位法向量;(2)根据光照模型,计算每个顶点的光强度;(3)用顶点强度对多边形表面上的光强进行线性插值。具体算法见书P256页。不足之处:会出现过亮或过暗的马赫条纹;只是考虑了漫射光;对于具有层次分别且相互平行的多边形面,有时会难于表现它们之间层次感。Gouraud明暗处理为了克服Grouraud方法对镜面反射区域所引起的畸变,Phong提出了用法向的插值来代替强度插值的方法。具体计算步骤如下:(1)计算每一个多边形顶点处的平均单位法矢量;(2)用双线性插值方法对多边形内部各个点的法矢量进行求解;(3)根据光照模型沿着每条扫描线计算面上各个点所对应的投影像素的光强度。特点:比Grouraud明暗处理的精度要高,但是计算量要大得多。Phong
法向插值法透明的处理TransmittedLight入射光反射光折射光透明物体透明物体表面的光强=反射光+折射光光强透明的处理TransmittedLight透明性的简单模型(不考虑漫射、折射)MSLPQN到达S点的光强:Es=(1-k)EQ+kEP
(0≤k≤1)k为透明物体的透射系数k=1时,完全透明,观察着可以完全看到背景景物k=0时,物体表面不透明通常采用深度缓冲器的算法来实现透明效果:先处理不透明物体以决定可见不透明表面的深度,然后将透明物体的深度值与先前存在深度缓冲器中的值进行比较。这样就可以增加对透明表面深度及其他参数的储存,再将可见透明面的光强与其后面可见不透明面的光强综合考虑进行绘制。透明的处理TransmittedLightSnell’sLawθiθiθrηrηi折射光入射光反射光HFRN折射率折射方向的单位投射矢量:N—物体表面的单位法矢量L—光源方向的单位矢量TIndicesofreflactionL产生具有阴影的图形算法步骤:(1)将视点移到光源所在位置,用多边形区域进行排序消隐算法,将多边形分成向光和背光多边形;(2)将视点移到原来观察位置,对向光多边形和背光多边形进行消隐,并采用某种光照模型计算多边形的亮度。阴影产生技术
ShadingTechnologyQABCDL理论上讲,从视点以及光源看过去都是可见的面是位于阴影之外的,只有当从视点看过去,而从光源看过去不可见的面,才会落在阴影之内(下图)整体光照模型Whitted
光照模型(1980):在Phong模型中增加了环境镜面反射光和环境规则透射光亮度。它不仅考虑了光源直接照射时所引发的反射光到达观察者的光亮度,还考虑了从场景中其他物体镜面反射或透射过来的光。E=Ee+KsIs+KtItEe—反射光亮度,按Phong模型计算。Ks、Kt—反射系数、透射系数,{0,1}之间。Is—镜面反射方向上,其他物体向点M辐射的光亮度。It—在折射方向上其他物体向点M辐射的光亮度。NLSMT光线跟踪算法利用光线的可逆性,不是从光源出发,而是从视点出发,沿着视线进行追踪,模拟光的传播路径来确定反射、折射和阴影。首先从观察点位置开始向光源反方向跟踪光线,单一光线投向物体表面再反射到视点,然后对每个像素点进行计算并建立每个像素点的亮度值,最终显示在画面上的像素点是物体表面上距离观察点的最近的点,从而产生高度真实的三维图形,因此计算量很大。但对于每个像素点都单独计算,故能较好的表现曲面细节。其产生的明暗效果也最真实。光线跟踪LightTraceLightTraceVMAP1236450102yxScreenpixelBzEB=EeB+KsBIsB+KtBItBEeB光源直接照射及环境光所产生的局部光强KsBIsB反射光2来的光强对B点的作用KtBItB透射光3来的光强对B点的作用IsB=EA,ItB=EcEA=EeA+KsAIsA+KtAItAEeA光源直接照射及环境光所产生的局部光强KsAIsA反射光5来的光强对A点的作用IsA=EpKtAItA=0(A为不透明体)EpBACIsBItBIsAItAIsCItCEc=Eec+KscIsc+KtcItcItc=背景光强,Isc=6点的内反射光强光线跟踪二叉树算法光线跟踪的反走样技术图形的走样现象:由于相邻的两个像素点之间有一定的距离是相互离散的,而且纯粹的光线跟踪算法又是一种典型的点采样技术,因此用像素点阵组合出的图形与真实的景物之间不可避免的会存在误差。以直线为例,计算机所画出的直线就有可能呈现出锯齿状,细小的物体在屏幕上也可能显示不出来。像素细分反走样技术:将发生图形走样的像素点细分为4个子像素,再分别对子像素进行光线跟踪。子像素的位置就是走样像素的四个角点。通过这四个角点分别进行光线跟踪,最终像素的光亮度就是这四个角点光亮度的算术平均值。现实世界中的物体表面往往是具有各种各样的纹理的,我们把这种纹理称为表面细节。物体表面细节可以分为表面的颜色纹理和几何纹理。颜色纹理:木制的家具表面、建筑墙面的拼花图案等。颜色纹理可以用纹理映射来描述。几何纹理:由不规则的细小凹凸组成的桔子表面的褶皱等。几何纹理可以采用一个扰动函数来描述。纹理的两种定义方法:
(1)连续法:把纹理函数定义为一个二元函数,其函数的定义域就是纹理的空间。(2)离散法:把纹理定义在一个二维数组中,用以代表纹理空间中的行间隔、列间隔固定的一组网络点上的纹理值纹理处理textureMapping纹理映射:将一定的纹理函数映射到物体表面上,在对物体表面进行光亮度计算时可采用相应的纹理函数值作为物体表面的漫反射光亮度值代入光照模型进行计算。因此,可以采用纹理映射来对颜色纹理进行模拟。在光滑的物体表面上描绘花纹实际上就是将花纹在表面上进行一定的映射而成的,这个过程实际上就是将任意的平面图形或图像覆盖到物体表面上,使得物体表面形成真实的色彩花纹。纹理映射TextureMappingTextureAffine纹理映射涉及到纹理空间、景物空间和图像空间(屏幕空间)三个空间的相互转换和映射。st0景物空间zdsvu0纹理空间dAyx0图像空间像素域e一般说来,实现映射可以有两种办法:(1)将纹理模式映射到物体表面,然后由物体表面映射到(图像空间)投影屏幕上。(2)将像素区域(图像空间)映射到物体表面,然后再有物体表面映射到纹理空间TextureMapping
纹理空间(u,v)向物体空间(s,t)的映射(用线性函数):s=fs(u,v)=asu+bsv+cst=ft(u,v)=atu+btv+ct物体空间(s,t)向投影屏幕空间(x,y)的映射:
x=x(s,t)y=y(s,t)z=z(s,t)w=w(s,t)
TextureMapping扰动映射纹理映射技术只能在光滑的表面绘制事前定义的花纹图案,不能表现由于表面的微观几何凹凸不平而呈现出来的粗糙质感。为了模拟表面细微的凸凹不平,Blinn在1978年提出了一种算法。该算法通过引入一个扰动函数来修改景物表面细微的凸凹不平现象。Blinn的凸凹纹理映射技术,是通过对景物表面各个采样点的位置做微小的扰动来修改景物表面的法线来模拟物体表面上的微观几何形状,从而引起景物表面的法向的扰动。通过选择适当的扰动函数,可以使得生成的图形具有不同的褶皱纹理效果。假定参数曲线上的某点可以用P(u,v)来表示,则该点处的法矢量:其中Pu,Pv为点P处的关于参数u,v的偏倒数。则其表面在该点(u,v)处的法向量为:扰动映射为了得到扰动效果,在景物表面每一个采样点处沿着它的法矢量附加一个微小的增量,从而生成一张新的表面,这张新的表面可以采用下式表示:其中,Q(u,v)是用户定义的扰动函数,在此设它为连续的可微函数,则:扰动映射省略QNv和QNu较小的项,扰动后的表面法向量为:扰动映射NN’PvPuABNABN-QvQuN’C扰动函数可以是任选的,如简单的网格、字符映射、Z缓存器图案,也可以是随意手绘图案。P颜色颜色学是个OpenGL中的真实感图形的生成对于真实感图形的生成,OpenGL中提供了丰富的函数。利用这些函数的功能,我们可以通过控制物体的颜色属性(Color)、材质(texture)及光照条件(Light)等,生成具有高度真实感的图形。Color颜色在窗口中的每一个像素都具有自己的颜色属性。OpenGL所执行的命令就是根据用户提供的参数及各种OpenGL状态信息,确定窗口中所绘制的每一个像素的颜色。在执行程序之初,必须先设置颜色的显示模式。OpenGL提供了两种颜色模式:RGBA和颜色索引模式(ColorIndex)。颜色的显示模式一旦确定下来,就不能再进行更改。颜色模式glutInitDisplayMode(GLUT_RGB);
//RGBA模式
或:glutInitDisplay(GLUT_INDEX);
//COLORINDEX模式RGBAorColorIndexRGBAorColorIndexcolorindexmodeDisplay124816wwwwwwRedGreenBlue012324252612321974wwwwRGBAmode通过指定Red、Green、Blue三个成分的各自亮度来确定某种颜色,第四个值A(Alpha)代表物体透明度。(不透明—透明A=1.0—0.0)RGBA颜色模式用RGBA设置当前颜色的函数:VoidglColor3{datatype}(R,G,B);//A=1.0VoidglColor4{datatype}(R,G,B,A);VoidglColor3{datatype}(constType*V);
VoidglColor4{datatype}(constType*V);//V是指向指定类型的指针,一般是一个存储了RGBA值的数组。ColorIndex在颜色索引模式中,可使用如下函数来设置当前的颜色设置颜色索引表中的的一种颜色为当前颜色函数:VoidglIndex{sifd}(TYPEC);VoidglIndex{sifd}v(TYPEC);V代表参数表示为一个数组对于一个线段或一个多边形,可以用单一的颜色来绘制或填充,也可以用多种不同颜色处理。OpenGL提供两种着色模式:单一着色(FLAT)、光滑着色(SMOOTH)着色模式ShadeModels设置着色模式函数:VoidglshadeModel(mode);参数mode的取值为GL_FLAT或GL_SMOOTHGL_FLAT:图元中某个顶点的颜色用于所有的顶点GL_SMOOTH:内部内部的颜色由顶点的颜色插值得到GL_SMOOTH采用不同颜色绘制多边形程序见书P272页“Color”光照LightingOpenGL中除物体本身的发光外可以定义三种类型的光照。环境光ambient:被照射物体表面各个方向均匀受光,与观察角度无关。均匀着色。散射光diffuse:光来自某个方向,被物体表面均匀的反射到各个方向。与光源方向有关,但与观察的角度无关。均匀着色。镜面反射光specular:光来自某个方向,被物体表面反射到另一个方向。与光源方向、观察方向、物体表面反射方向有关。会产生高
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度房地产交易平台服务合同
- 二零二四年电子产品生产销售合作协议
- 二零二四年度版权转让与许可使用协议
- 2024年度企业信息化改造合同3篇
- 抵押汽车还款计划调整2024年度合同2篇
- 二零二四年度租赁物购买合同购买价格及支付方式
- 二零二四年度原材料供应商独家合作协议
- 2024年度存量房买卖及居间服务合同
- 场地租赁与装修合同(04版)
- 场地平整合同
- 航空行业职业规划
- 怎样自制有机肥料
- 恐龙的进化历程
- 《花卉的栽培》课件
- 《中级电工考核要求》课件
- 智能化弱电工程 投标方案(技术方案)
- ipc9704应力测试标准对应国标
- 2023东北三省高三数学12月联考试卷含答案
- 注塑机作业程序全套
- 七年级下册英语单词默写表(直接打印)
- 施工门头施工方案
评论
0/150
提交评论