(计算机软件与理论专业论文)全局光照下的动画渲染技术研究.pdf_第1页
(计算机软件与理论专业论文)全局光照下的动画渲染技术研究.pdf_第2页
(计算机软件与理论专业论文)全局光照下的动画渲染技术研究.pdf_第3页
(计算机软件与理论专业论文)全局光照下的动画渲染技术研究.pdf_第4页
(计算机软件与理论专业论文)全局光照下的动画渲染技术研究.pdf_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

中文摘要 随着计算机硬件技术的高速发展和计算机图形学研究的深入,计算机动画也 得到了突飞猛进的发展,并且有越来越广泛的应用。在使用全局光照算法渲染动 画时,不仅面临着计算时间过长的问题,而且需要考虑如何保持动画的时间一致 性。 围绕着这两个问题,在p h o t o nm a p p i n g 和光线追踪两种光照计算方法下对 高质量的真实感动画渲染做了一些研究。首先在p h o t o nm a p p i n g 光照计算方法 的基础上,通过分离直接光照和间接光照,分析出渲染过程中噪声的主要来源以 及时间开销的主要部分。并且改进了采用一次反射计算光照的p h o t o nm a p p i n g 方法,使之可以应用在绑定随机数生成动画的方法中。对于光线追踪方法,本文 设计并实现了一个通用的动画渲染系统,该系统能够高效的生成动画,并且保持 了动画帧与帧之间的时间一致性。此系统根据“复用”的原则,在保证无偏性的 基础上,利用重投影技术,在动画各帧之间复用采样;通过动画渲染队列,完成 整个动画的一次性渲染;通过使用k d t r e e 有效的组织和管理包括视点变化,物 体变化和光源变化的动态场景,并且能够提供高效的光线与多帧动态物体的求交 和可见性查询:通过内存的重复利用技术来解决复杂动画渲染时大量内存占用的 问题。通过实现基于p a t ht r a c i n g 光照计算方法的动画渲染系统,证明了其它具 有精确计算能力的路径追踪方法在该系统中的适用性。 关键词:动画全局光照动态场景重投影 a bs t r a c t w i t ht h ed e v e l o p m e n to fc o m p u t e rg r a p h i c s ,t h ec o m p u t e ra n i m a t i o ni sm a k m g g r e a tp r o g r e s s a n di sb e i n ga p p l i c a t e di n m o r ea n dm o r ea r e a s h o w e v e r , p r o d u c m g h i g hq u l i t ya n i m a t i o n si sv e r yt i m ec o n s u m i n ga n dw i l ls u f f e rf r o mt e m p o r a la l i a s i n g u s i n gt r a d i t i o n a lf r a m e - b y - f r a m er e n d e r i n gs y s t e m t os o l v e t h e s et w op r o b l e m s ,t h em o s tn o i s ya n dt i m ec o n s u m i n gp a r t i n a n i m a t i o nr e n d e r i n gp r o c e s sa r ea n a l y s e db ys e p a r a t i n gd i r e c tl i g h t i n gf r o mi n d i r e c t l i g h t i n gb a s e do np h o t o nm a p p i n gm e t h o d a n dt h ep h o t o nm a p p i n g m e t h o dw i t h f i n a l g a t h e rp r o c e s si si m p r o v e d ,s oi tc a nb eu s e di nas p e c i a la n i m a t i o nr e n d e n n g t r i c k w h i c hh o l d st h et e m p o r a lc o h e r e n c eb yc o m b i n i n gr a n d o ms e e d sw i t hp h o t o n s a n df o rp a t ht r a c i n g ,w ed e s i g na n di m p l e m e n ta r c h i t e c t u r ef o re f f i c i e n t l yp r o d u c i n g a n i m a t i o n s 。w h i c hc a nc o m p u t em u l t i p l ef r a m e sa to n c eb ye x p o i t i n gt h ec o h e r e n c e b e m e e ni m a g es a m p l e si nt e m p o r a ld o m a i n f o re a c hs a m p l er e p r e s e n t i n ga9 1 v e n p o i n ti nt h es c e n ew eu p d a t ei t sv i e w d e p e n d e n tc o m p o n e n t sf o re a c hf r a m ea n d a d d i t sc o n t r i b u t i o nt op i x e l si d e n t i f i e dt h r o u g ht h ec o m p e n s a t i o no fc a m e r aa n do b j e c t m o t i o n t h er e q u i r e dv i s i b i l i t yi n f o r m a t i o ni sp r o v i d e du s i n ga k d - t r e ea c c e l e r a t i o n d a t as t r u c t u r ef o rm u l t i p l ef r a m e ss i m u l t a n e o u s l y t h em e m o r yr e u s i n gt e c h n i q u e i s u s e dt os a v em e m o r ya n dm a k ei tp o s s i b l et or e n d e ral o n gt i m ea n i m a t i o na to n c e - a n d 、ep r o v et h a tm a n yp r e c i s ea n dc o s t l yg l o b a li l l u m i n a t i o nt e c h n i q u e sc a nb e a v a i l a b l ei nt h i sr e n d e r i n ga r c h i t e c t u r e k e yw o r d s :a n i m a t i o n ,g l o b a li l l u m i n a t i o n ,d y n a m i cs c e n e ,r e p r o j e c t i o n 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的 研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表 或撰写过的研究成果,也不包含为获得垂鲞盘堂或其他教育机构的学位或证 书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中 作了明确的说明并表示了谢意。 学位论文作者签名:袁书最签字日期:仞叼 年乡月1 弓日 学位论文版权使用授权书 本学位论文作者完全了解墨壅盘鲎有关保留、使用学位论文的规定。 特授权苤鲞盘堂可以将学位论文的全部或部分内容编入有关数据库进行检 索,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校 向国家有关部门或机构送交论文的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名:发? 杜 签字日期:仉幻 年彳月l 多日 导师签名: 铂,k 签字日期:劲吲年石月( 多且 第一幸绪论 第一章绪论 随着计算机硬件技术的高速发展和计算机图形学研究的深入,用计算机生成 各种以假乱真的场景画面和特技效果己成为可能,这就是真实感动画技术。计算 机动画是伴随着计算机硬件和图形算法高速发展起来的一门高新技术,它综合利 用计算机科学、艺术、数学、物理学和其他相关学科的知识,能够生成绚丽多姿 的连续的虚拟真实画面,给人们提供了一个充分展示个人想象力和艺术才能的新 天地。 1 1 研究的背景和现状 真实感动画的基础是全局光照,全局光照的计算是计算机图形学中的一个核 心组成部分,它的基本任务是使用预先组织好的三维场景生成具有完全真实感的 图像。为了达到这一目的,必须模拟光线在场景中进行传播所发生的各种物理现 象,如多次的反射,阴影,焦散等。这不仅需要对场景中各种物体的几何特性和 材质属性的精确描述,还需要求解计算多次反射,折射带来的无限维积分的问题。 这使得全局光照计算成为了一个极度复杂的问题,全局光照计算的复杂性使得渲 染一幅真实感图像需要很长的时间,图形学领域的很多研究都集中在如何更好的 实现全局光照算法,在更短的时间内生成高质量的图像上。k a j i y a 1 首先提出使 用m o n t ec a r l o 方法求解渲染方程的光线追踪算法。这是第一个从统计上无偏的 算法。然后,a r v o 2 3 提出了一些改进,并提出了等价的逆向粒子追踪算法。 m o n t ec a r l o 方法最大的问题是由采样方差产生的噪声,v e a c h 4 通过使用多重重 要性采样策略,极大的提高了光线追踪算法的适应性和效率。l a f o r t u n e 5 6 和 v e a c h 7 分别提出了双向路径追踪算法,通过生成一对眼睛子路径和光源子路径 然后连接每个结点的方法,降低了计算的方差水平,对一些以前很难计算的场景 得到了很好的计算效果。随后,v e a c h 和g u i b a s 8 又提出了依据光照分布调整采 样的m e t r o p o l i s 方法,这种方法可以很高效的计算间接光照占主要成分的场景。 j e n s e n 9 1 0 】提出了p h o t o nm a p p i n g 算法,它是包括生成光子图和光子收集两阶 段的算法,大大加速了图像的生成速度,但是它是一个统计上有偏的算法,可以 使用它计算焦散和间接光照,从而和一般的光线追踪算法结合使用。 在使用全局光照算法合成计算机动画时,不仅面临着计算复杂性问题,还需 第一章绪论 要考虑如何保持动画帧与帧之间的时间一致性【l l 】。围绕着动i m i 的计算复杂性和 时间致性问题,前人已经做了大量的工作。 m a r km e y e r 【1 2 1 提出一种统计学的方法计算动画,首先对于动画的每一帧粗 略采样,然后用主成分分析的方法计算这些帧的主成分,并把主成分的影响加到 每一帧上。在这个过程中每一帧的采样量都不大,并且主成分计算的过程耗时很 小,由于每一帧都利用到了主成分,从而使动画保持了时间上的一致性。t a w a r a 【1 3 】提出了一种随机更新的方法来生成动画,该方法利用p h o t o nm a p p i n g 计算光 照,整个动画生成过程只使用一个随时间而更新的光子图,每个光子都被设置一 个时间属性,在光子图更新过程中,没有被更新到的光子随着计算帧数的增加而 增大时间属性,更新后的光子时间重新设置为零,按照光子的时间建立采样的概 率函数,从而使时间属性大的光子被更新到的可能性更大,这种方法由于复用了 光子图从而保持了时间上的一致性。m a r k u sw e b e r 【1 4 1 在p h o t o nm a p p i n g 的密度 估计过程中用双向滤波办法生成具有时间一致性的动画,其中每一帧的计算需要 用到前后若干帧的计算结果,来自前后若干帧的计算结果在时间和空间上与当前 帧有一个距离,当前帧根据距离信息,以一定的权重复用来自前后帧的计算结果, 以保持动画时间上的一致性。同样基于p h o t o nm a p p i n g 的动画渲染方法还有【1 5 1 , 【1 6 】,它们都以以光子图为基础,把场景中变化的部分反映在光子图中,从而正 确的更新动画,并保持动画时间上的一致性。以上介绍的方法都是离线计算的动 画渲染,事实上,有很多动画渲染算法都致力于解决交互式渲染问题,这些算法 更加追求渲染的实时性,以提供更好的交互性能。b i s h o p 【1 7 】提出了f r a m e l e s s 的概念,即动画的更新不必限制在严格的逐帧更新的范畴,这种方法在两个关键 帧之间生成若干帧,这些帧并不是精确计算的,而是随机的少量的计算一些采样, 从而更新动画,由于每一帧的计算量减少,从而增加了每秒钟的帧数,因此流畅 性和交互性能得到了提升。k i r i l ld m i t r i e v 【1 8 矛l j 用霍顿序列的连续性来指导更新 光子图中需要被更新的光子,该方法可以快速的察觉和跟踪场景的变化,以达到 快速和准确的渲染,具有很好的交互性。 1 2 本文的组织 本文第二章简单介绍了全局光照,动画的分类及其面临的问题和解决此问题 的原则。第三章在p h o t o nm a p p i n g 光照算法的基础上,分析了动画噪声的来源, 并改进了绑定随机数的动画生成方法。第四章在光线追踪光照算法的基础上,设 计和实现了一个高效的动画渲染系统。 第_ 章全局光照和动画 第二章全局光照和动画 全局光照( g l o b a li l l u m i n a t i o n ) 简单的说就是考虑到环境中所有表面和光源 相互作用的照射效果;局部光照( l o c a li l l u m a t i o n ) 就是只考虑光源到模型表 面的照射效果。对于一些现象,局部光照模型是无法计算出来的,比如,一个红 颜色的物体受到强光的照射而把周围物体的颜色也染上了红色,或者一个物体由 于面光源的存在而具有半影区域,这些问题用全局光照可以很好的解决。为了生 成视觉上近乎照片级别真实感的图像,需要用全局光照模型进行计算。 所谓动画也就是使一幅图像“活”起来的过程。使用动画可以清楚的表现出 一个事件的过程,或是展现一个活灵活现的画面。计算机动画是指采用图形与图 像的处理技术,借助手编程或动画制作软件生成系列的景物画面,它由若干静 态图像按照时间顺序连接而成,每一个静态的图像称为一帧( f r a m e ) 。动画可以 反映一个场景的若干因素随时间而变化的过程,其基本单位帧,可以看作连续的 变化过程在离散的时间点上的快照。 如今计算机动画的应用十分广泛,动画可以让应用程序更加生动,增添多媒 体的感官效果;动画还可以应用于游戏的开发,电视动画制作,创作吸引人的广 告,电影特技制作,生产过程及科研的模拟等等。 2 1 渲染方程 渲染方程刻画了光线在场景中传播的整个物理过程,对渲染方程求解的过程 就是对场景的渲染过程。渲染方程描述了能量从光源发射,经过各种材质表面的 多次反射,折射,最后进入人眼的这一过程。在面片上某点沿方向矽出射的辐 射度( f l u x ) 可以定义如下( 如图2 - 1 ) : z ( x 一秒) = g ( x _ 秒) + 。z ( 戈,杪hd 三( ,卜 f ,) c 。s ( 以,y ) d 公式2 1 这里q ,是x 点的所有半球方向集合,g ( x 一秒) 是点x 沿日方向发射的辐射度,z 是双向散射分布函数( b s d f ) ,( x 卜缈) 是点x 从方向得到的入射辐射度, c o s ( n , ,吵) 是x 法向量和入射方向的夹角余弦。 第二章全局光照和动画 图2 - 1 对半球方向积分 也可以将渲染方程从对半球方向的积分转化为对场景中所有面片面积的积分,这 样可以得到渲染方程的另外一种等价形式( 如图2 - 2 ) 图2 - 2 对面片积分 以,一讫z 汕x ) l ( x 刚) d a ( x ,) 州2 _ 2 )+ i z ( ,寸,专 。j x ) g ( x ,”) 一 g ( x ,) :v ( x t , x w ) 型丝些学幽 y 这里函数g ( x 7 ,) 称为几何项,其中磊是点x y 之间距离的平方,两个余弦 值是向量x 7 付,和点,和点x 表面法向量的夹角余弦,v ( x 7 ,x ) 是可见性函数, 如果点x 和点,相互可见,则v ( x 7 ,) 为1 ,否则为0 。 虽然,公式( 2 1 ) 与公式( 2 2 ) 是等价的,但是它们分别代表不同的光线 传播方式,因此计算这两个积分所采取的策略也不同。为了用m o n t ec a r l o 方法 计算公式( 2 1 ) 中的积分,首先要在被计算的点的半球上采样若干个方向,然 后根据这些方向计算光照;对于公式( 2 2 ) ,首先在被计算的点的周围面片上选 择若干个点,然后判断被计算的点和被选取的点之间的可见性,然后根据这些点 对来计算积分。 第_ 章全局光照和动画 通过对上述渲染方程进行求解,可以得到场景中任意表面上的点向任意方向 的辐射度,但渲染关心的是那些直接对生成图像起作用的辐射度。为了计算每个 像素面积上的平均辐射度值,需要计算这个像素的辐射通量。这个辐射通量可以 通过对所有从该像素可见的表面点和方向的辐射度进行积分得到: ( 薯) = 工,l 上( ,寸秒) c 。s ( m ,o ) d c o o d a ( x ) 公式( 2 - 3 ) 这里t = 4 q j ,是由从该像素可见的表面点,和方向9 对组成的空间。 2 2m o n t ec a r l o 方法 渲染方程虽然有简洁的形式,但是这个积分绝大多数情况下不能用解析的方 法进行求解。因为场景中的物体形状不一定是规则的,b r d f 很多情况下也不是 用解析式表达的,并且渲染方程的求解,实际上需要计算无穷维的积分。 蒙特卡罗方法( m o n t ec a r l om e t h o d ) ,也称统计模拟方法,是二十世纪四十 年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计 理论为指导的一类非常重要的数值计算方法。它是一种使用随机数( 或更常见的 伪随机数) 进行离散模拟来解决数值计算问题的方法。 m o n t ec a r l o 的基本思想是:给定一个函数f :s 专r 和一个随机变量x p , 随机变量函数厂( z ) 的数学期望可以由随机变量样本的函数均值来近似,如下式 所示: e ( 厂( x ) ) = 工。s 厂( x ) p ( x ) d 万l 善n 厂( ) 公式( 2 4 ) 可以用函数g ( x ) 来代替f ( x ) p ( x ) ,这样就得到: 聃州专姜筹 渲染方程的实质是一个积分: 公式( 2 5 ) 公式( 2 6 ) 第二章全局光照和动画 由公式( 2 5 ) ,根据在( j ) 的定义域内的某个概率密度分布函数j 口( x ) ,进行若 干次采样,样本点为x 。,x 2 ,x ,x 。,样本之间相互独立,并且每个样本都符 合概率分布p ( x ) ,此时i 的近似估计值为: 日= 专;| ;器 这个估计是无偏的,证明过程如下: 公式( 2 7 ) 的值随着n 的增大,逐渐趋近于i ,由大数定理可知: 啦目胪等 公式( 2 7 ) 公式( 2 - 8 ) 从公式( 2 8 ) 可以看出m o n t ec a r l o 方法计算数值积分时收敛的速度是m 5 , 与函数f 的维数无关,而其他的数值积分方法一般都随着问题维数的增加,收敛 速度越来越慢。因此m o n t ec a r l o 方法是解决渲染方程的有力工具。 2 3p h o t o nm a p p i n g 方法 p h o t o nm a p p i n g 方法从另一个角度求解了渲染方程,它分为两个阶段:第一 阶段,建立光子图( p h o t o nm a p ) ,在场景中模拟光源发射光子,并且在非镜面 的物体上把光子存在光子图中;第二阶段,对于建立好的光子图,利用密度估计 计算光照。对于大多数的场景,p h o t o nm a p p i n g 的执行效率更高,看起来渲染结 果也更好,因为这种方法产生的噪声是低频噪声,不像通常的m o n t ec a r l o 方法 那样产生的是高频噪声。 协似 出卜 力 = 搿静 刚巧_ 脚闻 砰一一 r研 第二章全局光照和动画 2 3 1 光子的发射和传播 任何光源都有一个能量的分布,光子就是根据这些分布发射的,也就是说光 子的发射分布直接与光源上的能量分布有关。这样做的目的,是为了让发射出的 光子具有相同的能量,因为当光子图中的光子都具有相同能量时,从光子图计算 光照将具有最好的效果。一般来说,光源可以具有任意形状和任意的发射特性, 即随着光源上的位置和发射方向的变化,光强度也会发生变化。假设光源的能量 为扔m ,从光源发出的光子数为亿,那么单个光子所具有的能量为: 2 等 公式( 2 9 ) 对于场景中有多个光源的情况。每个光源都要发射光子,对于亮度高的光源, 其光子发射数量就比较多,亮度低的光源发射的光子数量就相应的少。这样做的 目的仍然是为了让每个光子携带的能量尽可能的相同。 光子从光源发射出来以后,它就会在场景中传播。跟踪一个光子的方式与跟 踪一条光线大致相同。假设光源为单色光。对于一个具有漫反射系数d 和镜面反 射系数s ( s + d 1 ) 的表面,需要决定经过此表面的光子,是被漫反射,镜面反射, 或是被吸收。这里使用一个随机变量p 【0 ,1 】: 尸 0 ,d 】 漫反射 尸【d ,s + d 】镜面反射公式( 2 - 1 0 ) p 【s + d ,l 】 吸收 这样,光子的能量保持不变,只是根据随机数和表面的反射特性来决定光子 的下一个去向。最后光源的能量平均的在光子中分配,以保证计算的正确性。 2 3 2 光子图的建立和使用 光子与非镜面的物体相交时,需要把光子的信息保存到光子图中。根据光照 的特点,光子图被分为三类,直接光子图,间接光子图和焦散光子图。直接光子, 即从光源发射出的光子第一次与非镜面物体相交:间接光子是指光子与此表面相 交之前至少与非镜面的表面相交过一次;焦散光子是指光子与非镜面表面相交之 前,只与镜面表面相交并且最少相交过一次。 构建好光子图之后,就可以从中计算任一点的光照。对于给定的一点,其周 围的光子能量总和以及光子的密度共同决定了这一点的亮度。光子的能量越大, 第_ 章全局光照和动画 密度越大,所求点的亮度就越大,因此需要利用统计学中的密度估计方法计算光 照。然而直接使用光子图计算光照,得到的结果往往比较粗糙,因为精确的计算 需要大量的光子,并且密度估计时使用的光子不一定都是正确的光子,比如两个 面的交汇处。如果对渲染的质量要求不高,比如只是为了预览效果,那么可以直 接使用光子图进行计算,并且这样计算的效率很高。如果想得到很好的渲染效果, 光照的计算需要进行特殊的步骤,对于直接光照,仍然按照光线追踪的方法进行 计算,因为直接光照的计算时间占总渲染时间的极小一部分,并且光线追踪和光 子追踪两种方法在计算直接光照上没有显著的计算时间的差别。对于焦散光照, 使用焦散光子图进行计算,这里不能采用光线追踪的方法计算焦散,实际上,焦 散现象正是传统光线追踪方法无法解决的难题。对于间接光照,如果直接从光子 图计算的话,时间消耗会很少,但是效果不好。一般对于间接光照会采用一次反 射的方法进行计算。其过程为,假设要求的光线为l ,在l 与物体的交点p 处, 对物体的双向散射函数进行采样,从而产生n 条l 的入射光线厶,对于每个厶使 用直接,间接和焦散光子图计算光照,从而最终计算出l 的光照。这种一次反射 采样的方式使每个间接光照的计算,都使用了大量的光子,从而取得更好的渲染 结果。 2 4 动画的分类 这里讨论的动画都是通过建立模型,计算光照的过程得到的,并不包括没有 建模和光照计算过程的艺术创作形式的动画。 2 4 3 交互和离线 按照动画渲染方式的不同,动画可以分为交互( i n t e r a c t i v e ) 和离线( o f j f l i n e ) 两种类型。 1 交互式 是指用户可以交互的控制场景中的某些属性,交互式动画的渲染目的是尽可 能快地反映出场景变化。某些应用对于每秒显示的帧数有严格要求,为了追求时 间上的灵敏度,它往往会牺牲图像的渲染质量。但是随着处理器计算能力的提高, 特别是并行计算的发展,具有高度真实感的实时交互式渲染越来越成为可能。 2 离线式 是指通过脚本来预先指定场景中属性的变化,与交互式渲染相比,它更加追 求渲染的质量。从理论上讲,交互式渲染方法可以直接当作离线渲染方法使用, 而离线渲染方法未必可以作为交互式方法使用【l l 】。但是离线的渲染方式可以利 第章全局光照和动画 用更多场景信息从而得到更好的渲染效果。 2 4 4 按物体的变化分类 动画中涉及到的场景属性的变化是多种多样的,正是这种多样的变化使得动 画的视觉效果更加丰富。 1 视点变化 每个场景都有一个虚拟的视点( 照相机) ,虚拟视点随时间而改变属性,比 如视点位置,可视角度等等。只有视点变化的动画是一种比较简单的动画,特别 是对于某些光照计算方法,如p h o t o nm a p p i n g 在计算视点变化的动画时可以共 享一个p h o t o nm a p 。 2 物体变化 场景中的物体分为刚体和非刚体两种。刚体的表示及其变化的描述相对简 单,本文中只讨论刚体的变化。刚体的变化包括平移,旋转,缩放。 3 光源变化 光源是场景中的一种特殊物体,它可以像普通物体一样有形状,也可以是抽 象的点或者无穷大的面。光源的变化包括光源位置的改变,亮度的变化,形状的 改变,及在不同方向能量分布的变化等。 4 其它变化 除了上述的几种变化,场景中的各种其它属性都可以变化,比如物体表面的 材质,物体的纹理,中间介质的变化等。 2 5 动画渲染面临的问题 现有的光照计算方法,无论是光线追踪,辐射度还是光子追踪算法,原本都 是被设计用来计算静态场景光照的,因此,当用这些方法来计算动态场景光照的 时候,即使是场景只有很小的变化,也需要重新计算整幅图像。 2 5 1 时间复杂度 事实上,每一帧都独立的生成,然后合成动画的方法意义不大,因为光照的 计算特别是精确的全局光照的计算需要很长时间,在实际应用中,一个动画往往 由成百上千帧甚至上万帧组成,这些帧的生成时间之长,极大的影响了动画的应 用。 第二章全局光照和动画 2 5 2 时间一致性 按照传统的逐帧( f r a m eb yf r a m e ) 渲染的方式来生成动画时,每一帧都相 当丁一次静态场景的许算,而全局光照的计算是以随机采样为基础的,因此生成 的图象中往往会有随机噪声。为了减少噪声,就需要加人采样,这同时也加人了 计算的负担,随着采样的增加,每一帧上的噪声逐渐减少,当每一帧的采样加到 足够的量时噪声就会很好地得到控制,然而,把这些帧连接起来合成动画时会发 生新的问题: 假设某段动画中没有任何场景的变化,即理想情况下独立渲染的每一帧应该 完全相同,但事实并非如此。考虑相邻两帧的相同位置的像素砭、略1 ,f 代表 帧数,i 表示像素平面上第几行,j 表示像素平面上的第几列。和略1 的采样是 相互独立的,因此计算得到的结果也不会完全相同,在采样增大的情况下,这种 差异会缩小,采样趋近无穷大的时候这种差异趋近于零。这说明,即使动画里的 每一帧渲染的场景相同,它们的渲染结果也会有差异,这样就会导致原本在每一 帧里看起来没有噪声的地方,在合成动画的时候,会有一些不稳定的光照现象的 发生,比如画面的抖动,突然出现的亮斑等。这种由于前后帧的不一致而产生的 噪声叫做时间噪声,而每一帧里固有的噪声叫空间噪声。时间噪声的存在是因为 原本连续一致的场景用离散时间上的帧来表示的时候,由于帧与帧之间是独立渲 染的,没有考虑到它们之间的一致性,因此把这些帧合成动画时会出现时间上的 不一致性。时间噪声的存在是动画渲染面临的最主要的问题之一。 2 6 动画渲染问题的解决原则 时间复杂性问题和时间一致性问题是动画生成过程中面临的最大的问题,所 有动画生成算法都需要解决这两个问题。“复用”是解决这两个问题的基本原则。 对于相邻的两帧或者若干帧,场景的变化往往不大,也就是说,在前一帧中甚至 是前几帧中计算的结果,可用来计算后续帧的光照,从而后续帧的计算量就得以 降低,导致整个动画的生成时间减少。与此同时,由于后续的帧在计算光照的时 候用到了来自相邻若干帧的计算结果,因此这些帧在时间上或多或少的保持了一 致性,从而减少或消除了时间噪声。从当前动画的研究情况来看,几乎所有的动 画生成算法的本质都是“复用 【1 2 】,并且这些算法在降低动画生成时间的同时, 往往会减少时间噪声,即保持了动画在时间上的一致性。 第三章基于p h o t o nm a p p i n g 的动画渲染 第三章基于p h o t o nm a p p i n g 的动画渲染 p h o t o nm a p p i n g 算法能够有效地计算全局光照中的焦散( c a u s t i c ) 和颜色浸 润( i n t e r - r e f l e c t i o n ) 等间接光照现象。本章首先在p h o t o nm a p p i n g 渲染静态图 像的基础上,对图像的光照进行分离,从而分析出图像噪声的主要来源以及图像 渲染时间的主要消耗部分。在使用p h o t o nm a p p i n g 生成动画的过程中,同样面 临着保持时间一致性的问题,一种保持时间一致性的方法是采用固定的随机数来 确定光子的发射方向,但是对于一次反射式的p h o t o nm a p p i n g 算法,固定随机 数生成动画的方法将不再适用,本章对此做了改进,使得一次反射方式计算光照 的方法同样可以使用固定随机数来生成动画,从而在取得更好的图像质量的同时 保持了时间一致性。 3 1 光照分离和噪声分析 全局光照被分解为直接光照和间接光照部分后,通过分析它们的噪声水平和 渲染时间,就可以掌握图像渲染过程中噪声的主要来源和渲染时间的主要开销部 分。对于p h o t o nm a p p i n g 方法,其光照分解有先天优势,因为光子图的存储分 为直接光照,间接光照和焦散光照三种,而光照计算直接依赖于光子图,因此使 用不同的光子图或光子图的组合就可以计算各种类型的光照。 直接光照的计算有两种方法,一种是依据直接光照的光子图使用密度估计来 计算光照,这种方法耗时极少,但是获得的图像质量不高;还有一种方法就是使 用光线追踪,为了提高光线追踪的计算效率和减小计算方差,可以使用重要性采 样的方法计算光源对视点的光照贡献,这种方法比前一种方法耗时要长,但是得 到的图像质量更好。图3 1 中,左边的图像为光线追踪直接光照的效果,每个像 素采样数1 6 ,用时4 1 6 秒。右边图像为p h o t o nm a p p i n g 方法利用直接光子图计 算的结果,每个像素采样数为1 6 ,用时1 9 0 秒。可以看出,在计算直接光照的 时候,虽然直接使用光子图进行计算用时更少,但是光线追踪的直接光照计算有 更好的效果。 第三章基于p h o t o nm a p p i n g 的动画渲染 巴r 巴y 必烈酬 i i i 鲇捌k 捌陟一 密度估计时搜寻的范围也是影响渲染结果的重要参数,搜寻范围越大,图像 越趋向于模糊搜寻范围越小图像越趋向于精细,但是会出现高频的噪声。图 3 - 3 中的三个渲染结果搜寻范围分别为0 5 6 0 ,1 2 0 ,光子图中存储的光子都 为2 0 0 0 0 0 0 ,每个像素采样1 6 ,可以看到在搜寻范围较小时图像比较锐利,但 是噪声比较多随着搜寻范围的增大,图像趋向于模糊。 第兰章基于p h o t o nm a p p i n g 的动碗泣染 必鼬基必划 搜寻范匿05搜寻范围g0 搜寻范田1 20 圈3 - 3 密度估计的光子搜寻范围对渲染结果的影响 间接光照的计算也有两种方法,第一种方法为根据间接光子图使用密度估计 计算光照,第二种方法是用。次反射的方式计算光照。这两种方法的特点为,前 者计算速度快,因为只需要在间接光于图上做密度估计,但是渲染得到的图像粗 糙:后者计算时间长,因为每一个需要计算光照的地方都要进行若干次抽样 然后每个抽样都要根据直接、间接和焦散光子图做密度估计,当然最后得到的图 像质量较好。圈3 4 中,左边的图像为第一种方法的渲染结果,右边的图像是第 二种方法的渲染结果两种方法每个像素的采样为1 6 ,光子搜寻范围4 0 存储 的直接、间接和焦敬的光予数分别为3 0 0 0 0 0 5 0 0 0 0 0 ,5 0 0 0 0 ,计算时间分别为 3 7 秒和1 7 7 4 秒。可以看出前者计算时间很少,但图像质量差,后者计算时间很 长,图像质量很好。可以看出,由透明的物体所产生的焦散效果。以及两边的墙 壁在漫反射物体上的颜色浸润现象都得到了很好的体现。 直接使用光于目一次反射后使用光子图 图3 - 4 计算间接光照时直接使用光子图和一次反射后使片i 光子图的效果对比 第三章基于p h o t o nm a p p i n g 的动画渲染 使_ | 一次反射方式i l 算光照时,一次反射的采样个数会影响图像的质鼙。图 3 - 5 中,左右两图的差别仅在于左边的图像一次采样时的抽样数为4 ,右边的 为3 2 ,可以看小两者图像质量有明显芹别,当然由于后者计算量增加,渲染时 间也会增多,左边的渲染时问为3 35 秒,右边的渲染时间为2 2 4 秒。 翻 目豳冈 第三章基于p h o t o nm a p p in g 的动画渲染 因此可以得出如下结论,间接光照的计算时间占整体渲染时间的绝大多数, 并且整体光照的噪声主要来源于间接光照。 3 2 绑定随机数生成动画及其改进 因为p h o t o nm a p p i n g 的光子发射和保存与视点无关,因此计算只有视点移 动的动画时,所有帧的计算可以共享同一个光子图。但是,p h o t o nm a p p i n g 计算 有物体或者光源发生改变的动画时,情况就变得相对复杂,因为每一帧的光子图 都不相同,因此每一帧的光子图都需要重新建立。一般动画场景的情况介于这两 者之间,场景中的物体有一部分发生了改变,其他的部分保持不变,这样前后两 帧就有一定的相似性,或者说帧与帧之间有时间上的一致性。 目前使用全局光照来渲染动画的方法,往往是根据脚本的描述,像渲染静态 图片那样把动画中的每一帧渲染出来。由于全局光照算法都是基于m o n t ec a r l o 方法进行计算,即计算过程中涉及到随机采样的问题,因此,即使对于同一个场 景,如果使用的随机数不相同,渲染的图像也会有差别。由于动画里的每一帧都 是被独立计算出来的,并且计算每一帧的随机数不会完全相同,因此他们在时域 上的连续性没有被很好的保持,这样的动画看起来就会有抖动,或者某些区域的 亮度有剧烈的变化。 对于用p h o t o nm a p p i n g 方法渲染的动画,假设其前后两帧巧和巧+ l ,有一定 的差别,比如场景中的某个物体的位置不同,如果f :+ l 中的光子完全按照e 中的 光子发射方向进行发射,则巧+ 。中不与移动物体发生碰撞的光子分布就会与e 中 的光子分布相同。这两帧中只有与移动物体碰撞的光子分布不相同。如果动画中 的每一帧的对应光子发射和传播方式都一样,那么相邻帧的光子分布就有很大的 相似性,从而使帧与帧之间没有变化的部分,保持了时间上的一致性。 光子的发射是由随机数来控制的,比如对于一个面光源,可以用两个随机数 选取面光源上一点,再用两个随机数决定光子的发射方向,因此面光源上光子的 发射需要四个随机数。而随机数在程序中是使用种子来产生的,种子其实就是一 个数字,根据某个种子使用一些计算随机数序列的算法,就可以获得各种统计特 性比较好的随机数序列,在随机数序列计算方法相同时,相同的种子所产生的随 机数序列也相同。假设对于同一个场景渲染两次,两次渲染过程中随机数的产生 都使用同一个种子,那么这两次渲染得到的结果必然相同;反之,如果这两次渲 染使用了不同的随机数种子,那么所得到的结果也必然不同。在所有光子发射之 前,会选定个种子来产生随机数,如果每一帧都使用相同的随机数,会不会让 每一帧的光子的发射方式保持一致呢? 答案是否定的。因为对于使用相同随机数 第三章基于p h o t o nm a p p i n g 的动画渲染 序列的光子在不同帧中的相同部分,其发射和传播行为相同,但是如果光子在传 播过程中,遇到了帧与帧之间的有差别的部分,就会在不同帧中表现出不同的传 播方式,也就是说,光子对于随机数序列的使用会因为传播方式的改变而改变, 这样就会导致以后的光子发射所使用的随机数序列不同,从而使光子在不同帧中 的相同部分的分布也不同。如果希望光子能够按照相同的方式发射,就需要给每 个光子都指定一个种子,这样每个光子都有自己固定的发射方式,后发射的光子 不会受到先发射的光子对于随机数序列使用的影响,这样在不同帧的相同部分, 光子的分布不会改变,光子分布的差异只会发生在帧与帧之间的不同部分。 由于采用了相同的发射方式,即使动画的每一帧都只进行粗略的计算,在帧 与帧之间的相同部分也不会发生抖动现象。但是这个方法也有很多局限,比如对 于视点发生移动的动画,就不适合用这种绑定随机数的方法来渲染,因为即使是 同一个光子图,不同的视点位置计算的光照结果不同,这样就会产生时间上的不 一致;并且目前这种方法只适用于直接使用光子图的p h o t o nm a p p i n g 算法,当 采用一次反射的方式使用光子图时,由于一次反射的采样方向是随机选取的,因 此对应像素的光照计算结果会有差异,从而产生时间上的不一致性( 如图3 刁) 。 光源 n l 一, 下一时刻 日 图3 - 7 相邻帧中一次反射的采样方向不同 光源 n l 由于次反射的渲染结果优于直接使用光子图的渲染结果,因此需要在生成 动画的过程中使用一次反射的算法。参考光子绑定随机数的方法,从视点发出的 每条光线,也绑定一个随机数,也就是说,帧与帧之间对应的采样光线使用同一 个随机数种子,这样对于场景中不变化的部分,每帧的一次反射采样的光线方向 是相同的,对于变化的部分,采样方向则不同。这样既保持了未变化部分韵相关 性,又合理计算了发生变化的场景部分。 动画的每一帧是一个静态图像,作为静态图像,人们只能察觉到空间上的噪 声。但是对于动画,由于时间上的一致性没有很好的保持,在图像原本没有噪声 的地方,由于抖动或亮斑,就会给人一种画面质量很粗糙的视觉感受。使用绑定 随机数的方式进行动画渲染时,场景中未变化的部分保持了时间上的一致性,并 且计算过程中使用了一次反射的方法,这样就可以在保持时间一致性的同时,获 n村厂 , , 珈t 丝 心解 第三章基于p h o t o nm a p p i n g 的动画追染 得高质晕的渲染结果。即使单幅图像中有空间噪声,在时间一致性保持较好的情 况下噪声也1 i 易被察觉。图3 8 分别是动画里的第1 帧和第1 l 帧每个像豢 的采样为1 6 ,密度估计使用的光了数为4 0 0 一次反射采样3 2 ,存储的直接、 间接和焦散的光子数分别为3 0 0 0 0 0 ,5 0 0 0 0 0 5 0 0 0 0 ,平均每帧计算时间5 2 0 秒。 第1 帧第1 1 帧 图3 _ 8 使用一次反射的绑定随机数动画渲染结果 第四章基于光线追踪的动画渲染系统 4 1 设计思路 第四章基于光线追踪的动画渲染系统 动画生成过程中面临的最大难题就是时间复杂度和时间一致性问题,而解决 这两个难题的基本原则是“复用”。复用既可以是时间上的也可以是空间上的, 在本节中特指时间上的复用,即把某一帧的采样计算结果用到其它帧上。某一帧 上采样的计算结果叫做原始采样,这个采样在其它帧上复用时叫做复用采样。下 面需要解决的问题就是什么样的原始采样可以被复用。 动画的场景可以被分为两部分,静止部分和变化部分 2 1 】 2 2 】,静止部分指在 整个动画过程中场景没有发生变化,即场景在每一帧里都保持一致的部分,称之 为静态场景;变化部分指场景的属性随时间而变化,称之为动态场景。在某一帧 中,一个原始采样会在场景中追踪出一条光线传播的路径或者带分支的树形路 径,如果路径只与场景的静态部分相交,因为静态场景在每一帧中都一样,那么 在动画的任意一帧所观察到的这条路径是不会发生变化的;反之,如果某一帧中, 光线路径中某一部分与动态场景相交,那么由于动态场景随时间变化,所以这条 路径在其它帧中会发生变化。因此,复用原则是,与静态场景相交的光线可以复 用,与动态场景相交的光线不能直接复用。 由于场景的变化包括很多方面,根据场景的变化特性,复用策略也不一样, 需要从以下三个方面来讨论复用的策略。 4 1 1 视点变化 假设场景中只有视点( 相机) 的属性( 视点的属性包括位置,可视角度,光 圈大小,焦距,快门时间等等) 发生变化 2 8 】,则视点在不同状态时所看到的图 像是不同的,即使视点属性变化非常微小,所看到的图像也是有微小差异的。对 于一个只有视点属性发生变化的场景s ,视点的所有状态为集合 a 口l a 2 ) ,所有视点状态下看到的图像集合为f e e c ) ,a 和f 中的元素一一对应,即有对应关系: ( s ,) 付c 公式( 4 1 ) 第四章基于光线追踪的动画渲染系统 如图4 1 ,对丁相同场景中的同一点p ,相机在不同时刻f l ,f 2 ,的位置不同, 则p 点在两个时刻的成像位置不同,分别为p 1 ,p 2 。如果要在f 2 中复用f l 中 计算

温馨提示

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

评论

0/150

提交评论