4.2mooc-Z-Buffer消隐算法
- 格式:pdf
- 大小:163.66 KB
- 文档页数:23
一、简述消隐的深度缓存算法及其特点。
深度缓存算法又称Z-buffer算法。
算法首先设置帧缓冲器保存各像素颜色值(CB),并设定z缓冲器用以保存各像素处物体深度值(ZB)。
z缓冲器中的单元与帧缓冲器中的单元一一对应。
算法思路:初始时将CB中每个单元设定为背景色,ZB中每个单元的初始值置为+Zmax (大于场景中的所有Z值)。
当要改变某个像素的颜色值时,首先检查当前多边形的深度值是否小于该像素原来的深度值(保存在该像素所对应的Z缓冲器的单元中),如果小于,说明当前多边形更靠近观察点,用它的颜色替换像素原来的颜色;否则说明在当前像素处,当前多边形被前面所绘制的多边形遮挡了,是不可见的,像素的颜色值不改变。
Z-buffer算法的步骤如下:⑴初始化ZB和CB,使得ZB(i, j)=Z max,CB(i, j)=背景色。
其中,i=1, 2, , m,j=1, 2, , n。
⑵对多边形α,计算它在点(i, j)处的深度值z i, j。
⑶若z ij<ZB(i, j),则ZB(i, j)=z ij,CB(i, j)=多边形α的颜色。
⑷对每个多边形重复⑵、⑶两步。
最后,在CB中存放的就是消隐后的图形。
这个算法的关键在第⑵步,要尽快判断出哪些点落在一个多边形内,并尽快求出一个点的深度值。
优点:原理简单,便于硬件实现。
缺点:(1):ZB和CB两个缓存数组占用的存储单元太多,需要有一个较大容量的Z—Buffer 。
(2):在每个多边形占据的每个像素处都要计算深度值,计算量大二、中心投影法计算投影面上坐标。
(透视投影变换)三、写出Phong光照模型(简单光照模型)并解释模型中各个参数的含义。
E P s=R P⋅cos i⋅I P s+W P(i)cos n s⋅I P sE p s:P点反射的直射光线I P s的光强R P:P点的漫反射系数i:P点的法向量N与入射光方向L的夹角I p s:入射的直射光线的强度W P(i):P点的镜面反射系数(入射角i的函数)n:控制高光的聚散,它和P点的材料有关。
计算机图形学——隐藏线和隐藏⾯的消除(消隐算法)⼀、概述由于投影变换失去了深度信息,往往导致图形的⼆义性。
要消除⼆义性,就必须在绘制时消除被遮挡的不可见的线或⾯,习惯上称作消除隐藏线和隐藏⾯(或可见线判定、可见⾯判定),或简称为消隐。
经过消隐得到的投影图称为物体的真实感图形。
下⾯这个图就很好体现了这种⼆义性。
消隐后的效果图:消隐算法的分类所有隐藏⾯消隐算法必须确定:在沿透视投影的投影中⼼或沿平⾏投影的投影⽅向看过去哪些边或⾯是可见的两种基本算法1、以构成图像的每⼀个像素为处理单元,对场景中的所有表⾯,确定相对于观察点是可见的表⾯,⽤该表⾯的颜⾊填充该像素.适于⾯消隐。
算法步骤:a.在和投影点到像素连线相交的表⾯中,找到离观察点最近的表⾯;b.⽤该表⾯上交点处的颜⾊填充该像素;2、以三维场景中的物体对象为处理单元,在所有对象之间进⾏⽐较,除去完全不可见的物体和物体上不可见的部分.适于⾯消隐也适于线消隐。
算法步骤:a.判定场景中的所有可见表⾯;b.⽤可见表⾯的颜⾊填充相应的像素以构成图形;提醒注意1.假定构成物体的⾯不能相互贯穿,也不能有循环遮挡的情况。
2.假定投影平⾯是oxy平⾯,投影⽅向为z轴的负⽅向。
如果构成物体的⾯不满⾜该假定,可以把它们剖分成互不贯穿和不循环遮挡的情况。
例如,⽤图b中的虚线便可把原来循环遮挡的三个平⾯,分割成不存在循环遮挡的四个⾯。
⼆、可见⾯判断的有效技术1、边界盒指能够包含该物体的⼀个⼏何形状(如矩形/圆/长⽅体等),该形状有较简单的边界。
边界盒技术⽤于判断两条直线是否相交。
进⼀步简化判断2、后向⾯消除(Back-face Removal)思路:把显然不可见的⾯去掉,减少消隐过程中的直线求交数⽬如何判断:根据定义寻找外(或内)法向,若外法向背离观察者,或内法向指向观察者,则该⾯为后向⾯。
注意:如果多边形是凸的,则可只取⼀个三⾓形计算有向⾯积sp。
如果多边形不是凸的,只取⼀个三⾓形计算有向⾯积sp可能会出现错误,即F所在的⾯为前向⾯也可能出现sp≥0的情况,因此,需按上式计算多边形F的有向⾯积。
z缓冲区消隐算法的改进
生滨;李东;徐学敢
【期刊名称】《计算机工程与应用》
【年(卷),期】2001(037)023
【摘要】z缓冲区算法是一种比较简单的消隐算法,但算法需要占用相当大的系统资源,且计算量很大.扫描线算法是对z缓冲区算法的改进,该算法大大减少了对系统资源的占用,同时提高了算法的效率.
【总页数】3页(P114-116)
【作者】生滨;李东;徐学敢
【作者单位】哈尔滨工业大学计算机系,;哈尔滨工业大学计算机系,;广东省汕尾港监局船检科,
【正文语种】中文
【中图分类】TP301.6
【相关文献】
1.改进的基于z缓冲器和扫描线算法的消隐技术 [J], 沈润泉
2.Z缓冲器消隐算法的改进 [J], 岳志强;柴炜嘉;齐进
3.凸多面体线消隐算法的研究与改进 [J], 宋人杰;张加玲;李晓栋
4.改进消隐算法下的单体组合模型 [J], 于舜;张铁;刘伟
5.BSP树消隐算法的改进研究 [J], 赵祥好
因版权原因,仅展示原文概要,查看原文内容请购买。
枣庄学院信息科学与工程学院课程设计任务书题目:Z-Buffer隐面算法的实现姓名:秦云学号:201012110128专业班级:计算机科学与技术、2010级本1班课程:计算机图形学指导教师:燕孝飞职称:讲师完成时间:2012年12 月----2013年1 月枣庄学院信息科学与工程学院制2012年12 月30日课程设计任务书及成绩评定目录第1章引言 (1)第2章计算机图形学的发展历史 (2)2.1 智能CAD (2)2.2计算机美术与设计 (2)2.2.1 计算机美术的发展 (2)2.3计算机动画艺术 (3)2.3.1历史的回顾 (3)2.4科学计算可视化 (4)2.5虚拟现实 (4)第3章计算机图形学的研究方向 (6)第4章 Z-Buffer隐面算法的相关原理 (7)4.1 Z-Buffer隐面算法简介 (7)4.2 Z-Buffer隐面算法程序 (7)第5章系统设计的相关代码 (8)5.1坐标设置函数的相应代码 (8)5.2旋转角度函数相应代码 (8)5.3多边形填充 (9)第6章系统的运行效果 (12)6.1运行主界面 (12)6.2不同方向键的运行效果 (13)第7章总结 (16)第1章引言计算机图形学一个主要的目的就是要利用计算机产生令人赏心悦目的真实感图形。
为此,必须建立图形所描述的场景的几何表示,再用某种光照模型,计算在假想的光源、纹理、材质属性下的光照明效果。
所以计算机图形学与另一门学科计算机辅助设计有着密切的关系。
事实上,图形学也把可以表示几何场景的曲线曲面造型技术和实体造型技术作为其主要的研究内容。
同时,真实感图形计算的结果是以数字图像的方式提供的,计算机图形学也就和图像处理有着密切的关系。
真实感图形绘制过程中,由于投影变换失去了深度信息,往往导致图形的二义性。
要消除这类二义性,就必须在绘制时消除被遮挡的不可见的线或面,习惯上称之为消除隐藏线和隐藏面,或简称为消隐,经过消隐得到的投影图称为物体的真实图形。
常用的消隐算法及总结数学092邹继瑶 090064摘要:用计算机生成三维物体的真实图形是计算机图形学研究的重要内容。
真实图形在仿真模拟、几何造型、广告影视、指挥控制和科学计算的可视化等许多领域都有广泛应用。
经过消隐得到的投影图称为物体的真实图形。
较常用的消隐算法有画家算法、Z-Buffer算法及其它一些改进算法。
消隐算法从算法基本思想、算法描述和算法步骤等方面对画家算法、Z-Buffer算法和其它改进算法进行了分析,并得出了它们相关的特点。
关键词:计算机图形学消隐景物空间消隐图像空间消隐算法引言:近年来,产生真实的虚拟环境是计算机图形学孜孜以求的目标。
在虚拟对象或场景的创建中要用到许多综合处理过程,每一种都非常令人感兴趣也非常重要。
计算机辅助设计、科学可视化、模拟训练、医疗成像、娱乐、广告等等,所有的这些,都要依赖于当今最前沿的计算机图形技术。
伴随着计算机硬件、软件的飞速发展,计算机图形学技术也得到了质的飞跃。
特别是面向对象技术和多媒体技术取得的成功,使得图形学成为计算机软件业中一个重要的分支。
而程序设计方法、数据库系统和人工智能等新技术渗入到计算机图形学领域,又为计算机图形学提供了更加宽阔的发展空间和强劲动力。
计算机图形学是研究通过计算机将数据转换成图形,并在专用显示设备上显示的原理、方法和技术的学科。
主要介绍了计算机图形系统的基本知识,图形生成与显示的算法,图形的表示与图形的数据结构,图形的几何变换与投影变换,图形的裁剪技术,图形消隐处理,真实感图形的生成等内容。
面消隐作为图形学中一个分支是本文的一个重要的研究内容。
一.消隐的基本概念由于屏幕上的一些图元被另一些图元挡住所造成的。
例如,当需要描绘一个由多边形面组成的三维物体时,那么它的一部分必然要被挡住,要在屏幕上显示的必须是可见的东西。
打个比方,对于一个立方体,无论从哪个方向进行透视处理,最多只能看到其中的三个面。
这样,就要想出一种方法来决定哪些面是所能看到的。
二、区间扫描线算法前面介绍了经典的z-buffer算法,思想是开一个和帧缓存一样大小的存储空间,利用空间上的牺牲换取算法上的简洁还介绍了只开一个缓存变量的z-buffer算法,是把问题转化成判别点在多边形内,通过把空间多边形投影到屏幕上,判别该像素是否在多边形内下面介绍区间扫描线算法。
该算法放弃了z-buffer的思想,是一个新的算法,这个算法被认为是消隐算法中最快的因为不管是哪一种z-buffer算法,都是在像素级上处理问题,要进行消隐,每个像素都要进行计算判别,甚至一个像素要进行多次(一个像素可能会被多个多边形覆盖)F 2F 31a 1a 2a 3a 4a 5a 6a 7a 8扫描线的交点把这条扫描线分成了若干个区间,每个区间上必然是同样一种颜色对于有重合的区间,如a6a7这个区间,要么显示F2的颜 色,要么显示F3的颜色,不会出现颜色的跳跃如果把扫描线和多边形的这些交点都求出来,对每个区间,只要判断一个像素的要画什么颜色,那么整个区间的颜色都解决了,这就是区间扫描线算法的主要思想F 2F 31a 1a 2a 3a 4a 5a 6a 7a 8算法的优点:将象素计算改为逐段计算,效率大大提高!如何实现这个算法?首先要有投影多边形,然后求交点,然后交点进行排序排序F 2F 3F 1a 1a 2a 3a 4a 5a 6a 7a 8排序的结果就分成了一个个区间,然后在每个区间找当中的一个像素(i,j),在(i,j)处计算每个相关面的z值,对相关深度值z进行比较,其中最大的一个就表示是可见的。
整个这段区间就画这个z值最大面的颜色如何确定小区间的颜色?F 2F 3F 1a 1a 2a 3a 4a 5a 6a 7a 8(1)小区间上没有任何多边形,如[a4,a5],用背景色显示F 2F 3F 1a 1a 2a 3a 4a 5a 6a 7a 8(2)小区间只有一个多边形,如[a1,a2],显示该多边形的颜色(3)小区间上存在两个或两个以上的多边,比如[a6,a7],必须通过深度测试判断哪个多边形可见这个算法存在几个问题:利用增量算法简化求交!1、真的去求交点吗?2、每段区间上要求z值最大的面,这就存在一个问题。