第6章消影及其算法
- 格式:ppt
- 大小:929.00 KB
- 文档页数:47
计算机图形学——隐藏线和隐藏⾯的消除(消隐算法)⼀、概述由于投影变换失去了深度信息,往往导致图形的⼆义性。
要消除⼆义性,就必须在绘制时消除被遮挡的不可见的线或⾯,习惯上称作消除隐藏线和隐藏⾯(或可见线判定、可见⾯判定),或简称为消隐。
经过消隐得到的投影图称为物体的真实感图形。
下⾯这个图就很好体现了这种⼆义性。
消隐后的效果图:消隐算法的分类所有隐藏⾯消隐算法必须确定:在沿透视投影的投影中⼼或沿平⾏投影的投影⽅向看过去哪些边或⾯是可见的两种基本算法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)(10,3,20),(20,28,20),(22,28,20),(22,3,20)(2)(5,12,10),(5,20,10),(27,20,10),(27,12,20)(3)(15,15,25),(25,25,5),(30,10,5)。
2、将上题所给的多边形,利用OpenGL函数,绘制其平面,并试添加灯光与纹理效果。
3、*综合运用图形学知识,自行设计一个三维图形,实现消隐以及灯光、纹理等。
三、实验过程深度缓存(Z-buffer)算法帧缓冲器–保存各像素颜色值(CB)z缓冲器 --保存各像素处物体深度值(ZB)z缓冲器中的单元与帧缓冲器中的单元一一对应将z缓冲器中各单元的初始值置为-1(规范视见体的最小n 值)。
当要改变某个像素的颜色值时,首先检查当前多边形的深度值是否大于该像素原来的深度值(保存在该像素所对应的Z缓冲器的单元中),如果大于,说明当前多边形更靠近观察点,用它的颜色替换像素原来的颜色;否则说明在当前像素处,当前多边形被前面所绘制的多边形遮挡了,是不可见的,像素的颜色值不改变。
Z-buffer算法的流程:帧缓冲区初置背景色;z缓冲区个元素初始值置为最小z值(离观察点最远);For(场景中的每个多边形){扫描转换该多边形;For(多边形所覆盖的每一像素点(x,y)){计算多边形在该像素的深度值z(x,y);If(z(x,y)>Zbuffer中对应此像素点(x,y)的z值){把多边形在(x,y)处的深度值z(x,y)存入Z_buffer中的(x,y)处;把多边形在(x,y)处的亮度值存入F_buffer中的(x,y)处;}}}当所有的多边形都处理完之后,帧缓冲器中的内容即为消除隐藏面后的图像。
本科毕业设计题目:计算机图形学消隐算法的分析与实现姓名院系信息科学与工程学院专业计算机科学与技术年级学号指导教师2011 年5月10 日毕业设计选题报告毕业设计任务下达书学院信息科学与工程学院专业计算机科学与技术学号****** 姓名*****一、毕业设计题目计算机图形学消隐算法的分析与实现二、主要内容本设计是在对凸多面体的消隐算法、以及Z—Buffer算法进行系统分析以后,应用Visual C++设计程序语言,从而实现对三维立体图形的消隐处理,以得到物体的只是图形。
三、具体要求(1)查找相关资料,理解Visual C++及其图形函数的理论知识;(2)根据设计内容主动分析整体并划分设计模块;(3)根据划分的设计模块独立完成实现各个功能的具体代码;(4)高度重视论文的撰写并调试实现整体功能,主动和指导老师沟通;(5)认真听取指导老师的意见,遵循相关的规定,以达到设计最终效果。
四、主要参考文献[1]陈元琰.张晓竞计算机图形学实用技术[M]. 北京:科学出版社,2000[2]范幸义. 计算机图形学(第三版)[M]. 重庆:重庆大学出版社,2008.2.[3]张全伙,张剑达.计算机图形学[M].北京:机械工业出版社,2003.8.[4](美)Peter Shirley计算机图形学(第二版)[M].北京:人民邮电出版社,2007.6.五、进程安排六、毕业设计任务下达书于年月日发出。
毕业设计应于年月日前完成后交指导教师,由指导教师评阅后提交毕业设计答辩委员会。
七、毕业设计任务下达书一式两份,一份给学生,一份留学院(系)存档。
指导教师:签发于20 年月日分管院长:签发于20 年月日毕业设计开题报告院(系):信息科学与工程学院学号:***注:1、论文(设计)总成绩=指导教师评定成绩(50%)+评阅人评定成绩(20%)+答辩成绩(30%)2、将总成绩由百分制转换为五级制,填入本表相应位置。
目录1. 前言 (3)2. 开发环境和工具 (4)3. 消隐算法的描述 (5)3.1消隐算法的提出 (5)3.2消隐算法的分类 (7)4. 消隐算法的数学知识 (8)4.1向量的叉积 (8)4.2线性代数 (8)4.2.1行列式 (8)4.2.2矩阵 (9)4.3三维坐标与二维坐标的转换 (10)5.几种常见的消隐算法分析与比较 (11)5.1凸多面体消隐处理 (11)5.2隐藏面的消除 (13)5.2.2 画家算法 (16)5.2.3 Z-buffer消隐算法 (19)5.3几种消隐算法的比较 (20)6. 结束语 (21)参考文献 (21)致谢 (22)附录:部分模块代码 (22)计算机图形学消隐算法的分析与实现摘要:用计算机生成具有真实感的三维物体图形,是计算机图形学的一个重要研究内容,而要实现这一过程就不得不提到消隐算法。