版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章面消隐第一页,共三十一页,编辑于2023年,星期四基本概念产生真实感的方法之一:反映三维场景中的相互遮挡关系面消隐与线消隐
表面模型与线框模型 物体表面:平面与曲面 面消隐对象:由平面多边形构成的多面体第二页,共三十一页,编辑于2023年,星期四基本概念消隐算法的分类 1)类:以窗口内的每个像素为处理单元;
for(窗口内的每一个像素) {确定距视点最近的物体,以该物体表面的颜色来显示像素}
2)类:以场景中的物体为处理单元;
for(场景中的每一个物体) {将其与场景中的其它物体比较,确定其表面的可见部分; 显示该物体表面的可见部分; }第三页,共三十一页,编辑于2023年,星期四基本概念算法复杂度假设场景中有k个物体,平均每个物体表面由h个多边形构成,显示区域中有mxn个像素,则:
第一种算法的复杂度为:O(mnkh)第二种算法的复杂度为:O((kh)*(kh))第四页,共三十一页,编辑于2023年,星期四提高消隐算法效率的常见方法
利用连贯性将透视投影转换成平行投影包围盒技术背面剔除空间分割技术物体分层表示第五页,共三十一页,编辑于2023年,星期四提高消隐算法效率的常见方法
1利用连贯性物体连贯性 面的连贯性区域连贯性扫描线的连贯性 深度连贯性第六页,共三十一页,编辑于2023年,星期四提高消隐算法效率的常见方法2将透视投影转换成平行投影消隐与透视关系密切,体现有:
1)消隐必须在投影之前完成; 2)物体之间的遮挡关系与投影中心(视点)的选取有关; 3)物体之间的遮挡关系与投影方式有关第七页,共三十一页,编辑于2023年,星期四提高消隐算法效率的常见方法4包围盒技术
定义:一个形体的包围盒指的是包围它的简单形体。比如,…
该技术常用于:避免盲目的求交测试; 各种物体间的比较等。
一个好的包围盒要具有两个条件: 包围和充分紧密包围着形体; 对其的测试比较简单。
例:使用矩形包围合及长方体包围合来提高算法效率…第八页,共三十一页,编辑于2023年,星期四它的基本思想是,在复杂形体外包一个容易求交的包围盒,例如长方体或球面等。在光线与该复杂物体求交之前,先判其是否与包围盒相交,若与包围盒不相交,说明它与包围盒中的复杂形体也不相交,从而节约了时间。只有当光线与包围盒有交时,才有必要与复杂形体进行求交运算。若原复杂形体由多个部分组成,还可以为每个部分定义一个包围盒,从而形成一棵包围盒树。线面求交时先从树根结点开始判断包围盒,若光线与根结点的包围盒不相交,则与原物体不相交,否则再判断光线与每棵子树的包围盒是否相交,这样可以按层次访问包围盒,免除了许多不必要的求交计算。只有当访问到树的叶子节点时,才需进行必要的求交计算。第九页,共三十一页,编辑于2023年,星期四提高消隐算法效率的常见方法5背面剔除
外法向 外法向与投影方向(观察方向)的夹角 前向面与后向面(背面)
剔除依据:物体表面是封闭的,背面总是被前向面所遮挡,从而始终是不可见的。
第十页,共三十一页,编辑于2023年,星期四提高消隐算法效率的常见方法6空间分割技术
依据:场景中的物体,它们的投影在投影平面上是否有重叠部分?(是否存在相互遮挡的可能?)对于根本不存在相互遮挡关系的物体,应避免这种不必要的测试。
方法:将投影平面上的窗口分成若干小区域;为每个小区域建立相关物体表,表中物体的投影于该区域有相交部分;则在小区域中判断那个物体可见时,只要对该区域的相关物体表中的物体进行比较即可。
第十一页,共三十一页,编辑于2023年,星期四它的基本原理是,将物体所在的空间剖分为若干个小体素,为每个体素建一张表以保存在该体素中或部分在该体素中的物体。若一个物体在几个体素中,则每个体素的表中都要记录该物体。光线射出后,先与其遇到的第一个体素中的所有物体求交,若有交且交点在该体素中,则此体素中的最近交点就是系统中所有物体的最近交点,这样就没有必要与其它体素中的物体求交。若在第一个体素中无交,则再判下一个体素,直至找到交点或穿出剖分空间为止。由于只有射线穿过的体素中的物体才可能参与求交,从而大大地减少了求交次数。空间剖分法特别适合于离散法造型系统中的形体或由多个简单形体构成的复杂形体。这样每个体素中的物体求交速度都很快,而且避免了绝大多数不必要的求交计算。第十二页,共三十一页,编辑于2023年,星期四提高消隐算法效率的常见方法6复杂度比较: 不妨假定每个小区域的相关物体表中平均有h个物体,场景中有k个物体,由于物体在场景中的分布是分散的,显然h远小于k。根据第二种消隐方法所述,其算法复杂度为O(h*h),远小于O(k*k)。第十三页,共三十一页,编辑于2023年,星期四提高消隐算法效率的常见方法7物体分层表示
表示形式:模型变换中的树形表示方式
原理:减少场景中物体的个数,从而降低算法复杂度。
方法:将父节点所代表的物体看成子节点所代表物体的包围盒,当两个父节点之间不存在遮挡关系时,就没有必要对两者的子节点做进一步测试。 父节点之间的遮挡关系可以用它们之间的包围盒进行预测试。第十四页,共三十一页,编辑于2023年,星期四光线投射算法
算法思路:将通过绘图窗口内每一个像素的投影线与场景中的所有多边形求交。如果有交点,用深度值最大的交点(最近的)所属的多边形的颜色显示相应的像素;如果没有交点,说明没有多边形的投影覆盖此像素,用背景色显示即可。第十五页,共三十一页,编辑于2023年,星期四光线投射算法算法描述:for(v=0;v<vmax;v++) for(u=0;u<umax;u++){形成通过像素(u,v)的投影线; for(场景中每一个多边形) 将投影线与多边形求交; if(有交点) 以最近交点所属多边形的颜色显示像素(u,v) else 以背景色显示像素(u,v); }第十六页,共三十一页,编辑于2023年,星期四光线跟踪算法使计算机产生图形的真实感大幅度提高,但卓越的图形绘制效果与昂贵的的计算开销形成了鲜明的对比。为了使这一算法真正实用化,减少运算量势所必行,从此,许多人开始研究光线跟踪的加速方法。光线跟踪中最费时的运算是线面求交,有关资料表明,如果不采取加速措施,线面求交约占整个光线跟踪时间的95%以上。因此,减少运算量的关键在于提高线面求交的速度或减少线面求交的次数。第十七页,共三十一页,编辑于2023年,星期四画家算法由来:画家的作画顺序暗示出所画物体之间的相互遮挡关系算法基本思路:
1)先将场景中的物体按其距观察点的远近进行排序,结果放在一张线性表中;(线性表构造:距观察点远的称优先级低,放在表头;距观察点近的称优先级高,放在表尾。该表称为深度优先级表)
2)然后按照从表头到表尾的顺序逐个绘制物体。第十八页,共三十一页,编辑于2023年,星期四画家算法关键:如何对场景中的物体按深度(远近)排序,建立深度优先级表?一种针对多边形的排序算法如下:
假定在规范化投影坐标系uvn中,投影方向是n轴的负向,因而n坐标大距观察者近。记nmin(P)nmax(P)分别为多边形P的各个顶点n坐标的最小值和最大值,算法步骤如下:第十九页,共三十一页,编辑于2023年,星期四画家算法Step1:将场景中所有多边形存入一个线性表(链表或数组),记为L;Step2:如果L中仅有一个多边形,算法结束;否则根据每个多边形的nmin对它们预排序。不妨假定多边形P落在表首,即nmin(P)为最小。再记Q为L–{P}(表中其余多边形)中任意一个;Step3:判别P,Q之间的关系,有如下二种:
step3.1:对有的Q,有nmax(P)<nmin(Q),则多边形的确距观察点最远,它不可能遮挡别的多边形。令L=L–{P},返回step2;
step3.2:存在某一个多边形Q,使nmax(P)>
nmin(Q),需进一步判别:
step3.2.1若P,Q投影P’,Q’的包围盒不相交,则P,Q在表中的次序不重要,令L=L–{P},返回step2;否则进行下一步。
step3.2.2若P的所有顶点位于Q所在平面的不可见的一侧,则P,Q关系正确,令L=L–{P},返回step2;否则进行下一步。
step3.2.3若Q的所有顶点位于P所在平面的可见的一侧,则P,Q关系正确,令L=L–{P},返回step2;否则进行下一步。
step3.2.4对P,Q投影P’,Q’求交,若P’,Q’不相交,则P,Q在表中的次序不重要,令L=L–{P},返回step2;否则在它们所相交的区域中任取一点,计算P,Q在该点的深度值,如果P的深度小,则P,Q关系正确,令L=L–{P},返回step2;否则交换P,Q,返回step3.第二十页,共三十一页,编辑于2023年,星期四画家算法本算法不能处理的情况: 多边形循环遮挡 多边形相互穿透
解决办法:分割成两个第二十一页,共三十一页,编辑于2023年,星期四Z缓冲器算法由来:帧缓冲器–保存各像素颜色值z缓冲器--保存各像素处物体深度值
z缓冲器中的单元与帧缓冲器中的单元一一对应思路:先将z缓冲器中个单元的初始值置为-1(规范视见体的最小n值)。当要改变某个像素的颜色值时,首先检查当前多边形的深度值是否大于该像素原来的深度值(保存在该像素所对应的Z缓冲器的单元中),如果大于,说明当前多边形更靠近观察点,用它的颜色替换像素原来的颜色;否则说明在当前像素处,当前多边形被前面所绘制的多边形遮挡了,是不可见的,像素的颜色值不改变。
第二十二页,共三十一页,编辑于2023年,星期四Z缓冲器算法算法描述:
for(v=0;v<vmax;v++) for(u=0;u<umax;u++) {将帧缓冲器的第(u,v)单元置为背景色;将Z缓冲器的第(u,v)单元置为-1(可见的最小深度值)}for(每个多边形) for(多边形在投影平面上的投影区域内的每个像素(u,v))
{计算多边形在当前像素(u,v)处的深度值d; if(d>Z缓冲器的第(u,v)单元的值) {置帧缓冲器的第(u,v)单元值为当前多边形颜色; 置Z缓冲器的第(u,v)单元值为d;}}第二十三页,共三十一页,编辑于2023年,星期四Z缓冲器算法优点:简单稳定,利于硬件实现缺点:1)需要一个额外的Z缓冲器 2)在每个多边形占据的每个像素处都要计算深度值,计算量大第二十四页,共三十一页,编辑于2023年,星期四扫描线Z缓冲器算法由来:Z缓冲器算法中所需要的Z缓冲器容量较大,为克服这个缺点可以将整个绘图区域分割成若干个小区域,然后一个区域一个区域地显示,这样Z缓冲器的单元数只要等于一个区域内像素的个数就可以了。如果将小区域取成屏幕上的扫描线,就得到扫描线Z缓冲器算法。第二十五页,共三十一页,编辑于2023年,星期四扫描线Z缓冲器算法算法描述for(v=0;v<vmax;v++){ for(u=0;u<umax;u++)//对绘图窗的每一条扫描线初始化 {将帧缓冲器的第(u,v)单元置为背景色;将Z缓冲器的第u单元置为-1(可见的最小深度值)}for(每个多边形) {求出多边形在投影平面上的投影与当前扫描线的相交区间 for(该区间内的每个像素(u,v))
{计算多边形在该像素处的深度值d; if(d>Z缓冲器的第u单元的值) {置帧缓冲器的第(u,v)单元值为当前多边形颜色; 置Z缓冲器的第u单元值为d;} }}}第二十六页,共三十一页,编辑于2023年,星期四区域子分算法由来:Z缓冲器算法与扫描线Z缓冲器算法中都是将像素孤立来考虑,未利用相邻像素之间存在的属性的连贯性,即区域的连贯性,所以算法效率不高。实际上,可见多边形至少覆盖了绘图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建福州金山工业园区投资管理有限公司招聘1人考试参考题库附答案
- 儿科护理与家庭支持
- 绍兴台门课件
- 结核性脑膜炎的护理新进展与展望
- 贵阳版秋九年级物理温度物态变化熔化凝固教新版沪科版教案
- 多糖结构教案
- 2026年证券分析师之发布证券研究报告业务考试题库300道及答案(名校卷)
- 六年级下册美术教案我设计的服装人教版
- 25《忆读书》教学课件
- 水钻灌注桩施工方案试卷教案
- 非开挖顶管合同范本
- 2026年公安机关理论考试题库300道(培优a卷)
- 专家讲座的协议书
- 雨课堂学堂在线学堂云民族学导论专题中央民族大学单元测试考核答案
- 桥机安装拆卸监理实施细则
- 志愿者服务品牌建设方案
- 清洁清扫项目投标书
- 2025年个人信息保护专项工作总结与整改报告
- 传递正能量做好员工
- 2025北京市科学技术研究院及所属事业单位第三批招聘37人备考题库附答案
- 网优项目年终总结
评论
0/150
提交评论