计算机图形学隐面算法.pptx





《计算机图形学隐面算法.pptx》由会员分享,可在线阅读,更多相关《计算机图形学隐面算法.pptx(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机图形学隐面算法现在学习的是第1页,共31页消除隐藏面消除隐藏面隐面算法用于消除物体上不可见的表面主要针对表面模型,不仅要求画出物体的各个可见棱边,而且还要求填充各个表面点取样算法点取样算法画家算法Z缓冲区算法扫描线算法区域采样算法在绘制物体真实图形时,总是在投影面取一组离散点,在各离散点解决消隐问题,以确定颜色、亮度,用于显示屏幕上的像素。现在学习的是第2页,共31页消除隐藏面消除隐藏面 画家算法画家算法画家算法画家算法基本思想:基本思想:画家的作画时,先涂背景色,然后由远及近的将景物画上,顺序暗示出所画物体之间的相互遮挡关系。所以称为画家算法。因此,画家算法又被称为深度排序算法或表优先
2、级算法。基本原理:基本原理:1)先把屏幕置成背景色;2)将场景中的物体的各个面按其距观察点的远近进行排序,结果放在一张线性表中;(线性表构造:距观察点远的优先级低,放在表头;距观察点近的优先级高,放在表尾)该表称为深度优先级表。3)然后按照从远到近(从表头到表尾)的顺序逐个绘制物体表面。现在学习的是第3页,共31页消除隐藏面消除隐藏面 画家算法画家算法深度优先级表的建立一、多边形优先级的考虑首先对一个简单的画面,可以直接建立一个确定的深度优先表如图(a)所示。深度方向上无重叠。当画面略微复杂一点,无法按简单的Z向排序建立确定的深度优先表,以确定每一个多边形的优先级,如图(b)所示。深度方向上有
3、重叠Q QX XZ ZP PR RQ QX XZ ZP P(a a)(b b)R R现在学习的是第4页,共31页消除隐藏面消除隐藏面 画家算法画家算法深度优先级表的建立二、投影重叠判断:测试按照难度递增顺序排列:y yy yy y包围盒定义:一个形体的包围盒指的是包围它的简单形体。一个好的包围盒要具有两个条件:包围和充分紧密包围着形体;对其的测试比较简单。1.P和Q在oxy平面上投影的包围盒在x方向上不相交,图a;2.P和Q在oxy平面上投影的包围盒在y方向上不相交,图b;3.P在Q之后。P的各顶点均在Q的远离视点的一侧,图d;4.Q在P之前。Q的各顶点均在P的靠近视点的一侧,图e;5.P和Q
4、在观察平面oxy上的投影不相交,图c;上面5项只要有一项成立,P就不遮挡Q,不需要重新排序现在学习的是第5页,共31页消除隐藏面消除隐藏面 画家算法画家算法 深度优先级表的建立对于某一重叠表面,上述五项测试均不成立,则需在有序表中调换两个面的位置。S,SS,S,S,S S S,S,S,S S S SS S S S z zS,SS,S S S,S,S 有重叠S S S S调换两个面的位置后,需要对调换过顺序的表面重复上述5项测试现在学习的是第6页,共31页消除隐藏面消除隐藏面 画家算法画家算法深度优先级表的建立解决方法是沿多边形所在平面间的交线循环分割这些多边形。无法直接建立正确的深度优先表现在
5、学习的是第7页,共31页消除隐藏面消除隐藏面 画家算法画家算法排序计算量大;多边形相交或循环重叠时,必须分割多边形。画家算法的不足:画家算法的不足:现在学习的是第8页,共31页消除隐藏面消除隐藏面 Z Z缓冲区算法缓冲区算法Z Z缓冲区算法缓冲区算法基本思想基本思想:投影平面每个像素所对应的所有面片(平面或曲面)的深度进行比较,然后取离视线最近面片的属性值作为该像素的属性值。Z缓冲器算法基本思想现在学习的是第9页,共31页消除隐藏面消除隐藏面 Z Z缓冲区算法缓冲区算法实现方法帧缓存区 深度缓存区存放每个像素的深度值。Z缓冲器每个单元存放对应像素当前最近面的深度值存放每个像素的颜色值。帧缓冲器
6、每个单元存放对应像素的颜色值屏幕现在学习的是第10页,共31页消除隐藏面消除隐藏面 Z Z缓冲区算法缓冲区算法算法描述:算法描述:for(v=0;vvmax;v+)for(u=0;u Z缓冲器的第(u,v)单元的值)置帧缓冲器的第(u,v)单元值为当前多边形颜色;置Z缓冲器的第(u,v)单元值为d;帧缓冲器各单元均置为背景色,深度缓冲器所有单元均置为最小z值,然后逐个处理多边形表中的各面片。计算各像素点(x,y)所对应的深度值z(x,y),并将结果与深度缓冲器中该像素单元所存储的深度值ZB(x,y)进行比较。若zZB(x,y),则ZB(x,y)=z,同时将该像素的颜色值I(x,y)写入帧缓冲器
7、,即IB(x,y)=I(x,y);否则不变。现在学习的是第11页,共31页消除隐藏面消除隐藏面 Z Z缓冲区算法缓冲区算法深度值的计算若已知多边形的方程,则可用增量法计算扫描线每一个像素的深度。设平面方程为:C0C0 则多边形面上的点(x,y)所对应的深度值为:现在学习的是第12页,共31页消除隐藏面消除隐藏面 Z Z缓冲区算法缓冲区算法深度值的计算 由于所有扫描线上相邻点间的水平间距为1个像素单位,扫描线行与行之间的垂直间距也为1。因此可以利用这种连贯性来简化计算过程,如图所示。若已计算出(x,y)点的深度值为zi,沿x方向相邻连贯点(x+1,y)的深度值zi+1可由下式计算:现在学习的是第
8、13页,共31页消除隐藏面消除隐藏面 Z Z缓冲区算法缓冲区算法深度值的计算沿多边形左边界递归计算边界上各点的坐标:m为该边的斜率,沿该边的深度也可以递归计算出来,即:如果该边是一条垂直边界,则计算公式简化为:现在学习的是第14页,共31页消除隐藏面消除隐藏面 Z Z缓冲区算法缓冲区算法深度值的计算对于每条扫描线,首先根据公式计算出与其相交的多边形最左边的交点所对应的深度值,然后,利用图形连贯性将该扫描线上所有的后续点计算出来。所有的多边形处理完毕,即得消隐后的图形。现在学习的是第15页,共31页消除隐藏面消除隐藏面 Z Z缓冲区算法缓冲区算法Z Z缓冲区算法的优缺点:缓冲区算法的优缺点:优点
9、1.简单稳定,利于硬件实现2.Z缓冲器算法的最大优点:Z缓存器算法在像素级上以近物取代远物。形体在屏幕上的出现顺序是无关紧要的。可以轻而易举地处理隐藏面以及显示复杂曲面之间的交线。缺点1.需要一个额外的Z 缓冲器,需更大的存储空间,例如,当像素数目为500*500时,就需要250K个深度值的存储空间。深度值一般用浮点数表示,每个数占4个字节,故共需要1M字节的额外存储空间。2.在每个多边形占据的每个像素处都要计算深度值,计算量大。现在学习的是第16页,共31页消除隐藏面消除隐藏面 扫描线算法扫描线算法扫描线算法扫描线算法 基本思想基本思想:按扫描行的顺序处理一帧画面,在由视点和扫描线所决定的扫
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学 算法

限制150内