第七章消除隐藏线和隐藏面PPT讲稿.ppt
《第七章消除隐藏线和隐藏面PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第七章消除隐藏线和隐藏面PPT讲稿.ppt(90页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七章 消除隐藏线和隐藏面第1页,共90页,编辑于2022年,星期一图象空间算法对显示设备上每一个可分图象空间算法对显示设备上每一个可分辨辨象素象素进行判断,看组成物体的多个多进行判断,看组成物体的多个多边形表面中哪一个在该象素上可见,即边形表面中哪一个在该象素上可见,即要对每一象素检查所有的表面。要对每一象素检查所有的表面。客体空间算法把注意力集中在分析要客体空间算法把注意力集中在分析要显示显示形体形体各部分之间的关系上,这种各部分之间的关系上,这种算法对每一个组成形体的表面,都要算法对每一个组成形体的表面,都要与其它各表面进行比较,以便消去不与其它各表面进行比较,以便消去不可见的面或面的不
2、可见部分。可见的面或面的不可见部分。第2页,共90页,编辑于2022年,星期一第一节第一节 线面比较法消除隐藏线线面比较法消除隐藏线 多面体的面可见性多面体的面可见性 凸多面体的可见面就是朝向观察位置凸多面体的可见面就是朝向观察位置的面的面 设观察方向由设观察方向由指向观察位置指向观察位置的一个方的一个方向向量向向量k k给出,所考查的面的外法向量是给出,所考查的面的外法向量是n n,则这两个向量的夹角,则这两个向量的夹角 满足满足0 /2时,所考查面是可见的,否则就是不可见时,所考查面是可见的,否则就是不可见的的 第3页,共90页,编辑于2022年,星期一把把n和和k记作记作则则分子分子 为
3、为正正 ,则,则 ,面面为可见;若为为可见;若为负负,则,则 ,面为不可见;,面为不可见;若为若为零零,则,则 ,此面退化为线。,此面退化为线。第4页,共90页,编辑于2022年,星期一第5页,共90页,编辑于2022年,星期一 设空间有一个四面体,顶点设空间有一个四面体,顶点A,B,C,D的坐标依次是的坐标依次是(0,0,0),(2,0,1),(4,0,0),(3,2,1),沿沿z轴正向观察轴正向观察,求各面的可见性求各面的可见性观察方向向量是观察方向向量是k=(0,0,1),三角面三角面DAB的法向量是的法向量是:第6页,共90页,编辑于2022年,星期一 因此因此,面面DAB为可见面为可
4、见面.类类似计算可知,面似计算可知,面DBC是可见面是可见面,面面ADC是不是不可见面可见面,面面ACB退化为线。退化为线。第7页,共90页,编辑于2022年,星期一 利用外法线就可以判断凸多面体上各利用外法线就可以判断凸多面体上各表面的可见性,由此就能解决对单个凸多面表面的可见性,由此就能解决对单个凸多面体的隐藏线和隐藏面的消除问题。体的隐藏线和隐藏面的消除问题。消除消除隐藏线隐藏线的线面比较法的最先一步就的线面比较法的最先一步就是利用外法线判断出所有可能的可见面,可是利用外法线判断出所有可能的可见面,可能可见面上的线段是可能可见线。能可见面上的线段是可能可见线。要依次用要依次用每一条可能可
5、见线,与每一个可能可见面每一条可能可见线,与每一个可能可见面比较比较,从而确定出可见线、隐藏线及可见,从而确定出可见线、隐藏线及可见线上的隐藏部分。线上的隐藏部分。第8页,共90页,编辑于2022年,星期一可能可见线和可能可见面可能可见线和可能可见面 空间任一线段,只有其投影与多边形空间任一线段,只有其投影与多边形表面的表面的投影范围发生交迭投影范围发生交迭时,才可能与多时,才可能与多边形表面有遮档关系边形表面有遮档关系 一个多边形表面的投影范围一个多边形表面的投影范围 第9页,共90页,编辑于2022年,星期一范围检查也称为范围检查也称为最大最小检验最大最小检验,即通过比较,即通过比较有关的
6、最大或最小值来判定范围的交迭情形。有关的最大或最小值来判定范围的交迭情形。第10页,共90页,编辑于2022年,星期一 按按Xv方向对投影范围的检查,可分别方向对投影范围的检查,可分别计算出投影线段和多边形表面计算出投影线段和多边形表面投影范围投影范围X坐标的最大值和最小值,设分别是坐标的最大值和最小值,设分别是 于是若于是若 或者或者 ,线段线段和多边形表面就必然没有遮挡关系。和多边形表面就必然没有遮挡关系。显然按显然按xv方向或按方向或按yv方向都可以类似地做方向都可以类似地做范围检查,这时可避免消除隐藏面时很多不必范围检查,这时可避免消除隐藏面时很多不必要的深度比较。要的深度比较。第11
7、页,共90页,编辑于2022年,星期一第12页,共90页,编辑于2022年,星期一 zv方向的范围检查是沿方向的范围检查是沿zv方向观察方向观察时时粗略的深度检验粗略的深度检验。在此范围检查中若线段投影的最大在此范围检查中若线段投影的最大z坐标坐标 小于多边形表面投影范围最小小于多边形表面投影范围最小的的z z坐标坐标 ,则线段完全在表面前面,则线段完全在表面前面,根本不发生遮挡现象,可以不必再往下根本不发生遮挡现象,可以不必再往下做精确的深度检验。做精确的深度检验。第13页,共90页,编辑于2022年,星期一精确深度检验精确深度检验 l2 线段不会被线段不会被遮挡遮挡;线段有可能线段有可能被
8、遮挡被遮挡;第14页,共90页,编辑于2022年,星期一 求交点求交点 直线直线L1的参数方程可写成的参数方程可写成X=x1,Y=y1,Z=z1+t,代入平面方程得:,代入平面方程得:第15页,共90页,编辑于2022年,星期一若若t0,则则Z1,若,若t0Z1。需要检查出某一段子线段是否可见。为此可以取子需要检查出某一段子线段是否可见。为此可以取子线段上任意一点,若这点在多边形表面各边线的投影所线段上任意一点,若这点在多边形表面各边线的投影所形成的封闭多边形内,这子线段就不可见,否则就可见。形成的封闭多边形内,这子线段就不可见,否则就可见。第16页,共90页,编辑于2022年,星期一 空空间
9、间一一条条线线段段可可能能被被一一个个多多边边形形表表面面遮遮挡挡的消除隐藏线的算法的步骤如下:的消除隐藏线的算法的步骤如下:做做xv方向和方向和yv方向的方向的范围检查范围检查;若不能判定,;若不能判定,则接着做则接着做zv方向的范围检查即方向的范围检查即粗略的深度比较粗略的深度比较;若还不能判定就再进行若还不能判定就再进行精确的深度比较精确的深度比较,比较,比较时应计算线段两端点在可能遮挡它的平面上的时应计算线段两端点在可能遮挡它的平面上的投影点,比较相应的坐标。这时可能出现线段投影点,比较相应的坐标。这时可能出现线段与平面相交需要用与平面相交需要用交点交点,这些交点把线段的投,这些交点把
10、线段的投影分成两部分考虑的情况。判定得知线段确实影分成两部分考虑的情况。判定得知线段确实被平面遮挡了哪些部分做精确计算,计算是求被平面遮挡了哪些部分做精确计算,计算是求出线段的投影与遮挡平面上多边形表面边框投出线段的投影与遮挡平面上多边形表面边框投影的所有交点,这些交点把线段的投影分成可影的所有交点,这些交点把线段的投影分成可见和不可见的一些子线段。对见和不可见的一些子线段。对子线段子线段的可见性,的可见性,先取上面一点做点的先取上面一点做点的包含性包含性检验来进行判断。检验来进行判断。第17页,共90页,编辑于2022年,星期一线面消隐算法()线面消隐算法()坐标变换;坐标变换;for(对每
11、一个面对每一个面FACEi的每一条边的每一条边EDGEj)将二元组将二元组压入堆栈;压入堆栈;while(栈不空栈不空)=栈顶;栈顶;for(i!=i0的每个面的每个面FACEi)if(EDGEj被被FACEi全部遮挡全部遮挡)将将EDGEj清空;清空;break;if(EDGEj被被FACEi部分遮挡部分遮挡)从从EDGEj中将被遮挡的部分裁掉;中将被遮挡的部分裁掉;if(EDGEj被分成若干段被分成若干段)将其中的一段作为当前段;将其中的一段作为当前段;将其他段及相应的将其他段及相应的i压入堆栈;压入堆栈;if(EDGEj段不为空段不为空)显示显示EDGEj;第18页,共90页,编辑于20
12、22年,星期一第二节第二节 曲面隐藏线消除的浮动曲面隐藏线消除的浮动水平线算法水平线算法 若存在若存在M M个象素,则建立个象素,则建立M M个内存个内存单元单元 ,称之为上浮水平线数组,称之为上浮水平线数组,在这些单元中先放上初值,初值应取在这些单元中先放上初值,初值应取成小于成小于 。曲面方程曲面方程第19页,共90页,编辑于2022年,星期一第20页,共90页,编辑于2022年,星期一设设平平面面是是最最靠靠近近观观察察者者的的,从平面上从平面上的曲线的曲线第21页,共90页,编辑于2022年,星期一 水平方向每个象素的对应水平方向每个象素的对应x x坐坐标值,计算标值,计算 若若 ,则
13、点,则点 是是可见点,并把可见点,并把 内容变成内容变成 。若若 ,则,则 为不可见,为不可见,则不改变则不改变 的内容。的内容。第22页,共90页,编辑于2022年,星期一 上图上图c c点附近的虚线部分应是可见的,点附近的虚线部分应是可见的,但按上述算法却成了不可见了。为了解但按上述算法却成了不可见了。为了解决这个问题,可另建立决这个问题,可另建立M M个单元个单元 ,可称之为下浮水平线数组。,可称之为下浮水平线数组。第23页,共90页,编辑于2022年,星期一 初值取成初值取成 或比这更大或比这更大一点得数,每次求出一点得数,每次求出 第24页,共90页,编辑于2022年,星期一Ifth
14、enIfthen 如果函数如果函数 是用是用离散点形式离散点形式 给出给出,则可如下处理。,则可如下处理。这时的这时的 单元个数不是由显示器单元个数不是由显示器在在x x方向的象素个数来定,而是根据给定的方向的象素个数来定,而是根据给定的离散点在离散点在x x方向的个数来定方向的个数来定。第25页,共90页,编辑于2022年,星期一基本想法是用线性插值法所得直线来代基本想法是用线性插值法所得直线来代替两个点之间的曲线。若上述判断结果为替两个点之间的曲线。若上述判断结果为 均为不可见,则认为平面均为不可见,则认为平面 上的从上的从 的一段曲线为不可见。若两点均为可见,的一段曲线为不可见。若两点均
15、为可见,则用这两点的连线代替原来这两点之间的则用这两点的连线代替原来这两点之间的曲线,并认为可见的,若这两点中有一点曲线,并认为可见的,若这两点中有一点可见,如图的可见,如图的A A点,另一点则为不可见,如点,另一点则为不可见,如图中的图中的B B点,这时要求出点连线的交点点,这时要求出点连线的交点E E。AEAE部分为可见,部分为可见,EBEB为不可见。为不可见。第26页,共90页,编辑于2022年,星期一ABCDEZi+1Zi第27页,共90页,编辑于2022年,星期一 一般用一般用 两族曲线两族曲线来表示一曲面时常用斜投影。来表示一曲面时常用斜投影。为了得到消隐后曲面表示,不能对为了得到
16、消隐后曲面表示,不能对两族曲线分别消隐在叠加在一起,正确两族曲线分别消隐在叠加在一起,正确的做法是对两族曲线一起做,即处理好的做法是对两族曲线一起做,即处理好平面平面 一段曲线后,马上一段曲线后,马上处理平面处理平面 的一段曲线。的一段曲线。对这两族曲线用公共的对这两族曲线用公共的第28页,共90页,编辑于2022年,星期一X=XkZ=ZiB第29页,共90页,编辑于2022年,星期一第三节第三节 深度排序算法深度排序算法 深度排序算法的主要步骤:深度排序算法的主要步骤:1.把所有的多边形按顶点最大把所有的多边形按顶点最大z坐标值进坐标值进行排序。行排序。2.解决当多边形解决当多边形z范围发生
17、交迭时出现不范围发生交迭时出现不明确问题。明确问题。3.按最大按最大z坐标值逐渐坐标值逐渐减小减小的次序,对每的次序,对每个多边形进行扫描转换。个多边形进行扫描转换。第30页,共90页,编辑于2022年,星期一 算法的基本思想是按多边形离开算法的基本思想是按多边形离开观察位置的观察位置的距离距离进行排序,然后按照进行排序,然后按照距离减少距离减少的次序,把每个多边形内部的次序,把每个多边形内部点应有的象素值送入帧缓存存贮器中。点应有的象素值送入帧缓存存贮器中。算法考查多边形的深度次序是在算法考查多边形的深度次序是在客体空间中进行,图形显示时覆盖步客体空间中进行,图形显示时覆盖步骤是在图象空间中
18、实现,所以可以说骤是在图象空间中实现,所以可以说是一个是一个客体空间和图象空间客体空间和图象空间的混合算的混合算法。法。第31页,共90页,编辑于2022年,星期一第32页,共90页,编辑于2022年,星期一不明确问题检验方法不明确问题检验方法 所有多边形按顶点最大所有多边形按顶点最大z坐标值排坐标值排序后得到一个排序表,设序后得到一个排序表,设P是排在表中是排在表中最后的那个多边形。最后的那个多边形。设设Q是排在是排在P前面并且前面并且z坐标范围与坐标范围与其发生交迭的一个多边形,对其发生交迭的一个多边形,对Q与与P的的次序关系进行检查。次序关系进行检查。第33页,共90页,编辑于2022年
19、,星期一 检查可以按下面列出的五个步骤检查可以按下面列出的五个步骤进行,每个步骤判断一种情况。进行,每个步骤判断一种情况。1 1多边形的多边形的x坐标范围不相交迭,所以多坐标范围不相交迭,所以多边形不相交迭。边形不相交迭。2多边形的多边形的y坐标范围不相交迭,所以多坐标范围不相交迭,所以多边形不相交迭。边形不相交迭。3.P整个在整个在Q远离远离观察点的一侧。观察点的一侧。4.Q整个在整个在P的的靠近靠近观察点的一侧。观察点的一侧。5.多边形在多边形在z=0平面上的投影本身不相交平面上的投影本身不相交迭。迭。第34页,共90页,编辑于2022年,星期一第35页,共90页,编辑于2022年,星期一
20、 如果所有这五步检查都为假,就假定如果所有这五步检查都为假,就假定P是遮挡了是遮挡了Q,交换,交换P和和Q在排序表中的位在排序表中的位置。置。如果仍做交换,算法会永远循环下去而如果仍做交换,算法会永远循环下去而没有结果。没有结果。为了为了避免循环避免循环,可以做一个限制。当,可以做一个限制。当做过首次五步检查后,发生某个多边形被做过首次五步检查后,发生某个多边形被移到排序表的末尾时,就立即加上一个标移到排序表的末尾时,就立即加上一个标记,以后就不能再做移动。出现再次应该记,以后就不能再做移动。出现再次应该移动时,用一个多边形移动时,用一个多边形第36页,共90页,编辑于2022年,星期一所在的
21、平面,把另一个多边形剪裁分为所在的平面,把另一个多边形剪裁分为两个。两个。PQ第37页,共90页,编辑于2022年,星期一第四节第四节 画家算法画家算法 画家算法又称深度优先级表法,画家算法又称深度优先级表法,它是深度排序算法的一种具体实现。它是深度排序算法的一种具体实现。先画远景,再画中景,最后画先画远景,再画中景,最后画近景。近景。第38页,共90页,编辑于2022年,星期一81001101111010000100110016123426736587514843785621第39页,共90页,编辑于2022年,星期一 边界表示边界表示 三元组表示物体顶点的坐标。三元组表示物体顶点的坐标。四
22、元组表示物体的某个面由哪些顶点构成,每四元组表示物体的某个面由哪些顶点构成,每个面顶点个数都是个面顶点个数都是4 4个。个。程序中所使用的数据结构包括点记录程序中所使用的数据结构包括点记录(vertexvertex)、面记录()、面记录(patchpatch)和排序数组。点记)和排序数组。点记录由五个域构成。其中,三个域用于存储点的空录由五个域构成。其中,三个域用于存储点的空间坐标,另外两个域用于存储点的投影(屏幕)间坐标,另外两个域用于存储点的投影(屏幕)坐标。面记录由四个域组成,每个域存放对应的坐标。面记录由四个域组成,每个域存放对应的顶点号。排序数组的每个元素有两个域,其中一顶点号。排序
23、数组的每个元素有两个域,其中一个域存放面与视点的距离,另一个域存放该面的个域存放面与视点的距离,另一个域存放该面的面号。面号。第40页,共90页,编辑于2022年,星期一ReadkeyboardReadkeyboard:打打开开物物体体的的边边界界表表示示数数据据文文件件,从从键键盘盘读读进进旋旋转转角角和和透透视视角角,物物体体表表面面的颜色参数(色彩和饱和度),光源方向。的颜色参数(色彩和饱和度),光源方向。Vertices:读读进进顶顶点点的的空空间间坐坐标标,计计算算物物体体的的包包围围球球半半径径,把把物物体体缩缩小小到到单单位位球球中中去去,计计算算物体各顶点在屏幕上的投影坐标。物
24、体各顶点在屏幕上的投影坐标。开始开始第41页,共90页,编辑于2022年,星期一Patches:读读进进面面定定义义数数据据,求求出出各各面面与与视视点点的的距距离离,把把面面号号与与距距离离放放进进排排序序数数组组。然然后后以以面面与与视视点点的的距距离离为为参参照照值值,对对数数组组进进行行排排序。序。Gmode:使使终终端端进进入入图图形形状状态,设备参数初始化态,设备参数初始化Setpen:建立查色表建立查色表第42页,共90页,编辑于2022年,星期一Painting:从从排排好好序序的的数数组组中中依依次次取取出出一一面面号号,计计算算对对应应面面的的法法向向量量,再再计计算算该该
25、面面的的光光强强,然后显示该面。然后显示该面。Amode:终端返回文字状态。终端返回文字状态。结束结束第43页,共90页,编辑于2022年,星期一第五节第五节 z z 缓冲算法缓冲算法 z 缓冲算法缓冲算法(深度深度缓冲算法缓冲算法)是一种最简单是一种最简单的图象空间算法。对每一个点,这个算法不仅的图象空间算法。对每一个点,这个算法不仅需要有一个需要有一个更新缓冲器更新缓冲器存储各点的象素值,而存储各点的象素值,而且还需要有一个且还需要有一个z 缓冲存储器缓冲存储器存储相应的存储相应的z值。更新缓冲存储器初始化为背景值,值。更新缓冲存储器初始化为背景值,z缓冲缓冲存储器初始化为可以表示的最大存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七章 消除隐藏线和隐藏面PPT讲稿 第七 消除 隐藏 PPT 讲稿
限制150内