计算机图形学chap9

上传人:公**** 文档编号:579062256 上传时间:2024-08-25 格式:PPT 页数:30 大小:379.50KB
返回 下载 相关 举报
计算机图形学chap9_第1页
第1页 / 共30页
计算机图形学chap9_第2页
第2页 / 共30页
计算机图形学chap9_第3页
第3页 / 共30页
计算机图形学chap9_第4页
第4页 / 共30页
计算机图形学chap9_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《计算机图形学chap9》由会员分享,可在线阅读,更多相关《计算机图形学chap9(30页珍藏版)》请在金锄头文库上搜索。

1、第九章第九章 消消隐o基本概念基本概念o深度深度缓存器算法存器算法o区区间扫描描线算法算法o深度排序算法深度排序算法o区域区域细分算法分算法o光光线投射算法投射算法oBSP树算法算法o多多边形区域排序算法形区域排序算法oOpenGL中的消中的消隐1基本概念基本概念o物体的消物体的消隐或或隐藏藏线面的消除面的消除:在:在给定定视点和点和视线方向后,决定方向后,决定场景中哪些物体的表面是可景中哪些物体的表面是可见的,哪些是被遮的,哪些是被遮挡不可不可见的。的。2基本概念基本概念o消消隐算法按算法按实现方式分方式分类n图像空像空间消消隐算法以屏幕像素算法以屏幕像素为采采样单位,位,确定投影于每一像素

2、的可确定投影于每一像素的可见景物表面区域,景物表面区域,并将其并将其颜色作色作为该像素的像素的显示示颜色。如深度色。如深度缓冲器算法、冲器算法、A缓冲器算法、区冲器算法、区间扫描描线算算法等。法等。3基本概念基本概念n景物空景物空间消消隐算法直接在景物空算法直接在景物空间(观察坐察坐标系)中确定系)中确定视点不可点不可见的表面区域,并将的表面区域,并将它它们表达成同原表面一致的数据表达成同原表面一致的数据结构。如构。如BSP算法、多算法、多边形区域排序算法等。形区域排序算法等。n介于二者之介于二者之间的算法,如深度排序算法、区的算法,如深度排序算法、区域域细分算法、光分算法、光线投射算法等。投

3、射算法等。4基本概念基本概念o基本的原基本的原则n排序:各景物表面按照距离排序:各景物表面按照距离视点点远近排序的近排序的结果,用于确定消果,用于确定消隐对象之象之间的遮的遮挡关系。关系。n连贯性:性:连贯性是指所考察的物体或性是指所考察的物体或视区内区内的的图像局部保持不像局部保持不变的一种性的一种性质,用于提高,用于提高排序效率。排序效率。59.1深度深度缓存器算法(存器算法(Z-buffer)o基本原理基本原理n帧缓存:保存各点的存:保存各点的颜色。色。nZ缓存:保存屏幕坐存:保存屏幕坐标系上各象素点所系上各象素点所对应的深度的深度值。6深度深度缓存器算法(存器算法(Z-buffer)图

4、图9.1深度缓存器算法的原理深度缓存器算法的原理7深度深度缓存器算法(存器算法(Z-buffer)o算法步算法步骤n初始化:把初始化:把Z缓存中各存中各(x,y)单元置元置为z的最的最小小值,而,而帧缓存各存各(x,y)单元置元置为背景色。背景色。n在把物体表面相在把物体表面相应的多的多边形形扫描描转换成成帧缓存中的信息存中的信息时,对于多于多边形内的每一采形内的每一采样点点(x,y)进行行处理:理:8深度深度缓存器算法(存器算法(Z-buffer)l计算采算采样点点(x,y)的深度的深度z(x,y);l如如z(x,y)大于大于Z缓存中在存中在(x,y)处的的值,则把把z(x,y)存入存入Z缓

5、存中的存中的(x,y)处,再,再把多把多边形在形在z(x,y)处的的颜色色值存入存入帧缓存的存的(x,y)地址中。地址中。9深度深度缓存器算法(存器算法(Z-buffer)o如何如何计算采算采样点点(x,y)的深度的深度z(x,y)。n假定多假定多边形的平面方程形的平面方程为:Ax+By+Cz+D=0。10深度深度缓存器算法(存器算法(Z-buffer)图图9.2利用扫描线的连贯性加速深度的计算利用扫描线的连贯性加速深度的计算11深度深度缓存器算法(存器算法(Z-buffer)n扫描描线上所有后上所有后继点的深度点的深度值:n当当处理下一条理下一条扫描描线y=y-1时,该扫描描线上与上与多多边

6、形相交的最左形相交的最左边(x最小)交点的最小)交点的x值可可以利用上一条以利用上一条扫描描线上的最左上的最左边的的x值计算:算:12深度深度缓存器算法(存器算法(Z-buffer)n扫描描线深度深度缓存器算法存器算法13深度深度缓存器算法(存器算法(Z-buffer)o优点点n简单n便于硬件便于硬件实现o缺点缺点n占用太多的存占用太多的存储单元元n在在实现反走反走样、透明和半透明等效果方面有、透明和半透明等效果方面有困困难149.2区区间扫描描线算法算法o避免避免对被遮被遮挡区域的采区域的采样是是进一步提高一步提高扫描描线算法算法计算效率的关算效率的关键。图图9.3区间扫描线算法原理区间扫描

7、线算法原理15区区间扫描描线算法算法o算法算法n三三张表:表:边表、多表、多边形表、有效形表、有效边表。表。n分割子区分割子区间,确定子区,确定子区间上的唯一可上的唯一可见面。面。图图9.4扫描线子区间扫描线子区间16区区间扫描描线算法算法o特殊情形特殊情形n贯穿情形:穿情形:为了使算法能了使算法能处理理互相互相贯穿的多穿的多边形形,扫描描线上的分割点不上的分割点不仅应包含各多包含各多边形的形的边与与扫描描线的交点,而且的交点,而且应包含包含这些些贯穿穿边界与界与扫描描线的交点。的交点。17区区间扫描描线算法算法n循循环遮遮挡:将多:将多边形形进行划分以消除循行划分以消除循环遮遮挡。图图9.5

8、多边形贯穿和循环遮挡的情形多边形贯穿和循环遮挡的情形189.3深度排序算法(画家算法)深度排序算法(画家算法)o算法原理:算法算法原理:算法约定距定距视点近的点近的优先先级高,距高,距视点点远的的优先先级低。生成低。生成图像像时,优先先级低的低的多多边形先画,形先画,优先先级高的多高的多边形后画。形后画。这样,后画的多后画的多边形就会将先画的多形就会将先画的多边形遮形遮挡住,从住,从而达到消而达到消隐的效果。的效果。o算法的关算法的关键是多是多边形排序。形排序。199.4区域区域细分算法分算法o算法原理:考察投影平面上的一算法原理:考察投影平面上的一块区域,如果区域,如果可以很可以很“容易容易

9、”地判断覆盖地判断覆盖该区域中的哪个或区域中的哪个或哪些多哪些多边形是可形是可见的,的,则可按可按这些多些多边形的光形的光照属性和几何位置照属性和几何位置计算确定子区域内各像素的算确定子区域内各像素的显示示颜色;否色;否则就将就将这块区域区域细分分为若干若干较小小的区域,并把上述推断原的区域,并把上述推断原则递归地地应用到每个用到每个较小的区域中去。小的区域中去。20区域区域细分算法分算法o多多边形的分形的分类图图9.6多边形的投影与考察区域之间的关系多边形的投影与考察区域之间的关系21区域区域细分算法分算法o可可见性性测试n所有多所有多边形均是形均是该区域的分离多区域的分离多边形,于是形,于

10、是可直接将可直接将该区域中的所有像素点置区域中的所有像素点置为背景背景颜色。色。n针对该区域,区域,仅存在一个相交多存在一个相交多边形,或形,或仅存在一个被包含多存在一个被包含多边形,或形,或仅存在一个存在一个围绕多多边形。形。则可先将可先将该区域中的所有像素点置区域中的所有像素点置为背景背景颜色,再将相色,再将相应多多边形的形的颜色色值填入填入对应像素点的像素点的帧缓存中。存中。22区域区域细分算法分算法n针对该区域,有多于一个的相交多区域,有多于一个的相交多边形、被形、被包含多包含多边形或形或围绕多多边形,形,则计算所有算所有围绕的、相交的、以及被包含的多的、相交的、以及被包含的多边形在形

11、在该区域区域4个个顶点点处的的z坐坐标,如果存在一个,如果存在一个围绕多多边性,它的性,它的4个个z坐坐标比其它任何多比其它任何多边性的性的z坐坐标都大(最靠近都大(最靠近视点),那么,可将点),那么,可将该区域区域中的所有像素点置中的所有像素点置为该多多边形的形的颜色色值。23区域区域细分算法分算法图图9.7满足测试条件满足测试条件3的两个例子的两个例子249.5光光线投射算法投射算法o算法原理算法原理图图9.8光线投射算法光线投射算法25光光线投射算法投射算法o算法步算法步骤n通通过视点和投影平面(点和投影平面(显示屏幕)上的所有示屏幕)上的所有像素点作一入射像素点作一入射线,形成投影,形

12、成投影线。n将任一投影将任一投影线与与场景中的所有多景中的所有多边形求交。形求交。n若有交点,若有交点,则将所有交点按将所有交点按z值的大小的大小进行行排序,取出最近交点所属多排序,取出最近交点所属多边形的形的颜色;若色;若没有交点,没有交点,则取出背景的取出背景的颜色。色。n将将该射射线穿穿过的像素点置的像素点置为取出的取出的颜色。色。269.6BSP树算法算法o算法原理算法原理图图9.9BSP树算法原理树算法原理279.7多多边形区域排序算法形区域排序算法o算法原理算法原理将多将多边形按深度形按深度值由小到大排序,用前面由小到大排序,用前面的可的可见多多边形去切割位于其后的多形去切割位于其

13、后的多边形,使得形,使得最最终每一个多每一个多边形要么是完全可形要么是完全可见的,要么是的,要么是完全不可完全不可见的。的。289.8OpenGL中的消中的消隐o多多边形剔除:主要用于去除多形剔除:主要用于去除多边形物体本身的形物体本身的不可不可见面,以提高面,以提高图形系形系统的性能。的性能。glEnable(GL_CULL_FACE);glCullFace(mode);29OpenGL中的消中的消隐o深度深度测试:OpenGL中的深度中的深度测试是采用深是采用深度度缓存器算法,消除存器算法,消除场景中的不可景中的不可见面。面。glDepthRange(nearNormDepth,farNormalDepth);glClearDepth(maxDepth);glClear(GL_DEPTH_BUFFER_BIT);glDepthFunc(func);30

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号