(计算机软件与理论专业论文)实时阴影绘制算法的研究.pdf_第1页
(计算机软件与理论专业论文)实时阴影绘制算法的研究.pdf_第2页
(计算机软件与理论专业论文)实时阴影绘制算法的研究.pdf_第3页
(计算机软件与理论专业论文)实时阴影绘制算法的研究.pdf_第4页
(计算机软件与理论专业论文)实时阴影绘制算法的研究.pdf_第5页
已阅读5页,还剩57页未读 继续免费阅读

(计算机软件与理论专业论文)实时阴影绘制算法的研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

山东大学硕士学位论文 摘要 现代图形技术的发展极大的推进了计算机实时渲染技术的应用,其主要的应 用包括交互式的3 d 图形建模程序,虚拟现实及三维仿真系统,计算机动画,游 戏等【5 1 】。对于图形的显示质量,除了要求尽可能快的显示更多的三角面片外,还 有更高的要求。图形显示卡及g p u 技术的迅速发展,使得一些新的渲染效果,如 反走样,运动模糊,实时阴影技术得到了广泛应用。其中,阴影效果在生成真实 感图像以及判断物体相对位置方面扮演了重要的角色,许多成熟的阴影生成算法 已成功地应用在游戏,动画以及虚拟现实系统中,然而在动态场景中,实时地绘 制真实感的软阴影仍然是一个巨大的挑战。 阴影算法用于判断光源能够看到的表面,那些不能被光源看到的表面将处于 阴影之中,而那些能被光源看到的表面将处于阴影之外。由于物体间的相互遮挡 形成了阴影,阴影区域的形状以及大小和物体的形状,相互间位置关系,光源的 位置和形状大小都有密切的关系。因此,对于一个三维的场景,阴影具有很强的 立体表现能力:首先阴影可以为三维场景中的物体位置提供视觉线索,使得整个 场景更易于理解,其次,阴影直接提高了三维场景的真实感,并且使得创建复杂 的光照效果成为可能。现代图形硬件的不断发展,使得新的阴影生成算法的提出 以及实现成为可能,但是目前的大多数算法或者是保证了实时渲染的帧率要求, 或者是实现了精确的阴影效果这两个方面,还没有一个算法在保证了生成的阴影 在物理上的精确性的同时,达到实时绘制的效果。我们的文章对各种算法进行了 全面的概括,讨论了这些算法的优缺点,局限性,以及质量和复杂度的差别,并 且提出了一种新的实时软阴影的绘制方法,该方法不但可以精确的计算阴影的边 界,还可以达到实时显示的效果,可以应付大多数对实时性要求较高的系统。最 后,本文对实时软阴影的发展方向进行了展望,并对实时软阴影的发展趋势提出 了一些值得深入研究的方向。 本文主要研究内容和贡献有以下四个方面: 1 给出了一种计算凸多面体的阴影的快速算法。 2 给出了一种点光源的快速精确阴影生成算法。 3 给出了一种球形光源的软阴影生成算法,该算法不但能够精确的计算本 山东大学硕士学位论文 影和半影的边界,而且达到了实时绘制的效果。 4 针对目前日益流行的点云模型,本文给出了点云模型的快速阴影生成 算法。 关键词:硬阴影;实时绘制;软阴影;球形光源;点云模型 i i 山东大学硕士学位论文 a b s t r a c t r e c e n ta d v a n c e si ng r a p h i c st e c h n o l o g yh a v ep r o d u c e das h i f ti nf o c u sf o rr e a l t i m er e n d e r i n ga p p l i c a t i o n ,w h i c hi n c l u d e si n t e r a c t i v e3 dg r a p h i c sm o d e l i n g p r o g r a m s ,v i r t u a lr e a l i t ya n d3 ds i m u l a t i o ns y s t e m ,c o m p u t e ra n i m a t i o n ,g a m e sa n d s oo n r e g a r d i n gg r a p h i c sd e m o n s t r a t i o nq u a l i t y , ah i g h e rr e q u e s tw a sp u tf o r w a r di n a d d i t i o nt od i s p l a ym o r et r i a n g l e sa sq u i c k l ya sp o s s i b l e t h er a p i d l ye v o l u t i o no f g r a p h i c sd i s p l a yc a r da n dg p ut e c h n o l o g ym a k em a n yn e wr e n d e r i n ge f f e c tw e r e w i d e s p r e a du s e d ,s u c ha sa n t i - a l i a s i n g ,m o t i o nb l u ra n dr e a lt i m es h a d o wt e c h n o l o g y t h es h a d o we f f e c th a sp l a ya ni m p o r t a n tr o l ei nt h eg e n e r a t i o no fp h o t o r e a l i s t i c i m a g ea sw e l la st h ej u d g m e n to fo b j e c t sr e l a t e dp o s i t i o n ,a l t h o u g hm a n ym a t u r e s h a d o wg e n e r a t i o na l g o r i t h m sh a v eb e e n u s e ds u c c e s s f u l l yi nc o m p u t e rg a m e s , a n i m a t i o na n dv i r t u a lr e a l i t ys y s t e m s ,i nt h ed y n a m i cs c e n e s ,r e n d i n gar e a l i s t i cs o f t s h a d o wi nr e a lt i m ei sah u g ec h a l l e n g e s h a d o wa l g o r i t h m sc a nb eu s e dt od e t e r m i n et h es u r f a c e sw h i c hc a l lb es e e nf r o m t h el i g h ts o u r c e ,t h es u r f a c e sw h i c ha r en o tv i s i b l et ot h el i g h ts o u r c ea r eo u to f s h a d o w , w h i l et h es u r f a c e sw h i c ha r ev i s i b l et ot h el i g h ts o u r c ea r ei nt h es h a d o w b e c a u s eo ft h em u t u a lo c c l u d er i n go fd i f f e r e n to b je c t s ,t h es h a d o wr e g i o n ss h a p e a n ds i z ea r ed e p e n d e do no b j e c t ss h a p e ,m u t u a lr e l a t i o no fp o s i t i o n ,t h es h a p ea n ds i z e o ft h el i g h ts o u r c e t oa3 ds c e n e ,s h a d o wh a v eg r e a tt h r e e d i m e n s i o np e r f o r m a n c e a b i l i t y f i r s t ,t h e yh e l pu n d e r s t a n dr e l a t i v eo b j e c tp l a c e m e n t i na3 ds c e n eb y p r o v i d i n gv i s u a lc u e s s e c o n d ,t h e yd r a m a t i c a l l yi m p r o v ei m a g er e a l i s ma n da l l o wt h e c r e a t i o no fc o m p l e xl i g h t i n ga m b i a n c e t h er a p i d l yd e v e l o p m e n to fm o d e mh a r d w a r e m a k et h eb r i n gu pa n dr e a l i z a t i o no fn e ws h a d o wg e n e r a t i o na l g o r i t h mp o s s i b l e b u t m o s to ft h ep o p u l a ra l g o r i t h m so rs a t i s f yt h er e n d e r i n gr a t eo fr e a lt i m e ,o r c o m p l e m e n tp r e c i s es h a d o we f f e c t t h e r ea r en os o f ts h a d o wa l g o r i t h mc a ng e n e r a t e p r e c i s es h a d o we f f e c tw h i l er e n d e r i n gi nr e a lt i m e o u rp a p e rc o n c l u d e sm o s to f t h e d i f f e r e n ta l g o r i t h m sa n dd i s c u s s e st h ea d v a n t a g e sa n dd i s a d v a n t a g e s ,l i m i t a t i o n , q u a l i t y , a n dt h eo r d e ro ft h ec o m p l e x i t y , t h e np u tf o r w a r dan e wr e a l t i m es o f t s h a d o wr e n d e r i n ga l g o r i t h m , i tc a l ln o to n l yc o m p u t et h ep r e c i s eb o u n d a r yo ft h e 山东大学硕士学位论文 s h a d o w , b u ta l s or e n d e r i n gt h es h a d o wi n r e a lt i m e ,i tc a nd e a l 埘廿1m o s to ft h e s y s t e m sw h i c hn e e dh i g hr e a lt i m ep e r f o r m a n c e a tl a s t ,w ep r o s p e c tt h ed e v e l o p m e n t d i r e c t i o no fr e a lt i m es o f ts h a d o w ,t h e nb r i n gu ps o m ed i r e c t i o n sw h i c hw o r t h yt o r e s e a r c ho fr e a lt i m es o f ts h a d o w t h ec o n t e n ta n dc o n t r i b u t i o no fo u rr e s e a r c hc a nb es u m m a r i z e di n t ot h e f o l l o w i n gf o u rp h a s e s : 1 w ep u tf o r w a r dan e w a l g o r i t h mt oc o m p u t es o f ts h a d o wo fc o n v e xp o l y h e d r a r a p i d l y 2 w ep u tf o r w a r dar a p i d l ya n dp r e c i s e l ys h a d o wa l g o r i t h mf o rp o i n tl i g h ts o u r c e 3 w ep u tf o r w a r dan e ws o f ts h a d o wa l g o r i t h mf o rs p h e r el i g h ts o u r c ew h i c hc a n n o to n l yc o m p u t ep r e c i s eb o u n d a r yo fs h a d o wb u ta l s oc a ns a t i s f yt h er e q u e s to fr e a l t i m er e n d e r i n g 4 i nt h ev i e wo ft h ep o i n tc l o u dm o d e lw h i c hb em o r ea n dm o r ep o p u l a r , w ef i r s t p u tf o r w a r dae f f i e n c ya l g o r i t h mt oc o m p u t e rt h es h a d o wf o rp o i n tc l o u dm o d e l k e yw o r d s :h a r ds h a d o w ;r e a lt i m er e n d e r i n g ;s o f ts h a d o w ;s p h e r el i g h ts o u r c e ; p o i n tc l o u dm o d e l i v 原创性声明和关于论文使用授权的说明 原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下, 独立进行研究所取得的成果。除文中已经注明引用的内容外,本 论文不包含任何其他个人或集体已经发表或撰写过的科研成果。 对本文的研究做出重要贡献的个人和集体,均已在文中以明确方 式标明。本声明的法律责任由本人承担。 论文作者签名:蛮承日期:丝墨! 垒篁 关于学位论文使用授权的声明 本人完全了解山东大学有关保留、使用学位论文的规定,同 意学校保留或向国家有关部门或机构送交论文的复印件和电子 版,允许论文被查阅和借阅;本人授权山东大学可以将本学位论 文的全部或部分内容编入有关数据库进行检索,可以采用影印、 缩印或其他复制手段保存论文和汇编本学位论文。 论嚣? 篓= 麓碰论文作者签名:垄匿导师签名:缁么生日 期: 动伊g 红g - 山东大学硕士学位论文 1 1 研究意义 第一章绪论 现实世界中,阴影是无处不在的。阴影提供了光源对物体的照射信息,增加 了计算机虚拟场景的真实感,在对图像质量要求较高的系统中,高质量的阴影效 果是必不可少的。阴影作为三维场景中的重要因素,可以为场景提供许多重要空 间几何信息1 9 1 :首先阴影有助于理解物体间的相互位置关系和大小,利用投射阴 影可以决定物体在空间中的位置:其次,阴影有助于理解复杂接收体的几何信息, 如图1 1 ,在图( a ) 中无法判断虚拟小人距离地面有多远及接收体的形状,而在( b ) 中由于加入了阴影,可以清楚的判断接受体的几何性质及小人与地面的距离关 系;最后,阴影有助于理解复杂遮挡物的几何形状,如图1 1 ( c ) 中所示,可以非 常清楚的看出虚拟小人手中拿的是个圆环。其次,阴影提高了图像的真实感,如 图1 2 所示,图( a ) 中的图像显得很单调,没有真实感,而在图( b ) 中,图像显得很 ( a )( b )( c ) 图1 1 阴影为场景提供了丰富的空间几何信息 ( a )( b ) 【j ! 东大学硕士学位论文 图1 - 2 阴影提高了图像的真实感 丰满,富有立体感,真实感很强烈。由此可见生成真实感强的阴影方法对于三维 虚拟场景具有至关重要的作用。 在计算机图形领域中,越来越多的研究人员加入了对阴影算法的研究,而其 中又以对实时软阴影技术的研究最为热门,各硬件厂商也纷纷在其图形显示卡中 加入了对阴影生成的直接支持。如n v i d i a 公司在他们的产品中提供了o p e n g l 对阴影的扩展:s g i xs h a d o w s e i s g i xd e p t h 些较新的图形引擎,如c 鼢但n i g 眦以及大名鼎鼎的i 脓e a l 引擎中,都提供了对 动态阴影的支持,以生成更为生动,逼真的场景。这些系统在极大的改善了生成 图像的质量的同时,也提高了游戏的可玩性。其动态阴影功能也成为一大卖点。 长久以来人们关注的重点大多集中在场景中物体的几何表示上,而忽略了它 们的代数表示法。代数几何学主要关注物体的几何信息和直观表示,它为我们解 决计算机图形学中的实际问题提供了大量功能强大的工具和算法。本文主要使用 对偶变换来解决阴影体的计算问题。我们注意到,在对三维虚拟场景进行建模时, 场景中的物体虽然大部分是由曲面围成的,但在计算阴影的时候却要对模型进行 三角化,转化成三角网格处理,这个过程必然要对视觉精确度和速度进行折中, 影响了算法的效率。本文的算法直接对曲面进行操作,避免了三角化的过程,从 而大大提高了阴影算法的效率。 本文主要对实时的软阴影生成算法进行研究,在阴影体算法的基础上,利用 代数几何学的知识解决阴影体的计算问题,用代数的方法来解决计算机图形学中 遇到的实际问题,并收到了良好的效果。 1 2 相关研究介绍 近年来,随着显卡技术的不断发展,以及各种阴影算法研究的深入,各种阴 影生成算法曾出不穷,以阴影体算法,阴影映射算法,以及全局光照算法为主要 研究方向,以此为基础的文章在世界图形学顶级年会s i g g r a p h ,以及e u r o g r a p h i c s 会议中几乎年年都有论文发表,阴影的研究方向也从静态场景的硬阴影 转到了动态场景中高质量,实时性的软阴影领域,并产生了许多新的,高效的算 法。 2 山东大学硕士学位论文 阴影体算法一直是一个长盛不衰的算法,这一方面尤以瑞典l u n d 大学一个研 究组贡献最大,发表了一系列阴影体算法方面的论文,并分别用软件方法以及硬 件加速的方法加以实现。最著名的当属t o m a sa k e n i n e - m o l l e r 年口u l f a s s a r s s o n 提出 的半影楔算法1 0 】【1 4 】,它通过用一种称为半影楔的新原语代替原来算法中的阴影 四边形,从而扩展了标准的阴影体算法,较好的模拟出了软阴影的效果,并且通 过硬件加速的方法加以实现。 t i m oa i l a 等人提出了一种层次化的阴影体算法【2 3 1 ,通过对渲染空间进行层 次划分提高了算法的效率:i v i c a k o l i 等人针对复杂物体以及可变形物体提出了一 种使用模板缓存的阴影体算法【2 5 】;s a m u e lh o m u s 等人对传统的z p a s s 算法进行了 改进,提出- t z p + ( z p a s sp l u s ) 算法【3 们,修正了传统z p a s s 算法不足:s a m u l il a i n e 等人提出一种称为分离平面的阴影体算法【2 6 1 ,通过选择分离平面的位置,灵活的 在z p 觚s 和z f a i l 算法之间进行切换,大大提高了阴影体算法的效率。 阴影映射算法也是近年来的一个研究热点,阴影映射的算法可以解决阴影体 算法资源消耗过大的问题,h a i n e s 提出了一种通过将硬阴影渲染到纹理图中,然 后沿阴影轮廓产生近似半影的方法【14 1 。这种方法在轮廓顶点处绘制圆锥体,然后 在外部切线的绘制片元处将锥体连接起来。对这些条带平滑的着色后投影到接收 体表面产生平滑的软阴影。 但是阴影映射算法对于动态光源,要重新生成阴影图,这使得在动态光源的 场景中该算法很难达到实时的效果【4 9 1 ,同时,该算法走样问题严重,这几乎成为 该算法的致命缺陷,针对阴影映射算法的走样问题,香港中文大学的f a nz h a n g 等人提出了g l p r 算法【2 9 1 ,该算法考虑了视线跟光线之间的夹角,投影参考点与 近裁减面的距离以及像素的深度信息,较好的解决了阴影映射算法的走样问题。 基于全局光照的算法近两年吸引了大量研究者的目光,这一类的算法大多是 基于球面调谐函数以及基于小波变换的方法,在此基础上,微软亚洲研究院的周 坤等人分别在s i g r a p h 2 0 0 5 矛u s i g r a p h 2 0 0 7 发表了两篇基于全局光照的实时软阴影 生成算法的论文【4 3 4 4 1 ,文中提出将场景中的物体用球体进行逼近,为动态场景 预先计算阴影域,并使用球形调谐函数,生成软阴影。这种方法构思巧妙,但是 计算复杂,需要对场景进行优化处理。 使用分布式光线追踪是一种产生高精度软阴影的自然方式,但在实时交互 3 山东大学硕士学位论文 上,这种算法性能不高,大多数用于离线渲染的场合,用来生成精确的效果图, 在交互式系统中很少应用。最近研究者提出了一种基于预计算辐射转换的技术, 事先对加入的光线信息进行压缩。这种技术在实时交互时允许对场景重新光照渲 染,能产生高质量的软阴影。但在动态环境中不支持这种预计算。 近年来随着g p u 技术的不断发展,许多阴影算法被移植到g p u 上进行执行, 使得阴影的生成效率更高,速度更快,阴影的边界计算的更准确。大连海事大学 的y j a n gx i a o ,j i ny i c h e n g 等人将阴影体算法移植到g p u 上进行执行1 5 4 1 ,取得了良 好的效果。 自从w o o 提出对于阴影算法的研究以来,随着计算机图形技术和消费级的图 形硬件的发展,越来越多的阴影算法被提出并得到了实际应用,它们都各有自己 的特点,具体的算法将在后面的章节中介绍。 1 3 论文的主要工作,创新点及章节组织 1 3 1 本文的主要工作及创新点 本章1 2 部分提到的研究都取得了卓越的成就,但也存在某些方面的局限性。 比如阴影体算法虽然对场景中物体的几何信息没有过多要求,而且能够用在移动 光源的场景中,绘制出精确的阴影边界,但是这种算法要求场景中的物体必须是 多边形面片,同时要对阴影体进行两遍渲染,需要大量的填充率,影响了算法的 效率。阴影映射的算法虽然速度较快而且算法简单,但是存在严重的走样现象。 导致目前大多数算法都不能够满足实时系统要求的软阴影的绘制算法。点云模型 自从提出以来,广泛的应用在了三维建模,工业设计及逆向工程等领域,但是对 于点云模型的阴影研究还是一片空白。 本文的研究目的在于实现实时动态的生成软阴影效果的算法,在对阴影体算 法进行了深入研究之后,利用代数几何学的知识,快速,精确的解决了阴影体的 计算问题,并在阴影体算法的基础上实现了硬阴影和软阴影的效果。最后,本文 针对日益流行的点云模型,提出了一种针对点云模型的快速精确的阴影生成算 法。本文的工作主要包括下面四个部分: 1 针对场景中的光源和遮挡体都是凸多面体的情况,本文使用对偶技术和 4 山东大学硕士学位论文 m i n k o w s k i 和,快速的生成了本影和半影的阴影体,从而得到了软阴影的精确边 界,最后用阴影体算法实现了实时的软阴影效果。 2 针对点光源的特殊情况,本文首先深入研究了模型的几何信息以及其代 数表示,接着对模型进行了三维空间的对偶变换,最后用j o a c h i m a t h a le q u a t i o n 解决了阴影体的计算问题,最后用阴影体算法实现了硬阴影,并且达到了实时的 效果。 3 针对光源为椭球的情况,场景中的物体用球或者椭球进行逼近之后,分 别对光源和遮挡体作三维空间的对偶变换,将本影和半影的阴影体转换为对偶空 间中的一条曲线,这条曲线也就是光源和场景对应的对偶体的交线,将问题转化 为二次曲面求交线的问题,基于球和椭球二次曲面求交的特殊性,简化了原空间 中的大量计算。该算法精确的计算了本影和半影的边界,达到了实时的效果,较 好的生成了软阴影。 4 针对给定的模型为点云模型的情况,本文通过预先建立一个高斯球,并 对建立好的高斯球进行层次划分,分为一个一个的c l u s t e r ,每个c l u s t e r 内部的向 量或者全部是面向光源的,或者是全部背向光源的,只有一个c l u s t e r 内部的向 量中既有面向光源的,又有背向光源的向量,这些向量对应的点的集合就是轮廓 点,然后通过将轮廓点连成轮廓线,以此来构成阴影体,最终生成点云模型的阴 影。 本文的创新点在于: 1 将代数几何的知识运用到计算机图形学的实际问题中,运用代数的方法 解决了几何上的难题; 2 不同于以往的采用模拟或者采样的方式来生成软阴影的方法,本文用代 数方法快速精确的计算了阴影体的边界,这个边界是物理上是精确的; 3 解决了用曲面表示的物体的阴影体的快速计算问题; 4 对于点云模型,本文通过巧妙的寻找轮廓点,提出了点云模型的阴影计 算方法。 1 3 2 论文的章节安排 本文共分五章,对实时软阴影生成的相关算法进行了讨论和研究,具体的章 山东大学硕士学位论文 节安排如下: 第一章, 介绍课题的来源和研究意义。简单介绍了生成阴影的主要方法 和国内外的研究现状,指出了论文的主要研究内容和章节安排。 第二章, 主要介绍实时阴影的基本算法,讲解阴影生成过程,软阴影和 硬阴影的区别,详细讲解对象空间和图像空间的阴影生成算法,着重讲解了阴影 体算法,介绍了基于全局光照的阴影生成算法和光线跟踪的阴影生成算法,并对 这些算法的优缺点进行比较。 第三章,这一章是论文工作的主要部分,主要针对三角网格模型,在阴影体 算法的基础上,本章首先利用对偶技术和m i n k o w s k i 和,给出了计算两个凸多面 体互相遮挡形成的软阴影的算法,接下来对点光源,遮挡体用椭球进行逼近的场 景,利用代数几何中的j o c h i m m h m 理论迅速找到遮挡体相对于光源的轮廓线, 从而给出了一个快速的硬阴影生成算法,最后对于光源和遮挡体都用椭球进行逼 近后的场景,应用对偶理论,给出了计算这种场景的实时软阴影的算法。并且针 对这三种不同的场景,本章都通过具体的实验结果证明了算法的高效率和实用 性。 第四章,这一章也是论文工作的主要部分,受三角网格模型确定轮廓线的算 法的启发,本章主要针对点云模型,通过点云模型上每个点的向量作为纽带,把 点云模型上的每一个点映射到高斯球上,并对高斯球进行层次划分,巧妙的找出 轮廓点聚集的区域,进一步构建轮廓线,最终在阴影体算法的基础上,生成了点 云模型的实时阴影。本章首先提出算法的主体思想,之后介绍具体的算法流程, 最后通过实验结果证明了算法的高效率和实用性。 第五章,这一章是论文的结论部分,对论文的工作进行了总结,并对将来的 研究工作进行了期待和展望。 6 础。 第二章实时阴影的基本算法 本章着重讲解阴影的生成过程,实时阴影的生成算法,为课题的研究打好基 2 1 阴影的基本概念 2 1 1 什么是阴影 考虑一个场景由光源l 照亮,阴影的接收体( r e c e i v e r ) 为场景中能被l 照亮的 物体,遮挡体( o c c l u d e r ) 是在接收体上会投射阴影的物体,若从场景中的一点p 看不到光源,那么点p 就处在阴影中,因为光源发出的光也不能到达p 点,也就是 说阴影是眼睛可以看到而光源看不到的区域“阻“州。如图2 - 1 所示。 22 2 阴影的作用 图2l 阴影的生成示意图 阴影是由于光源的照射以及物体间的相互遮挡形成的,因此阴影可以为场景 中物体的相对位置提供丰富的视觉信息嘲m ,如图2 - 2 所示,通过对( a ) 进行观察 可能认为椅子是与地面紧密贴在一起的,但是通过( b ) 进行观察,可以得知图像 上的椅子实际上是悬空在地面上方的,如果没有阴影效果,我们就被我们自己的 眼睛欺骗了。 山东大学硕士学位论文 ( a ) 没有阴影的效果( b ) 添加阴影的效果 图2 - 2 阴影的作用:提供丰富的空间信息 随着计算机图形学的不断发展和显卡技术的不断进步,阴影越来越多的应用 到了更多的图形程序中,有时,闪闪发光的小球以及波澜壮阔的水面还不如添加 几个简单的影子更能增加场景的真实感。从图2 3 中可以看出,( a ) 中的图像几乎 没有立体感,真实感也不强,而在( b ) 中,加上了简单的阴影之后,图像立即丰 满起来,真实感得到了剧烈的增强。 ( a ) 没有阴影的鸟 2 2 3 全影和半影 ( b ) 添加阴影的鸟 图2 - 3 阴影的作用:增加了图像的真实感 点光源产生的阴影区域称为全阴影区,每个投影都有一个全阴影区( 当光源比 遮挡体大得多的时候,全影区域会消失) ,称作本影( u m b r a ) ,如图2 4 所示。在 点光源的场景中,由于投影区域中的场景或者被照亮或者被遮挡,所以阴影区和 照亮区之间是不连续的,因此可以用二进制数0 或者l 来表示点是否处于阴影中; 囤 山东大学硕士学位论文 与点光源不同的是非点光源,如线性光源或者面光源甚至体光源,阴影接收体上 的点不完全处在阴影区中,由非点光源产生的阴影使场景中的点在完全可见和不 可见之间有一个平滑的过渡,这个过渡区域称为半影( p e n u m b r a ) ,半影中的点不 能再由二进制数字0 和1 表示,而是由界于0 和1 之间的数值来表示1 1 1 1 3 4 1 ,因 此计算起来更加复杂。本影和半影构成了整个阴影,本影和半影的形成过程见图 2 4 所示。 举 2 2 。4 硬阴影与软阴影 图2 - 4 本影和半影的生成示意图 硬阴影:硬阴影是由点光源形成的阴影,场景中的每一个点或者在阴影中, 或者在阴影外,阴影区域和非阴影区域有泾渭分明的界限,由于这种尖锐的边界 特征,硬阴影有时并不能真实的表示物体的空问信息,还有可能被误认为是物体 的表面折痕,这直接降低了图像的真实感。在现实世界中,硬阴影是不存在的, 因为现实世界中的真实光源都是有具体的形状和大小的,没有单纯的一个点的光 源。 软阴影:硬阴影降低了图像的真实感程度,同时现实世界中的阴影都是软阴 影,因此在图形程序中需要生成软阴影来提高场景的真实程度,更好的模拟现实 9 山东太学硕士学位论文 世界。软阴影是由线性光源,面光源,或者体光源生成的 4 6 1 ,软阴影在阴影区域 和非阴影区域之间有一个平滑柔和的过渡,消除了尖锐的边界,因此效果比硬阴 影更加真实,更好的模拟了现实世界的光照场景。软阴影的柔和程度跟光源,遮 挡体和阴影接收体三者的位置,大小有关2 ”,软阴影可以通过阴影边缘来辨认。 遮挡体越靠近阴影接收体,正确的软阴影就越明显。软阴影的本影区并不等同于 由一个点光源产生的硬阴影,相反,随着光源的逐渐变大,软阴影的本影区域会 逐渐变小,当光源大到一定程度的时候,本影区域会逐渐消失。如果能够满足实 时的要求,人们一般会用软阴影来代替硬阴影,这是因为软阴影在视觉上更像一 个阴影,更符合现实世界的情况。 图2 5 中,( a ) 图是硬阴影,阴影边界非常僵硬;而( b ) 图则是一个由面光源生 成的软阴影,可以看到软阴影的柔和的边界,场景也更加生动,丰满,富有真实 感。 ( a ) 点光源生成的硬阴影m ) 面光源生成的软鲷影 图2 - 5 硬阴影与软阴影的效果比较 软阴影的大小主要取决于两个要素,一是光源的大小,一是光源与遮挡体之 间的距离,当光源与遮挡体之间的距离固定时,光源的面积越大,产生的本影区 域就越小,直至完全消失,半影区域就越大,相应的,产生的软阴影的范围也就 越大。 圈2 - 6 显示的硬阴影与软阴影的生成示意图,( a ) 图是点光源生成硬阴影的示 意图,( b ) 图是三角形光源生成软阴影的示意图;从图中也可以看出,当光源的 面积越大时,本影区域会逐渐变小甚至消失。 圈2 - 7 软阴影与光源大小的关系 右下图是由更大的光源生成的,在图中几乎看不到本影的存在了,只有柔和的软 阴影。 山东大学硕士学位论文 2 2 对象空间的阴影算法 2 2 1 平面阴影 平面阴影算法是最简单的一种阴影算法,通过对三维场景中的物体进行三维 几何投影变换,将其按光源的方向投射到平面上,并对投射出来的物体用阴影的 颜色绘制一遍,来完成阴影的绘制过程,因此平面阴影算法也被称为投射阴影, 或者伪阴影。平面阴影生成的示意图见图2 8 ,空间中的两个多边形被投射到两 个不同的平面上,形成平面阴影。 y 0 y 图2 - 8 平面阴影的生成示意图 平面阴影的生成步骤为: 绘制阴影接收体( 必须是平面物体) 。 对于场景中遮挡体的每一个多边形,进行投影变换,将其投射到接收平 面上,形成阴影多边形。 利用o p e n g l 的模板缓存机制,剔除那些落在阴影接收平面之外的多边 形。 绘制场景中剩余的部分。 平面阴影的巧妙地利用了投影变换的技巧,将阴影投射到一个平面上,只需 要构造一个4 4 的变换矩阵即可,从数学上来进行推理比较简单,但是真正实 现起来也要对组成阴影遮挡体的物体的所有的三角面片进行三维搜索,并没有减 少实际的计算量,同时,由于平面阴影存在以下两个致命缺陷: 阴影接收体必须是平面。 只能处理点光源和有向光源,软阴影的实现非常困难。 因此,平面阴影很快变成了一种过时的算法,后来出现的阴影体( s h a d o w 1 2 山东大学硕士学位论文 v o l u m e ) 算法逐渐取代了它的位置。不过,作为所有阴影算法中最简单的一种算 法,平面阴影算法在低端设备,如手持移动设备,p d a 上,还可以看到它的应 用。 2 2 2 阴影体算法 阴影体算法是一种基于物体几何形状的算法,c r o w 在1 9 7 7 年首次在他 s i g g r a p h 的论文中提出该算法的思想【5 1 ,但当时碍于硬件条件的限制,该算法并 没有真正实现,而是随着硬件技术的不断发展,h e i d m a n n 等人在硬件上实现 1 2 1 。随着i ds o f t w a r e 公司开发的f p s 游戏d o o m 3 的上市及其关键技术的发布, s h a d o w v o l u m e 这个术语成为f p s 玩家和众多图形学学者及业余爱好者谈论的 对象,它也是d o o m 3 最引以为豪的最尖端3 d 技术,几乎成为了阴影算法的代 名词。 阴影体算法的具体介绍如下2 7 】 4 2 】:阴影体算法首先沿着光源的方向找出阴影 遮挡体的轮廓线,然后将轮廓线沿着光源的方向进行延伸,这样,所有延伸出来 的面就形成了一个筒形的区域,但是这个筒形区域的两端现在还是不封闭的,因 此,在筒靠近光源的一端用面向光源的遮挡面封闭,在延伸出去的远离光源的 一端用另一个平面进行封闭,这样就得到了一个完全密封的区域,这个区域就叫 做阴影体。接下来要做的就是对场景中的所有物体进行检查,如果物体处于阴影 体之中,那么这个物体也就处在遮挡体形成的阴影中,相反,如果物体位于阴影 体之外,那么物体就能够被光源发出的光完全照亮而不受阴影遮挡体的影响,如 果物体一半在阴影体中,一半在阴影体之外,那么该物体也将一半位于阴影之中, 另一半位于阴影之外m 。如图2 - 9 所示,图中生成的阴影体可以裁剪成如下大小 ( 灰色的部分,其边界就是阴影多边形) ,亦可以继续延伸,形成更大的阴影体, 但这样会影响算法的效率,因此阴影体的大小只要够用就好,可以在程序中自行 控制。从图中的大多边形可以看出,只有位于阴影体内的表面才会呈现中阴影的 效果,而在阴影体之外的表面是不是阴影的影响的。从图2 - 9 中还可以看出更重 要的一点信息,那就是阴影只与光源,遮挡体和阴影接收体有关,而与眼睛的位 置( 视点的位置) 并没有任何关系,事实也是这样子的。 i m h 瞄的世* z x 图2 - 9 阴影体示意图 用硬件加速的方法实现阴影体算法叫,就不得不用到模板缓存1 3 ”,下面介 绍一下o p e n g l 的模板缓存机制。模板缓存是o p e n g l 为每个像素分配的一个缓存 值,它的作用是将绘图限制在屏幕的某些部分中进行,比如像绘制一幅透过挡风 玻璃观察到的图像,就要在模板缓存中存储挡风玻璃形状的图像,然后再绘制整 个场景,模板缓存可以使透过挡风玻璃看不见的物体不被画出。在编制模拟驾驶 的程序时,可以一次性的画出汽车内的仪表和其它部分,在汽车运动时,只更新 车外的场景即可。图2 1 0 为模板缓存的一个简单应用。 ( 劬模板遮罩( b ) 原始图像( c ) 在模板缓存规定的区域内画图 图2 1 0 模板缓存的简单应用 在图2 1 0 中,( a ) 图定义了一个模板遮罩,也就是将要画图的位置,只有在 这个遮罩区域内的的图像才能被绘制出来,o a ) l 訇是如果没有模板遮罩将会绘制 山东大学硕士学位论文 的图像,( c ) 图是应用了模板缓存之后的实际绘图效果。可以对模板缓存进行加、 减操作,控制绘图的区域,得到复杂的效果。 阴影体算法中最关键的一步是阴影体的计算,为了计算阴影体,首先要计算 遮挡物从光源的角度看物体所得到的轮廓线。轮廓边的计算方法有多种 3 9 1 加1 , 其中最简单的一种就是找出被朝向相反的两个三角形( 两个三角形的法向一个朝 向光源,另外一个背向光源) 所共享的边,这样的边才有可能构成轮廓边,其它 的边在光源看来都是在物体投影的内部而不是边缘。 d o o m 3 的游戏中为了计算复杂的遮挡体的轮廓线,提出了种被称为“智 能减边”的新技术,这种技术能很好的简化轮廓线的计算,并且消除那些无用的 轮廓线,其基本计算步骤如下: 遍历模型的所有三角形: 计算光源方向和三角形法向量的点积d o t ,利用这个值来确定该三角形 是面向光源( d o t = o ) 还是背向光源( d o t 对于计算出来的每一条轮廓边,从光源出发,分别连接轮廓边的两个端 点,并且向远离光源的方向进行延伸,它们延伸出来的面,也就是阴影多边形。 每个阴影多边形将空间划分为两个半空间。因此,对所有的阴影多边形进行求交 运算就可以形成没有封闭的阴影体。 ( 2 分别在靠近光源和远离光源的两个方向对阴影体进行封闭。靠近光源的 一头可以用法向量朝向光源的三角面片集合来进行封闭,而远离光源的一头则可 以用视见体的后裁剪面与阴影体求交来封闭。经过这两个步骤就可以得到完全封 闭的阴影体。 对于场景中的每一个帧元,我4 f j 翔j 断它是否位于阴影体中可以遵从如下的操 作;我们用一个“深度计数值”来具体实现这个算法:当视点位于阴影体中时,深 度计数值的初始值为1 ,反之为初始值0 ,从视点向该帧元发射一条射线,当射 线经过阴影体的前向面时,深度计数值加1 ,反之深度计数值减1 ,如此反复, 直到遇到该帧元为止。当初始值为0 ,而最终的深度计数值不为0 时,证明该帧 元在阴影体中中,反之当初始值大于0 时该帧元在阴影体外。当初始值为1 时, 如果最终的深度计数值为1 ,则说明该帧元在阴影体中,如果最终的深度计数值 大于1 ,则说明该帧元在阴影体之外。 以上是阴影体算法的基本思想,下面看一下阴影体算法在硬件上的具体实 现,即使用模板缓存来实现阴影体算法1 3 ”。 山东大学硕士学何论文 2 2 2 1 z - p a s s 算法 z p a s s 算法是阴影体算法最初的标准算法,它使用硬件的模板缓存机制,用 来确定屏幕上一个具体的像素是否处于阴影中,z p a s s 算法具体可以分为以下三 个步骤4 5 1 : 允许写深度缓存,之后渲染整个场景,并得到关于所有物体的深度图。 注意这里的深度图和阴影映射里面的深度图是有区别的,区别在于阴影体算法里 面的深度图是以真实视点作为视点得到的,而阴影映射里面的深度图是以光源为 视点得到的。 禁止深度缓存的写操作,但是仍然要打开深度测试,打开模板测试,允 许模板缓存的写操作,然后渲染所有的阴影体。对于阴影体的前向面( 法向量面 向视点的阴影多边形) ,如果通过深度测试,那么和这个象素对应的模板缓存值 加一。如果深度测试失败,模板缓存值不变。而对于阴影体的后向面( 法向量背向 视

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论