图像空间的消隐算法

合集下载

计算机图形学消隐算法

计算机图形学消隐算法

图9-1 区间扫描线算法原理
算法首先为各多边形建立一张边表和一张多边形表。边表需包含的内容有:进行消隐的场景中所有线段的端点坐标、线段斜率的倒数、指向多边形表中对应多边形的指针。多边形表需包含的内容有:各多边形的平面方程系数、各多边形的颜色值、指向边表的指针。在消隐算法执行的过程中,从边表和多边形表中提取信息,构造一张有效边表。有效边表中包含与当前扫描线相交的边,按x的升序进行排列。排列后这些边将扫描线分成一个个的子区间[xi, xi+1],如图9-2,可将扫描线上的子区间分为三种类型:
递归进行上述空间剖分和景物分类过程,直至每一子空间中所含景物少于给定的阈值为止,可表示成一棵BSP树,图9-14(b)示出了图9-14(a)的分割过程和形成的分类景物。对于由多边形组成的场景,常选择与某一多边形重合的平面作为分割平面。一旦构造完BSP树,即可依据当前视点所在的位置,对场景中每一分割平面所生成的两个子空间进行分类,其中包含视点的子空间标记为“front”,位于分割平面另一侧的子空间标记为“back”。然后,递归搜索场景的BSP树,优先绘制标识为“back”的子空间中所含景物。
c. 判别B上平面A与B的重叠平面是否完全位于A之前,若是,将A按先进先出原则加入N中,转(2);否则继续。
d. 判别多边形A和B在xoy平面上的投影有无重叠,若无重叠,则A、B在队列中的顺序无关紧要,将A按先进先出原则加入N中,转(2);否则在A与B投影的重叠区域中任取一点,分别计算出A、B在该点处的z值,若A的z值小,说明A距视点远,优先级低,将A按先进先出原则加入N中,转(2);若A的z值大,则交换A和B的关系,即将B看作是当前处理对象,转(3)进行M中其它多边形的判别。
深度缓存器算法最大的优点是算法原理简单,不过算法的复杂度为O(N),N为物体表面采样点的数目。另一优点是便于硬件实现。现在许多中高档的图形工作站上都配置有硬件实现的Z-buffer算法,以便于图形的快速生成和实时显示。

计算机图形学课件:第9章消隐

计算机图形学课件:第9章消隐

9.6 BSP树算法
算法原理 实例说明
Q back front
D C
B
投影线
P
front P
back
front
Q front
back Q front
A
back
back
DB
CA
(a) 空间剖分
(b) 形成的BSP树
图9-14 BSP算法原理
9.7 多边形区域排序算法
算法思想:
将多边形按深度值由小到大排序,用前面 的可见多边形去切割位于其后的多边形,使得最 终每一个多边形要么是完全可见的,要么是完全 不可见的。
Z-buffer
00 0 0 0 0 0 00 0 0 0 58000 0 0 00 0 0 0
帧缓存
问题:计算采样点(x,y)的深度z(x,y)。 假定多边形的平面方程为:Ax+By+Cz+D=0。
z(x, y) Ax By D C
利用连贯性加速深度的计算:
y 多边形
y
y-1
算法特点: ①算法简单。 ②需较大的存储空间。 ③处理反走样、透明和半透明效果困难。
对于③ ,可以使用A缓冲器算法克服。
9.2 区间扫描线算法
算法原理:
避免对被遮挡 区域的采样是 进一步提高扫 描线算法计算 效率的关键。
y B2 A2
0
A1 B1
AB
A3
B3
C2
扫描线1 C1
扫描线2 扫描线3
B4 C C4 C3 x
图9-3 区间扫描线算法原理
9.3 深度排序算法(画家算法)
算法原理:
若场景中任何多边形在深度上均不贯穿 或循环遮挡,则各多边形的优先级顺序可完 全确定,扫描转换就可以按从优先级低的多 边形到优先级高的多边形的顺序进行。

计算机图形学——隐藏线和隐藏面的消除(消隐算法)

计算机图形学——隐藏线和隐藏面的消除(消隐算法)

计算机图形学——隐藏线和隐藏⾯的消除(消隐算法)⼀、概述由于投影变换失去了深度信息,往往导致图形的⼆义性。

要消除⼆义性,就必须在绘制时消除被遮挡的不可见的线或⾯,习惯上称作消除隐藏线和隐藏⾯(或可见线判定、可见⾯判定),或简称为消隐。

经过消隐得到的投影图称为物体的真实感图形。

下⾯这个图就很好体现了这种⼆义性。

消隐后的效果图:消隐算法的分类所有隐藏⾯消隐算法必须确定:在沿透视投影的投影中⼼或沿平⾏投影的投影⽅向看过去哪些边或⾯是可见的两种基本算法1、以构成图像的每⼀个像素为处理单元,对场景中的所有表⾯,确定相对于观察点是可见的表⾯,⽤该表⾯的颜⾊填充该像素.适于⾯消隐。

算法步骤:a.在和投影点到像素连线相交的表⾯中,找到离观察点最近的表⾯;b.⽤该表⾯上交点处的颜⾊填充该像素;2、以三维场景中的物体对象为处理单元,在所有对象之间进⾏⽐较,除去完全不可见的物体和物体上不可见的部分.适于⾯消隐也适于线消隐。

算法步骤:a.判定场景中的所有可见表⾯;b.⽤可见表⾯的颜⾊填充相应的像素以构成图形;提醒注意1.假定构成物体的⾯不能相互贯穿,也不能有循环遮挡的情况。

2.假定投影平⾯是oxy平⾯,投影⽅向为z轴的负⽅向。

如果构成物体的⾯不满⾜该假定,可以把它们剖分成互不贯穿和不循环遮挡的情况。

例如,⽤图b中的虚线便可把原来循环遮挡的三个平⾯,分割成不存在循环遮挡的四个⾯。

⼆、可见⾯判断的有效技术1、边界盒指能够包含该物体的⼀个⼏何形状(如矩形/圆/长⽅体等),该形状有较简单的边界。

边界盒技术⽤于判断两条直线是否相交。

进⼀步简化判断2、后向⾯消除(Back-face Removal)思路:把显然不可见的⾯去掉,减少消隐过程中的直线求交数⽬如何判断:根据定义寻找外(或内)法向,若外法向背离观察者,或内法向指向观察者,则该⾯为后向⾯。

注意:如果多边形是凸的,则可只取⼀个三⾓形计算有向⾯积sp。

如果多边形不是凸的,只取⼀个三⾓形计算有向⾯积sp可能会出现错误,即F所在的⾯为前向⾯也可能出现sp≥0的情况,因此,需按上式计算多边形F的有向⾯积。

计算机图形学第五次实验报告

计算机图形学第五次实验报告

《计算机图形学》实验报告实验十一真实感图形一、实验教学目标与基本要求初步实现真实感图形, 并实践图形的造型与变换等。

二、理论基础运用几何造型, 几何、投影及透视变换、真实感图形效果(消隐、纹理、光照等)有关知识实现。

1.用给定地形高程数据绘制出地形图;2.绘制一(套)房间,参数自定。

三. 算法设计与分析真实感图形绘制过程中, 由于投影变换失去了深度信息, 往往导致图形的二义性。

要消除这类二义性, 就必须在绘制时消除被遮挡的不可见的线或面, 习惯上称之为消除隐藏线和隐藏面, 或简称为消隐, 经过消隐得到的投影图称为物体的真实图形。

消隐处理是计算机绘图中一个引人注目的问题, 目前已提出多种算法, 基本上可以分为两大类:即物体空间方法和图象空间方法。

物体空间方法是通过比较物体和物体的相对关系来决定可见与不可见的;而图象空间方法则是根据在图象象素点上各投影点之间的关系来确定可见与否的。

用这两类方法就可以消除凸型模型、凹形模型和多个模型同时存在时的隐藏面。

1).消隐算法的实现1.物体空间的消隐算法物体空间法是在三维坐标系中, 通过分析物体模型间的几何关系, 如物体的几何位置、与观察点的相对位置等, 来进行隐藏面判断的消隐算法。

世界坐标系是描述物体的原始坐标系, 物体的世界坐标描述了物体的基本形状。

为了更好地观察和描述物体, 经常需要对其世界坐标进行平移和旋转, 而得到物体的观察坐标。

物体的观察坐标能得到描述物体的更好视角, 所以物体空间法通常都是在观察坐标系中进行的。

观察坐标系的原点一般即是观察点。

物体空间法消隐包括两个基本步骤, 即三维坐标变换和选取适当的隐藏面判断算法。

选择合适的观察坐标系不但可以更好地描述物体, 而且可以大大简化和降低消隐算法的运算。

因此, 利用物体空间法进行消隐的第一步往往是将物体所处的坐标系转换为适当的观察坐标系。

这需要对物体进行三维旋转和平移变换。

常用的物体空间消隐算法包括平面公式法、径向预排序法、径向排序法、隔离平面法、深度排序法、光线投射法和区域子分法。

计算机图形学-习题库及答案

计算机图形学-习题库及答案

计算机图形学-习题库及答案1、计算机图形显⽰器和绘图设备表⽰颜⾊的⽅法各是什么颜⾊系统?它们之间的关系如何?1、计算机图形显⽰器是⽤RGB⽅法表⽰颜⾊,⽽绘图设备是⽤CMY⽅法来表⽰颜⾊的。

它们之间的关系是:两者都是⾯向硬件的颜⾊系统,前者是增性原⾊系统,后者是减性原⾊系统,后者是通过在⿊⾊⾥加⼊⼀种什么颜⾊来定义⼀种颜⾊,⽽后者是通过指定从⽩⾊⾥减去⼀种什么颜⾊来定义⼀种颜⾊2、简述帧缓存与显⽰器分辨率的关系。

分辨率分别为640×480,1280×1024,和2560×2048的显⽰器各需要多少字节位平⾯数为24的帧缓存?2、帧缓存的⼤⼩和显⽰器分辨率之间的关系是:帧缓存的⼤⼩=显⽰器分辨率的⼤⼩*帧缓存的3、画直线的算法有哪⼏种?画圆弧的算法有哪⼏种?c1)逐点⽐较法;(2)数值微分法;(3)Bresenham算法。

画弧线的常⽤⽅法有:(1)逐点⽐较法;(2)⾓度DDA法;(3)Bresenham算法。

4、分别写出平移、旋转、缩放及其组合的变换矩阵。

4、1)平移变换:其中, , , 是物体在三个坐标⽅向上的位移量。

2)旋转变换:绕Z轴旋转的公式为:绕X轴旋转的公式为:绕Y轴旋转的公式为:如果旋转所绕的轴不是坐标轴,设其为任意两点p1,p2所定义的⽮量,旋转⾓度为。

则可由7个基本变换组合构成:1.使p1,点与原点重合;2.,使轴p1p2落⼊平⾯xoz内;3.,使p1p2与z轴重合;4.,执⾏绕p1p2轴的⾓旋转;5.,作3的逆变换;6.,作2的逆变换;7.作1的逆变换。

3)缩放变换:其中,,,是物体在三个⽅向上的⽐例变化量。

记为。

若对于某个⾮原点参考点进⾏固定点缩放变换,则通过如下的级联变换实现:5、如何⽤⼏何变换实现坐标系的变换?坐标系的变换,亦即将某⼀坐标系lcs1中的点变换为另⼀个坐标系lcs2下的坐标。

若,矩阵的推导分三步。

1)将lcs1中的点变换到世界坐标系的矩阵 ;x_axis, y_axis, z_axis 为lcs1中x,y,z轴⽮量在世界坐标系的表⽰org为lcs1中原点在世界坐标系的表⽰2)将世界坐标系的点变换到lcs2中的点矩阵 ;x_axis, y_axis, z_axis 为lcs1中x,y,z轴⽮量在世界坐标系的表⽰org为lcs1中原点在世界坐标系的表⽰a = - x_axis.x * org.x - x_axis.y * org.y - x_axis.z * org.zb = - y_axis.x * org.x - y_axis.y * org.y - y_axis.z * org.zc = - z_axis.x * org.x - z_axis.y * org.y - z_axis.z * org.z6、写出⼏种线裁剪算法;写出⼏种多边形裁剪算法。

图像空间消隐:z缓冲器(z-buffer)算法

图像空间消隐:z缓冲器(z-buffer)算法
如果z(x, y) > zbuffer(x, y),那么
计算该像素(x, y)的光亮值属性并写入帧缓冲器 更新z缓冲器 zbuffer(x, y)=z(x, y)
5
z缓冲器的其它应用
阴影算法:以光源为 视点的z缓冲器
6
z缓冲器的其它应用
rgb和z缓冲器相结合,实现图像的合成
7
z缓冲器算法分析
优点
算法复杂度(O(nN)):对于给定的图像空间,N是固定的,所 以算法复杂度只会随着场景的复杂度线性地增加
无须排序:场景中的物体是按任意顺序写入帧缓冲器和z缓冲 器的,无须对物体进行排序,从而节省了排序的时间
适合于任何几何物体:能够计算与直线交点 适合于并行实现(硬件加速)算法
z (深度)缓冲器算法属于图像空间算法 z缓冲器是帧缓冲器的推广
帧缓冲器:存储的是像素的颜色属性 z缓冲器:存储的是对应像素的z值
假设在视点坐标系(oxyz)中,投影平面为z=0,视线方向沿(-z)轴方向, 投影为平行投影
深度值就是物体沿着视线(-z)方向、与视点的距离 离视点近的物体遮挡离视点远的物体:z值越大,离视点越近
2
z缓冲器算法
投影变换示意图
3
颜色与深度缓冲举例
颜色缓冲
深度缓冲
4
z缓冲器算法描述
(1) 帧缓冲器中的颜色置为背景颜色 (2) z缓冲器中的z值置成最小值(离视点最远) (3) 以任意顺序扫描各多边形
a) 对于多边形中的每一像素,计算其深度值z(x,y) b) 比较z(x, y)与z缓冲器中已有的值zbuffer(x,y)
不足
z缓冲器需要占用大量的存储单元
一个大规模复杂场景中:深度范围可能为106,一个 像素需要24bit来存储其深度信息。如果显示分辨率 为1280×1024,那么深度缓冲器需要4MB存储空间

Z-buffer算法

Z-buffer算法

Z-buffer算法1、Z缓冲区(Z-Buffer)算法1973年,犹他⼤学学⽣艾德·卡姆尔(Edwin Catmull)独⽴开发出了能跟踪屏幕上每个像素深度的算法 Z-buffer Z-buffer让计算机⽣成复杂图形成为可能。

Ed Catmull⽬前担任迪⼠尼动画和⽪克斯动画⼯作室的总裁Z缓冲器算法也叫深度缓冲器算法,属于图像空间消隐算法该算法有帧缓冲器和深度缓冲器。

对应两个数组:intensity(x,y)——属性数组(帧缓冲器)存储图像空间每个可见像素的光强或颜⾊depth(x,y)——深度数组(z-buffer)存放图像空间每个可见像素的z坐标假定xoy⾯为投影⾯,z轴为观察⽅向过屏幕上任意像素点(x,y)作平⾏于z轴的射线R,与物体表⾯相交于p1和p 2 点p1和p 2点的z值称为该点的深度值z-buffer算法⽐较p1和p 2的z值,将最⼤的z值存⼊z缓冲器中显然,p1在p 2前⾯,屏幕上(x,y)这⼀点将显⽰p1点的颜⾊算法思想:先将Z缓冲器中各单元的初始值置为最⼩值。

当要改变某个像素的颜⾊值时,⾸先检查当前多边形的深度值是否⼤于该像素原来的深度值(保存在该像素所对应的Z 缓冲器的单元中)如果⼤于原来的z值,说明当前多边形更靠近观察点,⽤它的颜⾊替换像素原来的颜⾊Z-Buffer算法(){帧缓存全置为背景⾊深度缓存全置为最⼩z值for(每⼀个多边形){扫描转换该多边形for(该多边形所覆盖的每个象素(x,y) ){计算该多边形在该象素的深度值Z(x,y);if(z(x,y)⼤于z缓存在(x,y)的值){把z(x,y)存⼊z缓存中(x,y)处把多边形在(x,y)处的颜⾊值存⼊帧缓存的(x,y)处}}}} z-Buffer算法的优点:(1)Z-Buffer算法⽐较简单,也很直观(2)在象素级上以近物取代远物。

与物体在屏幕上的出现顺序是⽆关紧要的,有利于硬件实现z-Buffer算法的缺点:(1)占⽤空间⼤(2)没有利⽤图形的相关性与连续性,这是z-buffer算法的严重缺陷(3)更为严重的是,该算法是在像素级上的消隐算法2、只⽤⼀个深度缓存变量zb的改进算法⼀般认为,z-Buffer算法需要开⼀个与图象⼤⼩相等的缓存数组ZB,实际上,可以改进算法,只⽤⼀个深度缓存变量zb z-Buffer算法(){ 帧缓存全置为背景⾊for(屏幕上的每个象素(i,j)){ 深度缓存变量zb置最⼩值MinValuefor(多⾯体上的每个多边形Pk){if(象素点(i,j)在pk的投影多边形之内){计算Pk在(i,j)处的深度值depth;if(depth⼤于zb){ zb = depth;indexp = k;(记录多边形的序号)}}}If(zb != MinValue) 计算多边形Pindexp在交点 (I,j) 处的光照颜⾊并显⽰}}关键问题:判断象素点(i,j)是否在pk的投影多边形之内,不是⼀件容易的事。

图形、消隐的一种实现深度消隐算法的一种实现

图形、消隐的一种实现深度消隐算法的一种实现

图形、消隐的一种实现——深度消隐算法的一种实现张世海[1]梁晓梅[2]([1]吉林省计算中心吉林长春130012[2]吉林省衡鑫贸易有限公司吉林长春130021)[摘要]根据Bourand的算法思想,改造Bresenham算法,以实现对于直线基元、三角基元的深度消隐,从而绘制有深度消隐功能的复杂图形。

[关键词]深度消隐图形基元[中图分类号]TP3 [文献标识码]A[文章编号]1009-5349(2013)11-0025-02消隐处理是计算机图形学设计的一个非常艰巨的任务,一个没有消隐的图形看起来是杂乱无章的,只有消除了隐藏线和隐藏面的图形看起来才与自然感观相符合,这也是真实化图形的基础,本文就是建立图形基元的深度消隐算法。

基元是建立图形系统和应用的基石。

要通过编程的方式来显示一个特定的场景时,点、边和三角形是最基本的图形。

因为任何一个空间的物体都可以用三角形小面来逼近,而任何一个多边形,无论它是单连通区域还是多连通区域,都可以通过细化规则转换成多个三角形来处理。

定义基元是基于图形描述和图形应用的方便性的。

深度消隐算法是一种基于图形空间的消隐算法。

把每一个像素点都视为是三维的,Z表示像素深度,如果不同面片上的点被投影到屏幕上的同一点,则只有离视点最近的点的属性才是该点(在屏幕上)的最终属性。

典型的属性包括颜色和深度。

深度消隐算法在实现上有很大的不同,文献中采用了平面公式法计算内点的深度,用空间直线方程来计算边界直线和边界坐标。

这样处理的好处是,对于图形的内点,不同的扫描线均采用同一增量。

这样只需计算扫描线的起点和终点的X 坐标,从而大大加快了运算。

但是,该算法在处理复杂的曲面时,面片和面片相交的地方常出现深度迁跃现象。

笔者根据Gouraud的思想,基于Bresenham算法,采用双线性插值法计算三角形内点的深度,采用沿边自适应线性增量法计算边界深度。

这种算法简单,便于硬件实现,并且不需要对面片进行排序,对于具有中等复杂程度的场景速度也比较快。

景物空间消隐算法研究综述

景物空间消隐算法研究综述
c
多边形区域算法
平面多边形的裁剪算法
如图:多边形P由9条有向边围 成,其中,e1、e2、e3、e4 和e5组成多边形的外环,e6、 e7、e8和e9组成多边形的内 环。沿边的方向前进,多边形 的内域总是在前进方向的左侧。这样,多边形 的内环方向与外环的方向总是相反的。
多边形区域算法
平面多边形的裁剪算法
消隐算法将内部多边形的各个顶点的X 坐标和Y坐标代入多边形A和B的平面 方程中,求出A和B重叠部分的各顶点 的Z值,据此比较其深度,确定Pin 是否 要选为新的 P ,去裁剪其他的多边形。
c
多边形区域算法
多边形区域排序算法可描述如下: (1)初步的深度排序:搜索各多边形 Pk (k=1,2,...,n)各顶点的Z的最小值,并按 其大小将多边形作初步排序。 (2)以当前深度最小(即具有最小Z值,也即离视点最近)的多边形作为裁剪多 边形 Pc 。 (3)用Pc 对多边形序列中那些深度更大的主多边形 Ps 进行裁剪,产生内部多边 形 Pin和外部多边形 Pout。 (4)比较 Pc 和内部多边形 Pin 的深度,检查是否离视点较近的多边形。如果不是, 则选择为新的裁剪多边形 Pin,重新回到(3)。 (5)在多边形序列中,选择下一个深度最小的多边形作为裁剪多边形,从(3)开 始重复做,直至所有的多边形都处理完为止。 (6)在输出的多边形中,除去所有内部多边形外,其余的多边形均是可见多边 形。
BSP树算法
经过平面P1和P2的分割,则可生成如 下的BSP树:
BSP树算法
对于由多边形面组成的对象,可以选 择与多边形面重合的分割面,利用平 面方程来区分后面的和前面的多边形 顶点。 一旦BSP树创建完毕,即可按先右节 点后左节点的次序遍历该树。该树上 的面按由后往前次序显示,由此前面 的对象覆盖后面的对象。

计算机图形学消隐

计算机图形学消隐
for(每个多边形) for (多边形在投影平面上的投影区域内的每个像素(u,v)) { 计算多边形在当前像素(u,v)处的深度值d; if (d>Z缓冲器的第(u,v)单元的值) { 置帧缓冲器的第(u,v)单元值为当前背景色; 置Z缓冲器的第(u,v)单元值为d; } }
for(v=0;v<vmax;v++) {
本算法中有两个缓存:
Z-Buffer算法的原理
Z-Buffer算法步骤:
1. 初始化:把Z-Buffer中各(x,y)单元置为z的 最小值,而帧缓存中各(x,y)单元置为背静色。
2. 在把物体表面相应的多边形扫描转换成帧缓 存中的信息时,对于多边形内的每一个采样 点(x,y)进行以下几步处理:
(a). 计算采样点(x,y)的深度z(x,y); (b). 如z(x,y)>zbuffer(x,y),则把z(x,y)存入z缓存,
再把多边形在z(x,y)处的颜色存入帧缓存的 (x,y)地址中。
算法描述
for(v=0;v<vmax;v++) for(u=0;u<umax;u++) { 将帧缓冲器的第(u,v)单元置为背景色; 将Z缓冲器的第(u,v)单元置为最小深度值; }
若对于窗口的每一个顶点,所得判别函 数值的符号相同,则所有顶点位于该直 线的同侧,窗口与此棱无交。若符号不 同,则多边形与窗口相交。
相交多边形判别示例
F y mx b y 5x 36 F (8,8) 8 5 *8 36 4 F (8,32) 32 5 *8 36 28 F (32,32) 32 5 * 32 36 92 F (32,8) 8 5 * 32 36 116
for(u=0;u<umax;u++) { 将帧缓冲器的第(u,v)单元置为背景色; 将Z缓冲器的第u单元置为最小深度值; } for(每个多边形) {

计算机图形学消隐算法

计算机图形学消隐算法
早期图形显示器是用线条表示图形,消隐主要是消隐线 问题。使用光栅显示器后,物体可用连续变化的色调来描 述,消隐算法的研究渐渐转向消隐面的问题。
隐藏线(面)的消除的两种基本算法
第一种是物空间算法。 • 它以三维场景中的物体对像作为处理单元的,在所
有的对像之间进行比较,除去完全不可见的的物体 和物体上不可见的部分。常用于线框表示立体的线 隐藏,也用于面隐藏。
• 特点是:算法精度低,只能达到屏幕精度为止,但速度往
往更高。 其算法是对每一个像素:
在和投影点到像素的连线相交的表面中找到离观察点最近 的表面
用该表面上交点处的颜色填充该像素。
for (窗口内的每一个像素) { 确定距视点最近的物体,以该物体表 面的颜色来显示像素}
算法复杂度
假设场景中有k个物体,平均每个物体表面 由h个多边形构成,显示区域中有m x n个像素, 则:

2
<=

<=

N . V时<0 不可见
、空间分割技术
依据:场景中的物体,它们的投影在投影平面上 是否有相互遮挡的重叠部分? 对于根本不存在相互遮挡关系的物体,应 避免这种不必要的测试。
9
象空间消隐算法: 这类算法对屏幕上的每个象素进行判断,以决有 m×n个象素点,每个物体表面上有h个多边形,则该 类消隐算法计算量正比于mnh。
则: k个物体的算法复杂度为: O(mnkh) 。
10
算法排序
各种消隐算法均采用一定形式的几何排序。通过排序 ,可搜查出位置上靠近观察者的几何元素,确定几何元 素之间在位置上的遮挡关系,解决消隐计算的主要问题 。各种算法都有各自的排序方法和排序次序。排序次序 影响算法的效率。
二、 消隐基本技术

计算机图形学 第7章消隐 - 课程教学辅导资料

计算机图形学 第7章消隐 - 课程教学辅导资料
计算机图形学
扫描线Z-buffer算法

改进之一:将窗口分割成扫描线

Z缓冲器的单元数只要等于一条扫描线内像素的个数就可以了。
计算机图形学
扫描线Z-buffer算法

改进之一:将窗口分割成扫描线

Z缓冲器的单元数只要等于一条扫描线内像素的个数就可以了。
计算机图形学
扫描线Z-buffer算法

改进之一:将窗口分割成扫描线


nu :当沿扫描线u递增一个像素时,多边形所在平面n坐标的增 量,对方程au+bv+cn+d=0来说,nu =-a/c nv :当沿扫描线v递增一个像素时,多边形所在平面n坐标的增 量,类似,nv =-b/c (c!=0) nextEP:指向下一个边对结构的指针。

计算机图形学
扫描线Z-buffer算法--活化边表对
长方体线框投影图的二义性
计算机图形学
基本概念


消隐的对象是三维物体。三维体的表示主要有边 界表示和CSG表示等。 消隐结果与观察物体有关,也与视点有关。
线框图
消隐图
真实感图形
计算机图形学
消隐的分类

按消隐对象分类


线消隐 消隐对象是物体上的边,消除的是物体上不可见的边 面消隐 消隐对象是物体上的面,消除的是物体上不可见的面

计算机图形学
扫描线Z-buffer算法--边的分类表

边的分类表(ET):当一个多边形进入活化多边形表时,需为其建立 一个边分类表(ET)。这里,ET与其在扫描转换多边形的扫描线算 法中的含义相同,是对多边形的非水平边进行分类的一维数组,长度 等于绘图窗口内扫描线的数目。若一条边在投影平面上的投影的下端 点的v坐标为v,则将该边归为第v类。

消隐算法的分类

消隐算法的分类

消隐算法的分类
根据消隐空间的不同,消隐算法可分为两类:1. 物体空间的消隐算法:物体空间是物体所在的空间,即规范化投影空间。

这类算法是将物体表面上的K个多边形中的每一个面与其余的K-1个面进行比较,精确求出物体上每条边或每个面的遮挡关系。

计算量正比于K2。

2.图象空间的消隐算法:图象空间就是屏蒂坐标空间,这类算法对屏幕的每一象素进行判断 ,以决定物体上哪个多边形在该象素点上是可见的。

若屏蒂上有mxn个象素点,物体表面上有K个多边形,则该类消隐算法计算量正比于mnK。

第10讲 图形消隐

第10讲 图形消隐

1 0 T2 0 0
21
10.3 画家算法

多边形的排序算法
在观察坐标系 uvn 中,观察方向是 n 轴的负方向,因而 n 坐 标大者距观察者更近。nmin(P)和 nmax(P) 分别为 P 各顶点 n 坐标的最小和最大值。[投影为正平行投影]
1)将场景中所有多边形存入一个线性表,记为L; 2)如果L中仅有一个多边形,算法结束;否则根据每个多边形的nmin 对它们预排序。不妨假定多边形P落在L的表首,即nmin(P) 为最小 再记 Q 为 L – {P} (表中其余多边形)中任意一个; 3)判别P, Q之间的关系,有如下二种: (1)对所有的Q,有nmax(P) < nmin (Q), 则多边形 P 的确距观察点 最远,它不可能遮挡别的多边形。令L = L – {P}, 返回第二步; (2)存在某一个多边形Q,使 nmax(P) > nmin (Q),需进一步判别:
27
10.4 Z缓冲器算法

{
算法伪码
帧缓存全置为背景色; 深度缓存全置为最小 Z 值; for(每一个多边形) { for(该多边形所覆盖的每个像素(x, y) ) { 计算该多边形在该像素的深度值 Z(x, y); if ( Z(x, y)大于Z缓存在(x, y)的值) { 把 Z(x, y)存入 Z 缓存中(x, y)处; 把多边形在(x, y)处的颜色值存入帧缓存的(x, y)处; } } }

关键

如何对场景中的物体按深度(远近)排序,建立深度优先 级表?
19
10.3 画家算法

世界坐标系
用户用来定义图形的坐标系,主要用于计算机图形场 景中所有图形对象的空间定位和定义。

观察坐标系
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

10 / 41
第九章:真实感图形学
• 如果消隐对象有N条棱,当N很大时,用两两求交的方法 工作量很大 O(N2) 。为提高算法效率,要设法减少求交的 工作量。 • 设V为由视点出发的观察向量,N为某多边形面的法向量。 若 V· N>0 ,称该多边形为后向面。若 V· N<0 ,称该多边形 为前向面。如下图中的 JEAF 、 HCBG 和 DEABC 所在的面 均为后向面。 • 后向面总是看不见的,由于后向面的遮挡,别的棱成为 不可见-》可以把后向面去掉,并不影响消隐结果。
2018/10/6 3 / 41
第九章:真实感图形学
• Southerland根据消隐空间的不同,将消隐算法分为三类: 1. 物体空间的消隐算法 (光线投射、Roberts) 将场景中每一个面与其他每个面比较,求出所有点、边、 面遮挡关系。 2. 图像空间的消隐算法 (Z-buffer、扫描线、warnock) 对屏幕上每个象素进行判断,决定哪个多边形在该象素可 见。 3. 物体空间和图像空间的消隐算法 (画家算法) 在物体空间中预先计算面的可见性优先级,再在图像空间 中生成消隐图。7Βιβλιοθήκη / 41第九章:真实感图形学
4. 求所剩线段(可能被遮挡部分)的投影与多边形边界投影 的所有交点,并根据交点在原直线参数方程中的参数 值求出Z值(即深度)。若无交点,转5。 5. 以上所求得的各交点将线段的投影分成若干段,求出 第一段中点。 6. 若第一段中点在平面的投影内,则相应的段被遮挡, 否则不被遮挡;其他段的遮挡关系可依次交替取值进 行判断。 7. 结束。
2018/10/6 5 / 41
第九章:真实感图形学
• 线消隐中最基本的运算 判断面对线的遮挡关系。体也要分解为面,再判断 面与线的遮挡关系。在遮挡判断中,要反复地进行 线线、线面之间的求交运算。
2018/10/6
图9.5 遮挡关系
6 / 41
第九章:真实感图形学
• 平面对直线段的遮挡判断算法 不失一般性,取视点在 Z轴正无穷远,视线为 Z轴负方向,物体投影到XOY平面上。 1. 若线段的两端点及视点在给定多边形的同侧, 线段不被其遮挡,转7(结束)。(深度检测, 多边形顶点的最大 Z坐标小于等于线段端点的 最小Z坐标,多边形完全在线段之后,不可能 遮挡线段,即线段完全可见) 2. 若线段的投影与多边形投影的包围盒 ( 覆盖多 边形投影的最小矩形区域 )无交,线段不被给 定多边形遮挡,转7(结束)。 3. 求直线与相应多边形的交。若无交点,转4。 否则,交点在线段内部或外部。若交点在线 段内部,交点将线段分成两段,与视点同侧 的一段不被遮挡,另一段在视点异侧,转4再 判;若交点在线段外部,转4。 2018/10/6
2018/10/6
11 / 41
第九章:真实感图形学
图 9.9 (a)前向面
(b)后向面
(c)多面体的隐藏线消除
2018/10/6
12 / 41
第九章:真实感图形学
消除隐藏面 使用光栅图形显示器绘制物体的真实图形时,必须解决消除 隐藏面的问题。 1. 画家算法(列表优先算法) 先把屏幕置成背景色,再把物体的各个面按其离视点的远近 进行排序,离视点远者 (Z 最小 ) 在表头,离视点近者 (Z 最大 ) 在表尾,排序结果存在一张深度优先级表中。从表头到表尾 逐个取出多边形投影到屏幕并显示多边形包含的实心区域。 由于后显示的图形取代先显示的画面,而后显示的图形所代 表的面离视点更近,所以由远及近的绘制各面,就相当于消 除隐藏面。这与油画作家作画的过程类似,先画远景,再画 中景,最后画近景。
2018/10/6 8 / 41
第九章:真实感图形学
图9.6 视点与线段同侧
图9.7 包围盒不交
2018/10/6
图9.8 分段交替取值
9 / 41
第九章:真实感图形学
• 线消隐算法
基本数据结构: 面表(存放参与消隐的面) + 线表(存放待显示的线) HiddenLineRemove() { 坐标变换; for(对每个面Fj) for(Fj的每一条边Ei) 将二元组< Ei ,j>压入堆栈 While(栈不空) { < Ei ,j0> = 栈顶; for(j!= j0的每一个面Fj) { if( Ei 被Fj 全部遮挡) { 将Ei 清空; break; } if( Ei 被Fj 部分遮挡) { 从Ei 中将被遮挡的部分裁掉; if(Ei 被分成若干段) { 取其中的一段作为当前段; 将其它段及相应的j压栈 2018/10/6 }
第九章:真实感图形学
9.1 消隐 真实图形在仿真模拟、几何造型、广告影视、指挥控制 和科学计算的可视化等许多领域有广泛应用。 用计算机生成三维物体的真实图形,是计算机图形学研 究的重要内容。 显示设备描述物体的图形时,必须把三维信息经过某种 投影变换,在二维的显示表面上绘制出来。由于投影变 换失去了深度信息,往往导致图形的二义性 ( 如图 9.1 所 示)。要消除二义性,就必须在绘制时消除被遮挡的不可 见的线或面,称作消除隐藏线和隐藏面,或简称为消隐。 经过消隐得到的投影图称为物体的真实图形。
2018/10/6 4 / 41
第九章:真实感图形学
消除隐藏线 • 对造型的要求 在线框显示模型中,用边界线表示有界平面,用边界线及若 干参数曲线表示参数曲面,所以待显示的所有实体均为线。 但线不可能对线有遮挡关系,只有面或体才有可能对线形成 遮挡。故消隐算法要求造型系统中有面的信息,最好有体的 信息。正则形体的消隐可利用其面的法向量,比一般情况快 的多。 • 坐标变换 为运算方便,一般通过平移、旋转、透视等各种坐标变换, 将视点变换到Z轴的正无穷大处,视线方向变为Z轴的负方向。 变换后,坐标Z值反映了相应点到视点的距离,作为判断遮 挡的依据。 对视角以外的物体应先行虑掉,减少不必要的运算。
2018/10/6 1 / 41
第九章:真实感图形学
图9.1 长方体线框投影图的二义性
图9.2线框图
2018/10/6
图9.3 消隐图
图9.4真实感图形
2 / 41
第九章:真实感图形学
消隐的分类 消隐的对象是三维物体。 三维体的表示:边界表示和CSG(结构实体几何学)表示等。 最简单的表示方式:用表面上的平面多边形表示。如物体的 表面是曲面,则将曲面用多个平面多边形近似。 消隐结果与观察物体有关,也与视点有关。 • 按消隐对象分类 1. 线消隐 消隐对象是物体上的边,消除物体上不可见的边。 2. 面消隐 消隐对象是物体上的面,消除物体上不可见的面。
相关文档
最新文档