计算机图形学第七章_第1页
计算机图形学第七章_第2页
计算机图形学第七章_第3页
计算机图形学第七章_第4页
计算机图形学第七章_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

1、第七章 消隐?基本概念 ?消隐算法的基本原则?画家算法?Z缓冲器算法?扫描线Z缓冲器算法?光线投射算法 ?绘制基本概念产生真实感的方法之一: 反映三维场景中的相互遮挡关系面消隐与线消隐 表面模型与线框模型 物体表面:平面与曲面 面消隐对象: 由平面多边形构成的多面体基本概念消隐算法的分类1)类:以窗口内的每个像素为处理单元; for (窗口内的每一个像素) 确定距视点最近的物体,以该物体表面的颜色来显示像素 2)类:以场景中的物体为处理单元; for (场景中的每一个物体) 将其与场景中的其它物体比较,确定其表面的可见部分; 显示该物体表面的可见部分;基本概念算法复杂度 假设场景中有k个物体,

2、平均每个物体表面由h个多边形构成,显示区域中有m x n个像素,则:第一种算法的复杂度为:O(mnkh) 第二种算法的复杂度为:O(kh)*(kh)消隐算法的基本原则 1排序 2连贯性物体连贯性面(边)连贯性扫描线连贯性深度连贯性画家算法由来:画家的作画顺序暗示出所画物体之间的相互遮挡关系算法的基本思想 基本思想: (1)先把屏幕置成背景色; (2)将物体的各个面按其距观察点的远近进行排序,结果放在一张深度优先级表中;(深度优先级表是一个线性表,距观察点远的多边形优先级低,将之放在表头;距观察点近的多边形优先级高,将之放在表尾。) (3)按照从表头到表尾(从远到近)的顺序逐个取出多边形,投影到

3、屏幕上并显示。画家算法本算法不能处理的情况:多边形循环遮挡多边形相互穿透 解决办法:分割成两个深度优先级表的建立 当两个多边形P和Q交叉在一起时,要进行对多边形的排序。 假设多边形的z范围是平面z=zmin和z=zmax之间的区域,所以,zmin是所有多边形顶点的最小z值,zmax是所有多边形顶点的最大z值。与此类似定义多边形的x和y范围,则将x、y和z范围的交集称为多边形的范围或包围盒。在投影坐标系XYZ中,投影方向是Z轴的负方向,因此z值大者离观察点更近。记zmin(P)、zmax(P)分别为多边形P的各个顶点z坐标的最小值与最大值,排序算法如下: 第一步:将场景中所有多边形存入一个线性表

4、(数组或链表)中,记为L;第二步:如果L中仅有一个多边形,算法结束;否则,根据每个多边形的zmin对它们预排序。不妨假定多边形P落在表首,即zmin(P)为最小。再记Q为L P(表中其余多边形)中任意一个;第三步:判别P,Q之间的关系,有如下二种:(1)如果对所有的Q,有zmax(P)zmin(Q),则需进一步判别: 若P、Q的投影P、Q的包围盒不相交,则P、Q在表中的次序不重要,令L = L P,返回第二步;否则进行下一步。 若P的所有顶点位于Q所在平面的不可见的一侧,则当前的P、Q关系正确,令L = L P,返回第二步;否则进行下一步。 若Q的所有顶点位于P所在平面的可见的一侧,则当前的P

5、、Q关系正确,令L = L P,返回第二步;否则进行下一步。 对P、Q的投影P、Q求交,若P、Q不相交,则P、Q在表中的次序不重要,令L = L P,返回第二步;否则,在它们所相交的区域中任取一点,计算P、Q在该点的深度值,如果P的深度小,则P、Q关系正确,令L = L P,返回第二步;否则,交换P、Q,返回第三步。Z缓冲区算法由来: 帧缓冲器 保存各像素颜色值 z缓冲器 -保存各像素处物体深度值 z缓冲器中的单元与帧缓冲器中的单元一一对应Z缓冲区(Z-Buffer)算法 算法的基本思想 基本思想:先将FB(帧缓冲区,用于存贮各像素点的颜色和亮度值)中全部存放背景色,ZB(深度缓冲区,用于存贮

6、对应于该像素点的z座标值)中所有单元的初始值置为最小值。在把显示对象的每个面上每一点的属性(颜色或灰度)值填入帧缓冲区相应单元前,要把这点的z坐标值和ZB中相应单元的值进行比较,检查当前多边形的深度值是否大于该像素原来的深度值。如果大于,说明当前多边形更靠近观察点,用它的颜色替换像素原来的颜色,同时ZB中相应单元的值也要改成这点的z坐标值;否则,说明在当前像素处,当前多边形被前面所绘制的多边形遮挡了,是不可见的,像素的颜色值不改变。对显示对象的每个面上的每个点都做了上述处理后,便可得到消除了隐藏面的图。 算法的描述for(x0;xxmax;x+) for (y0;yZB(x,y) 用z(x,y

7、)替换ZB(x,y)的值; 用多边形在(x,y)处的颜色值替换FB(x,y)的值; Z缓冲区算法优点:简单稳定,利于硬件实现缺点:1)需要一个额外的Z缓冲区 2)在每个多边形占据的每个像素处都要计算深度值,计算量大扫描线Z缓冲区算法由来:Z缓冲器算法中所需要的Z缓冲器容量较大,为克服这个缺点可以将整个绘图区域分割成若干个小区域,然后一个区域一个区域地显示,这样Z缓冲器的单元数只要等于一个区域内像素的个数就可以了。如果将小区域取成屏幕上的扫描线,就得到扫描线Z缓冲器算法。扫描线Z缓冲区算法算法的基本思想 基本思想:依顺序处理每一条扫描线,在处理当前扫描线时,设计一个一维数组作为当前扫描线的深度缓

8、冲区(ZB)。首先找出扫描线与投影到屏幕上的所有多边形的相交区间,对每一个相交区间上的各像素利用连贯性计算其深度z值,并与ZB中的值比较,以决定各区间点的像素颜色,并将之写入帧缓冲区(FB)。算法的描述 y=yi; for(x0;xZB(x, yi) 用z(x,yi)替换ZB(x, yi)的值; 用 (x, yi)处的颜色值替换FB(x, yi)的值; 光线追踪算法算法的基本思想 基本思想:从视点出发,沿投影方向(光线方向)发出射线,此射线穿过观察屏幕的像素与场景中的物体相交。计算该射线与物体表面的交点,离像素最近的交点所在面的颜色即为该像素的颜色;如果没有交点,说明没有多边形的投影覆盖此像素

9、,则用背景色作为该像素的颜色。 算法的描述 for(x0;xxmax;x+) for (y0;yymax;y+) 形成通过该屏幕像素(x,y)的射线; for(每个多边形) 将射线与该多边形求交点; if (有交点) 以最近交点所属多边形的颜色显示像素(x,y) else 以背景色显示像素(x,y); 绘 制 光照明模型模拟复杂逼真的光照明现象将生成真实图形或图像的过程称为绘制简单的光照模型光线在物体之间的传播方式由光源发出的光到达物体表面后,产生反射和折射。由光源发出的光称为直接光,物体对直接光的反射或折射称为直接反射和直接折射,相对的,把物体表面间对光的反射和折射称为间接光,间接反射,间接

10、折射光线跟踪算法基础最基本的光线跟踪算法是跟踪镜面反射和折射。从光源发出的光遇到物体的表面,发生反射和折射,光就改变方向,沿着反射方向和折射方向继续前进,直到遇到新的物体光源发出光线,经反射与折射,只有很少部分可以进入人的眼睛实际光线跟踪方向与光传播的方向相反视线跟踪-由视点与象素(x,y)发出一根射线,与第一个物体相交后,在其反射与折射方向上进行跟踪四种光线定义在光线跟踪算法中,有如下的四种光线视线是由视点与象素(x,y)发出的射线阴影测试线是物体表面上点与光源的连线反射光线,视线反射方向光线折射光线,视线折射方向光线光强计算光线V与物体表面交与点P时,光在点P对光线V方向的贡献分为三部分由

11、光源产生的直接的光线照射光强,是交点出处的局部光强反射方向上由其他物体引起的间接光照光强,由 计算, 通过对反射光线的递归跟踪得到折射方向上由其他物体引起的间接光照光强,由 计算, 通过对折射光线的递归跟踪得到把上述三部分光强相加,就是该条光线V在P点处的总的光强光照模型公式:其中:N、L分别为沿表面法线和光源入射方向的单位矢量。 R 、S分别为沿反射方向和视线方向的单位矢量。 Ia为入射的泛光强。 Il为入射光强度。 Ka为泛光的漫反射常数( 0Ka 1) Kd为入射光的漫反射常数( 0Kd 1) Ks为反射率曲线。 d为透视点离物体的距离。 n为幂次,用来模拟反射光的空间分布。 k为任意常

12、数,当视点在无穷远时。例 题反射光视线L入射光NRSL在右图中,表面P点的法线和入射光线与视线矢量分别为:N=j L=-i+2j-k S=i+1.5j+0.5k R=i+2j+k设画面中只有一个物体,d=0,k=1;点光源比泛光源亮10倍,Ia=1Il=10;物体表面同金属表面一样发亮,绝大多数光被镜面反射。假设Ks=0.8,Kd=Ka=0.15,n=5,由于Ks+Kd=0.95,表明有5%的光被物体表面吸收。请计算光照模型是多少?光线跟踪算法 光线跟踪算法实际上是光照明物理过程的近似逆过程光线跟踪基本过程可以跟踪物体间的镜面反射光线和规则透射,模拟了理想表面的光的传播终止条件实际的算法进行过

13、程中,不可能进行无穷的光线跟踪算法应用意义上的终止条件该光线未碰到任何物体该光线碰到了背景光线在经过许多次反射和折射以后,就会产生衰减,光线对于视点的光强贡献很小光线反射或折射次数即跟踪深度大于一定值算法伪码表示从视点出发,对于视屏上的每一个象素点,从视点作一条到该象素点的射线,调用下面的算法函数就可以确定这个象素点的颜色RayTracing(start, direction, weight, color)if ( weight MinWeight )color = black; else计算光线与所有物体的交点中离start最近的点;if ( 没有交点 ) color = black;els

14、e = 在交点处用局部光照模型计算出的光强; 计算反射方向 R; RayTracing(最近的交点,R, weight* , ); 计算折射方向 T; RayTracing(最近的交点,T,weight* , );color = + + ;光线与物体求交对于反射光线与折射光线的方向计算问题Whitted光透射模型中的计算方法光线跟踪算法中需要用到大量的求交运算,因而求交运算的效率对于整个算法的效率影响很大光线与物体的求交时光线跟踪算法的核心光线与球的求交球是光线跟踪算法中最常用的体素很容易进行光线与球的相交判断,球又常常用来作为复杂物体的包围盒 为光线的起点坐标, 为光线的方向,已经单位化。

15、为球心坐标,R为球的半径求交前提条件代数解法由起点发出的光线参数方程球面的隐式方程:代入合并有:解方程有 ,光线与球无交 ,光线与球相切,t=B/2 ,光线与球有两个交点t0,交点无效t代入光线参数方程,可求得交点坐标交点的坐标交点处的法向量代数法求交点和法向量总共需要17次加减运算、17次乘法运算、1次开方运算和3次比较操作几何解法几何法求交示意基本步骤计算光线起点到球心的距离平方 光线的起点在球内,光线与球有且仅有一个交点 光线的起点在球外,光线与球有两个交点或一个切点或没有交点计算光线起点到光线离球心最近点A距离当光线的起点在球外,若 ,则球在光线的背面,光线与球无交点计算半弦长的平方,来判定交点的个数 ,光线与球无交 ,光线与球相切 ,光线与球有两个交点计算光线起点到光线与球交点的距离来计算交点的位置t代入光线的参数方程,可以得到交点的位置交点的坐标交点处的球面法向几何法求交点和法向总共需要16次加减运算、13次乘法运

温馨提示

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

评论

0/150

提交评论