计算机图形学第六章真实感图形的显示.ppt
- 文档编号:17555143
- 上传时间:2023-07-26
- 格式:PPT
- 页数:103
- 大小:2.59MB
计算机图形学第六章真实感图形的显示.ppt
《计算机图形学第六章真实感图形的显示.ppt》由会员分享,可在线阅读,更多相关《计算机图形学第六章真实感图形的显示.ppt(103页珍藏版)》请在冰点文库上搜索。
第6章三维真实感物体显示技术,基本几何模型到真实感图形的绘制,引言,计算机图形学中真实感绘制包括两部分内容:
物体的精确表示和场景中光照效果的逼真的物理描述。
为可见物体的颜色和光照效果建立模型是一个非常复杂的过程,因为光照模型包含许多因素,如物体类型,物体相对于光源和其他物体的位置以及场景中所设置的光源属性等。
一旦这些因素确定了,就可以通过光照模型来计算物体表面向空间给定方向辐射的光亮度。
主要内容消隐光照模型纹理映射,隐藏面和隐藏线的消除,如果不把隐藏的线或面消除,还可能发生对图的错误理解。
为了使计算机生成的图能真实地反映这一情况,必须把隐藏的部分从图中消除。
由于存在不透光的物体,因此阻挡了来自某些物体部分的光线到达观察者,这些物体部分成为隐藏部分,隐藏部分是不可见的。
隐藏面和隐藏线的消除是计算机图形学中的一个基本问题。
消隐的几个效果图,基于图像空间的方法,隐藏面和隐藏线的消除有两种基本的算法,用该表面上交点处的颜色填充该像素,在和投影点到像素连线相交的表面中,找到离观察点最近的表面,对于图像中的每一个像素:
算法的简单描述如下:
该算法多用于面消隐。
以构成图像的每一个像素为处理单元,对场景中的所有表面,确定相对于观察点是可见的表面,用该表面的颜色填充该像素。
基于物体空间的方法,隐藏面和隐藏线的消除有两种基本的算法,用可见表面的颜色填充相应的像素以构成图形;,判定场景中的所有可见表面;,对于三维场景中的每一个物体:
算法的简单描述如下:
该算法多用于线消隐,也用于面消隐。
是以三维场景中的物体对象为处理单元,在所有对象之间进行比较,除去完全不可见的物体和物体上不可见的部分。
假定:
垂直投影,下面讨论消隐算法时,都假定投影平面是oxy平面,投影方向为负z轴方向的垂直投影。
隐藏线和隐藏面消除所讨论的对象是一个三维图形,消隐后要在二维空间中表示出来,因此消隐后显示的图形将和三维空间至二维空间的投影方式有关。
6.1.1凸多面体的隐藏线消除,多面体特点多个面每个面都有向外的法向量凸多面体特点法向量规则多面体不存在部分遮挡,凸多面体是由若干个平面围成的物体。
假设这些平面方程为当某点P0(例如,物体的重心)位于物体“内部”时,有:
平面法向量:
(ai,bi,ci),必是指向物体外部,令pi(xi,yi,zi)为P0在平面i上的垂足,则有aixi+biyi+cizi+di=0(ai,bi,ci)(p0-pi)=(aix0+biy0+ciz0+di)-(aixi+biyi+cizi+di)0,aix0+biy0+ciz0+di0(i=1,2,,n),视点与第i个面上一点连线方向为(li,mi,ni),即从视点指向一点,判断:
(ai,bi,ci)(li,mi,ni)0平面i为自隐藏面。
一般地,取视点在Z轴负无穷远点。
这时,物体将被正投影到xy平面上。
由于视线方向为(0,0,1),所以,ci0所对应的面,为自隐藏面。
任意两个自隐藏面的交线,为自隐藏线。
6.1.3凹多面体的隐藏线消除,特点全部被遮挡没有被遮挡部分被遮挡,对于一条空间线段P1P2和一个多边形p,判断线段有没有被多边形遮挡。
如果被遮挡,求出隐藏部分。
没有交点被完全遮挡没被遮挡有交点部分被遮挡,将投影的线段分成若干子线段将子线段与所有多边形进行求交求并集,6.2面消隐,6.2.1区域排序(画家算法),在图象空间中,将待显示的所有多边形按深度值从小到大排序,用前面可见多边形去切割后面的多边形,最终使得每个多边形要么是完全可见,要么是完全不可见,多边形裁剪双边裁剪遇到交点向右拐,1)进行初步深度排序,可按各多边形z最小值(或最大值、平均值)排序;2)选择当前深度最小(离视点最近)的多边形为裁剪多边形;3)用裁剪多边形对那些深度值更大的多边形进行裁剪4)比较裁剪多边形与各内部多边形的深度,检查裁剪多边形是否是离视点最近的多边形。
若裁剪多边形深度大于某个内部多边形的深度,则恢复被裁剪的各多边形,选择新的裁剪多边形,回到3),否则做5);5)择选下一个深度最小的多边形作为裁剪多边形,从3)开始做,直到所有的多边形都处理过为止。
在得到的多边形中,所有的内部多边形是不可见的,其余多边形均为可见多边形。
6.2.2深度缓存算法Z-Buffer,深度缓存数组ZB颜色属性数组CB本质:
保留离视点近的不排序,z缓冲器算法是最简单的消除隐藏面算法之一z缓冲器是一组存贮单元其单元个数和屏幕上象素的个数相同也和帧缓冲器的单元个数相同,它们之间一一对应。
屏幕帧缓存Z缓冲器,1)初始化ZB和CB,使得ZB(i,j)=Zmax,CB(i,j)=背景色,i=1,,m;j=1,,n;2)对多边形P,计算它在点(i,j)处的深度值zi,j,3)若zi,jZB(i,j),则ZB(i,j)=zi,j,CB(i,j)=多边形P的颜色;4)对每个多边形重复
(2)、(3)两步,最终在CB中存放的就是消隐后的图形。
如何求深度设某个多边形所在的平面方程为ax+by+cz+d=0若c0,则z=(-ax-by-d)/c在点(xi,yi)处,有:
zi=(-d-axi-byi)/c而在点(xi+1,yi)处,有:
zi+1=(-d-a(xi+1)-byi)/c因为xi+1=xi+1,所以zi+1=zi-a/c(水平方向的相关性),类似地可推出平面多边形内的点在垂直方向上的相互关系。
设多边形一条边的方程为ax+by+c=0。
XOY平面上:
在y=yi点,xi=(-c-byi)/a;在yi+1点,因yi+1=yi+1。
所以xi+1=xi-b/a(垂直方向的相关性),求深度算法,1将多边形的边按其y最小值排序,搜索多边形中各顶点的y值,找出其中最小的值ymin和最大值ymax;2令扫描线y=ymin到ymax以增量为1变化。
此时,(a)找出与当前扫描线相交的所有边,利用垂直相关性求出这些边与扫描线的交点,并将这些交点从小到大排序;(b)在相邻两交点之间选一点,判断其是否被多边形包含,如果被多边形包含,则利用多边形上点的水平相关性,求出两交点之间各点的深度值;重复(b),直到当前扫描线上所有在多边形内的点的深度都求出为止。
优势不排序,只比较,效率高,便于硬件实现缺点两个缓存,太大,6.2.3扫描线算法,改进的Z-Buffer1)对每个多边形求取其顶点中所含的y的最小值ymin和最大值ymax,按ymin进行排序,建立活性多边形表,活性多边形表中包含与当前扫描线相交的多边形。
2.)从上到下依次对每一条扫描线进行消隐处理,对每条扫描线上的点置初值,Z值Z(x)取为最大,颜色I(x)取为背景色。
3)对每条扫描线y,按活化多边形表找出所有与当前扫描线相交的多边形。
对每个活性多边形,求出扫描线在此多边形内的部分,对这些部分中每个象素x计算多边形在此处的Z值,若Z小于Z(x),则置Z(x)为Z,I(x)为多边形在此处的颜色值。
4)当扫描线对活化多边形表中的所有多边形都处理完毕后,所得的I(x)即为显示的颜色,可进行显示并换下一条扫描线进行处理,即扫描线的y=y+1。
此时应更新活性多边形表,将已完全处于扫描线上方的多边形,即ymaxy的多边形移出活性多边形表,将不在当前活性多边形表中的与新一条扫描线相交的多边形,即ymin=y的多边形加入活性多边形表。
6.2.4区间扫描算法,由于扫描线z缓冲器算法的运算量较大,下面的区间扫描线算法考虑了各个边的拓扑结构关系,运算量就少许多。
每条扫描线被多边形边界在xoy平面上的投影分割成为一些小区间,从结构上看,这些区间上的象素的显示或隐藏性质应当一样的。
因此,只须分析清楚每个区间上的显示与否的属性便可。
于是,只要在区间上任意一点处,找出在该处z值最小的面。
这个区间上的每个象素就用这个面颜色来显示。
克服了扫描线z缓冲器算法在每个象素处计算多边形z值而工作量大的困难,这种区间上计算z值的做法叫区间扫描线算法。
如下图所示,扫描线l与A、B、C三个投影多边形的边相交形成个小区间。
下面如何确定这些小区间的颜色呢?
按下列情况进行讨论:
小区间上没有任何多边形,如d,e段和扫描线l两头此时用背景色显示该小区间。
当小区间只有一个多边形,如a,b,e,d等,这时用此多边形的颜色便可显示该小区间。
当小区间存在两个或两个以上的多边形,如图中的f,g,必须通过深度测试判断哪个多边形是可见的,再显示此多边形的颜色。
如果允许物体表面相互贯穿,那么还必须求出它们在xoz扫描平面上的交点,再进一步细分这些小区间。
更进一步作深度判断哪个多边形是可见的。
6.2.5Warnock算法,这是一种分而治的算法,既适合于消去隐藏线又适合于隐藏面,其基本思想如下:
首先观察整个窗口区域,如果窗口中只需显示一个多边形面,则可以直接显示出来,此时称窗口为单纯的,否则为非单纯的。
例如:
窗口内没有可见物体,则直接显示背景或窗口内只有一个多边形面颜色,则就是单纯的。
若窗口内有两个多边形或非单纯的时候,则将窗口分为四部分,进一步判断它们是否单纯。
不单纯时再细分,直到窗口单纯或窗口不能再分为止。
如图5.13所示,6.2.5Warnock算法,6.2.5Warnock算法,这过程可以用一棵四叉树来描述,有很好的效率。
即使1024*1024的视图窗口,被细分十次后也成为一个象素面而不能再分。
当然,算法中关键在窗口是否单纯的判断,这就要分析窗口与物体的所有投影后的多边形面之间的关系,如图5.14所示,多边形面与窗口的关系有种类型:
6.2.5Warnock算法,(a)分离,是指多边形在窗口之外。
(b)内含,是指多边形在窗口之内。
(c)相交,是指多边形与窗口部分相交。
(d)包围,是指多边形把窗口全部包含。
6.2.5Warnock算法,根据这四种情况,Warnock算法描述如下:
步骤一:
对每个窗口进行判断,若所有多边形没在某个窗口,则该窗口设为背景色。
步骤二:
若窗口内含一个多边形,则窗口中多边形部分着此多边形色,其余部分着背景色。
步骤三:
若窗口与一个多边形相交,同步骤二一样。
步骤四:
若窗口被一多边形包围,则全部着多边形颜色。
步骤五:
若窗口被若干多边形包围,并且所有多边形不交叉,则把距离视点近的多边形颜色给窗口着色。
步骤六:
若以上条件都不满足,那么继续细分窗口,并重复上述步骤。
以上几个步骤中,步骤五是关键,要找出包围窗口的多边形中距离视点最近的一个多边形,需要作深度检测,具体实现时,可将面片根据它们距离视点的最小距离先进行深度排序,然后,再取最小深度的多边形的颜色作为窗口颜色。
6.4光照模型,描绘一个三维物体更加逼真的方法是显示它的色彩、以及色彩在光照环境下的明暗变化。
这种明暗描绘方法称为Shading。
光照模型物体表面颜色与光源特性和物体表面特性(材质和颜色),6.4.1颜色模型和颜色应用,1、光和颜色物体的颜色不仅取决于物体本身,还与光源,周围环境的颜色有关。
如,红光照在物体上,使其带有红色成份,红色物体使其附近物体泛红等,不仅如此,物体颜色还与人们感觉心里系统有关。
例如有些人看红色的物体时并不产生红色的感觉,这就我们常讲的色盲。
6.4.1颜色模型和颜色应用,2、CIE色度图对自然界的一种颜色c可以表示为:
等号表示两边代表的光看起来完全相同,“”号表示光的叠加,r、g、b为颜色配对中所需要的RGB三原色光的相对比例量,R、G、B为红、绿、蓝三原色光。
6.4.1颜色模型和颜色应用,1931年国际照明委员会CIE给出了任意可见光所需的三原色光的比例曲线,如下图所示。
注意到图中对于500m的光要用R、G、B线性组合表示时,r值应当为负,否则无法表示。
这带来一个问题,即对于500m的光如何用R、G、B实现。
因为我们并不存在一种负的光强,即负的rR是不能实现的。
因而有一些颜色不能通过将三原色混合起来得到并在CRT上显示。
6.4.1颜色模型和颜色应用,于是,CIE在1931规定了三种假想的标准原色,x、y、z以便能得到的颜色匹配的比例量全为正。
注意:
除了用红、绿、蓝三色混合成一般颜色外,还可以用补色青、品红、黄来构成三原色,即只要满足下列二条件的三种颜色均可作为原色:
1、任何一种颜色可以用三种颜色混合而成;2、三种颜色中任意一种颜色不能由其余两种颜色混合而成。
6.4.1颜色模型和颜色应用,CIE用XYZ形成一个CIEXYZ系统,该系统的光颜色匹配函数定义为如下的一个式子:
6.4.1颜色模型和颜色应用,对于同一颜色C的CIE_RGB的值(R,G,B)与CIE_XYZ的值可以通过以下形式相互转换:
光的种类,点光源直射光源分布式光源直射光源漫射光源,物体表面材质,材质的颜色是由它所反射的光的波长决定如果光线被投射至一个不透明的物体表面,则部分光线被反射,部分被吸收物体表面的材质类型决定了反射光的强弱表面光滑较亮的材质将反射较多的入射光,而较暗的表面则吸收较多的入射光。
同样对于一个半透明物体的表面,部分入射光会被反射,而另一部分则被折射。
物体表面特性,反射系数漫反射(DiffuseReflection)系数镜面反射(SpecularReflection)系数,物体表面:
光源颜色和漫反射系数,透射系数透射光线的能力表面方向外法向量,6.4光照模型及其实现,物体表面的色彩明暗与光源特性和物体表面特性密切相关。
在现实世界中,光照射到物体上,光线可能被吸收、反射、和透射。
被物体吸收的部分转化为其它的能量。
反射和透射的光则进入我们的视觉系统,我们便看见物体。
为此,我们需要了解已知物理形态和光源性质的条件下,计算物体的光照效果的数学模型光照模型,简单光照明模型,假设物体不透明那么物体表面呈现的颜色仅由其反射光决定。
反射光组成环境反射环境反射假定入射光均匀地从周围环境入射至景物表面并等量地向各个方向反射出去漫反射与镜面反射漫反射分量和镜面反射分量则表示特定光源照射在景物表面上产生的反射光。
主要研究:
漫射光线和透射光线,光源称为发光体反射表面(如房屋的墙壁)则称为反射光源,图:
通常在一个不透明且不发光的物体表面所观察到的光线是其反射光,它由光源与其他物体表面的反射光所共同产生,在物体不透明的情况下,物体表面的颜色仅由其反射光决定。
反射光有三种类型的分量组成:
环境反射、漫反射和镜面反射。
环境反射是入射光均匀地从周围环境入射到物体表面后等量地向各个方向反射的光。
例如:
透射厚厚云层的阳光,室内各物体之间光的多次反射结果也可以视作环境反射光。
漫反射分量表示特定光源在景物表面的反射光中那些向空间各方向均匀反射出去的光,而镜面反射光为朝一定方向的反射光。
这几种反射光是我们看见物体的关键。
下面详细讨论这几种光的计算,1、环境光,不同的物体对环境光有不同的反射属性,记为Ka,若用Ia表示环境光的强度,于是物体某点的反射光强度为:
注意到我们所接受的是Iambien的强度,也就是在图上要用Iambien表示物体上的点,Ka与物体有关,根据物体而定,Ia由环境光定,其越强自然使Iambien越强,符合我们的习惯。
2、漫反射,漫反射是物体并不光滑形成的,这种不光滑的物体叫漫反射体。
如图5.22所示,其特点是反射光是由于表面从各个方向等强度地反射而成,因而从各个视角出发,物体表面呈现相同的亮度,所看到的物体表面某点明暗程度不随观测者的位置变化而变化。
漫反射光的强度或某点的明暗程度服从Lambert漫反射模型,2、漫反射,其中Idiffuse是物体表面某点的漫反射光强,Id为点光源的光强度。
Kd(0K1)表示物体表面该点对漫反射光的反射属性,是入射光线与物体表面在该点出法线的夹角。
2、漫反射,这里具体计算是要注意的,令L是该点到光源的单位向量,N为单位法向量,则:
3.镜面反射光镜面反射光为朝一定方向的反射光。
根据光的反射定律,反射光和入射光对称地分布于表面法向的两侧。
对纯镜面,入射至表面面元上的光严格地遵循光的反射定律单向反射出去,反射角与入射角相等。
一般光滑表面:
表面实际上是有许多朝向不同的微小平面组成其镜面反射光分布于表面镜面反射方向的周围常采用余弦函数的幂次来模拟一般光滑表面的镜面反射光的空间分布,图8.4镜面反射,反射光,采用余弦函数的幂次来模拟一般光滑表面的镜面反射光的空间分布。
Is为观察者接受到的镜面反射光亮度Ips为入射光的光亮度,为镜面反射方向和视线方向的夹角,介于0o到90o之间n为镜面反射光的会聚指数(与物体表面光滑度有关)ks为镜面反射系数(与材料性质和入射光波长有关)。
投向观察者的镜面反射光不仅决定于入射光,而且和观察者的观察方向有关。
当视点取在镜面反射方向附近时,观察者接受到的镜面反射光较强,而偏离这一方向观察时,镜面反射光就会减弱甚至消失。
视点相关性,4、phong模型,一个物体在一个场景中,若没有光的照射,我们肯定是看不见的,只有在某种光照下,反射光才能进入我们视觉系统,而光照下物体的反射光有三种类型,也就是说,进入我们视觉系统的反射光有三种类型。
因此,物体某点上的反射光的强度应当是三种反射光的迭加。
即,当光源有多个时,则上式可写为:
ka环境反射系数kd漫反射系数ks镜面反射系数表示对所有特定光源求和,Phong模型,法向量的改变对光亮度计算影响大,点的位置的改变对光亮度计算影响较小,为避免光谱计算,直接用光栅图形显示器的RGB三基色颜色系统。
即写成,1)假设光源为理想点光源,且不考虑其辐射光强的空间分布。
2)除了曲面的法向量外,曲面的所有几何信息均不予考虑。
3)表面漫反射光亮度和镜面反射光亮度均被认为是对光源入射光的直接反射,且相互独立。
Phong模型具有以下明显的特点,4)表面镜面反射光亮度由一个经验模型来模拟,但当该光亮度达到显示器所能显示的最高色度时,其变化将被裁剪掉。
5)用镜面高光指数n来模拟景物表面的光滑程度。
镜面高光指数n的变化可使光源看上去变大或变小。
6)镜面反射光的颜色被假定成光源的颜色,而与表面材质属性无关。
7)周围环境对景物表面的影响,即环境光,被假设为一常数。
Phong模型具有以下明显的特点,Phong模型存在的问题,Phong光照明模型是真实感图形学中提出的第一个有影响的光照明模型,生成图象的真实度已经达到可以接受的程度;,是一个经验模型,还具有以下的一些问题:
1)用Phong模型显示出的物体象塑料,没有质感,2)环境光是常量,没有考虑物体之间相互的反射光,3)镜面反射的颜色是光源的颜色,与物体材料无关,4)镜面反射的计算在入射角很大时会产生失真,6.5OpenGL的光照处理,从上面可见,要显示一张简单的曲面所涉及的内容和计算是相当复杂的,若再添加各种场景或增加几个光源,情况更加麻烦。
现在OpenGL把相当复杂的工作已集成在相应地函数中,只须对参数的处理便可得到需要的光照模型,方便了我们的使用,下面就介绍如何使用OpenGL进行光照处理。
651光源的定义,光源有许多特性,如颜色、位置、方向等。
不同特性的光源,作用在物体上的效果是不一样的。
定义一个光源的主要工作就是定义它的各种特性,OpenGL通过光源特性的函数glLight*()来定义光源。
VoidglLightifv(GLenumlight,GLenumpname,TYPE*param);,其中light指定光源编号,在一个场景最多定义八个不同的光源,编号为GL-LIGHT0,GL-LIGHT1,GL-LIGHT7,参数pname指定光源特性的名称,即是什么种类的光。
如下表取值,参数param为指向param所指属性值的指针,它可以指向一个数值,也可以指向一个值,具体有所定义的属性而定,651光源的定义,表6.1pname参数的取值及意义,聚光设置:
一般情况下,光源光线是向四周发射,可以使用GL_DOT_CUTDFF来限制光线的范围,缺省是180.0。
当然,除了指定光发散角度外,还需指定聚光状态下的方向,例如:
glLlightf(GL_LIGHT0,GLSPOT_CUTOFF,45.0);/45角范围GLfloatspot_direction=-1.0,-1.0,0.0;glLightfv(GL_LIGHTO,GL_SPOT_DIRECTION,spot_direction),#include#include#includevoidmyinit(void);voidCALLBACKmyReshape(GLsizeiw,GLsizeih);voidCALLBACKdisplay(void);voidmyinit(void)GLfloatlight_position=1.0,1.0,1.0,0.0;glLightfv(GL_LIGHT0,GL_POSITION,light_position);glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);glDepthFunc(GL_LESS);glEnable(GL_DEPTH_TEST);,voidCALLBACKdisplay(void)glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);auxSolidSphere(1.0);glFlush();voidCALLBACKmyReshape(GLsizeiw,GLsizeih)glViewport(0,0,w,h);glMatrixMode(GL_PROJECTION);glLoadIdentity();if(w=h)glOrtho(-1.5,1.5,-1.5*(GLfloat)h/(GLfloat)w,1.5*(GLfloat)h/(GLfloat)w,-10.0,10.0);elseglOrtho(-1.5*(GLfloat)w/(GLfloat)h,1.5*(GLfloat)w/(GLfloat)h,-1.5,1.5,-10.0,10.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();,voidmain(void)auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);auxInitPosition(0,0,500,500);auxInitWindow(SimpleLighting);myinit();auxReshapeFunc(myReshape);auxMainLoop(display);,652材质的定义,OpenGL用材质来描述物体表面特性,通过制定物体表面对光的反射率来确定物体的颜色,设置材质属性的函数是:
VoidglMaterialif(GLenumface,GLenumpname,TYPEparam);其中参数face是GL_FRONT,GL_BACK或GL_FRONT_AND_BACK指定当前材质作用物体的哪一面.,652材质的定义,参数pname设置材质的属性,由表5.3所示表5.3pname的取值及意义,652材质的定义,例如,将当前材质的散射和环境反射率设置为(0.1,0.5,0.8,1.0)GLfloatmat_amb_diff=0.1,0.5,0.8,1.0glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff,光照明模型,光照效果,光照明模型,一个光照的球体,光照产生的场景,#include#include#include#include#includeGLfloatposition0=0.0f,1.5f,1.0f,1.0f;GLfloatposition1=0.0f,1.5f,0.0f,1.0f;GLfloatposition2=0.0f,2.0f,2.0f,1.0f;GLfloatposition3=0.0f,0.0f,2.0f,1.0f;GLfloatmat_cylinder=0.0f,0.5f,0.75f,0.15f;GLfloatmat_sphere=1.0f,1.0f,1.0f,1.0f;GLfloatmat_box=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学 第六 真实感 图形 显示