(计算机应用技术专业论文)大规模水场景的实时绘制.pdf_第1页
(计算机应用技术专业论文)大规模水场景的实时绘制.pdf_第2页
(计算机应用技术专业论文)大规模水场景的实时绘制.pdf_第3页
(计算机应用技术专业论文)大规模水场景的实时绘制.pdf_第4页
(计算机应用技术专业论文)大规模水场景的实时绘制.pdf_第5页
已阅读5页,还剩61页未读 继续免费阅读

(计算机应用技术专业论文)大规模水场景的实时绘制.pdf.pdf 免费下载

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

文档简介

浙江大学硕士学位论文 摘要 随着虚拟现实、影视动画和电脑游戏的日益普及,大规模水场景的绘制已经 成为一个相当热门和有挑战性的研究课题。虽然在现行的游戏和一些绘制系统 中,水面的绘制已经达到了较好的效果,但是在这些系统中很少看到可交互的水 面模拟,这是由于可交互水面的建模和模拟相当复杂。 本文提出了一种基于g p u 的大规模水场景的高效绘制方法。在波浪模拟方面, 我们采用了基于水体统计模型的f f t 方法,不仅计算出了用于水面网格变形的顶 点三维扰动数据,还计算出了用于水面光照计算的水面梯度场数据。我们将得到 的高度场和梯度场数据平铺到可见区域的网格上以模拟出整个可见水面的波浪 效果。在船的尾迹模拟方面,我们利用采用了“基于g p u 求解二维波动方程的模 拟方法”和“基于粒子系统的模拟方法”两种方法,并对比了两种方法各自的优 缺点。 我们采用了具有良好l o d 性质的“投影网格”方法进行网格建模,并对其进 行改进,我们引入“投影空间纹理”方法提高了高度场数据的利用率和l o d 性能。 我们还对“投影网格”的建模相机进行了改进,使其能在建模过程中减少高度场 纹理的走样并适应非水平相机以及高度变化的水场景。 在绘制部分,我们将波浪部分和尾迹部分的水面高度场与梯度场数据结合了 起来,统一了两者的绘制。并充分考虑了水面的光学特性与皿r 效果完成了绘制 计算。泡沫、飞沫以及焦散效果进一步增强了绘制的真实感。 值得一提的是,我们的网格建模、高度场计算、梯度场计算、网格几何扰动 和光照计算全都是由g p u 完成的,这样就大大减少了c p u 与g p u 之间的数据同步, 使本文的算法达到了实时。 本文第一章简述了水面绘制的研究背景和前人的研究成果。第二章介绍了波 浪与尾迹的模拟方法。第三章介绍了水面网格的建模方法和相应的高度场生成方 法,此外还讨论了对网格建模相机的改进策略。第四章详细说明在基于前两章的 模拟和建模对水面进行真实感绘制的方法。第五章给出绘制流程和实验结果,并 对实验结果进行分析与评价。, 关键词实时绘制;水场景;真实感;粒子系统;投影网格;图形处理单元 浙江大学硕士学位论文 a b s 仃a c t w t ht h ep o p u l a r i z a t i o no fv i n l 】a l 豫d n i e s ,m o “e s ,幽i o m 锄dv i d e 0g a n l e s , 筋t h 伽s i n m l a t i o no fl a r g e - a l ew 撇s 黜h 嬲b e c o m eah o ta n dc h _ a l l g i n gt o p i c i nc o m p 咖g m p l l i c sc o m m l l n i 够 a l t h o u g l lt l l e i sm u c hw o r k r e n d e r i n gw a b 盯 s c e 姗,i ti ss t i nc h a l l e n g i l l gt 0s i i n m a t c 硼删v ew a t 口s 啪ed t oi t sc o m p l e x 蚵 o f m o d e l i n ga n d 瑚d e r i n 辱 ht l l i st h e s i s ,w ei m d u c cag p u a c c e l e m t e da l g 耐l h mf o r 确嘣e r i n gl a r g e - s c a l e w i t e rs 啪e w ea p p l y 缸h 呵m e m ) d ,杜c hi sb a s e d as t a t i s t i c a lm o d e l ,t ot l 地 s i m u l a t i o no fo c e m 啪v e t h m u g hl h i sm e m ( ) d w en o to n l yc o m p u t c3 d d i s p l a c 锄e m f b r 鲫d a c c 面do fw a t e r ,b u ta l g e tt l l es l 叩ed a t a ,w t l i c hc a nb e u s e di n 阳n d 眺go fw a 储w ba p p l y “g p u - b a s c dw a v ee q u a t i o ns i 舢l a t i o n ”锄d ”p a n i c l c - s y s t e m - b 鹊e ds i i 删l a t i o n ”t ot l 圮s i m i l l a t i 吼o fs h j pw a k c ,觚dw ea l s h o w t l l e i r p r 0 锄d c o n s w c 唧l o y 锄l o d - 衔e n d l y f i 刚e c t e dg i i d f t e c h i l i q u ef o rm e 鲥dg e n e m t i o n t bm a k et i l i s 鲥dg e n 啪l i o na l g o r i t h m 锄1 e 1 1 a b l e ,w ef i | n h e ri m r o d 埘:ea ”酬e c t e d t e x t i l r e ”t oi i i l p i o v et h er e n 蛐gq 1 1 a l i 够w ba l i m p v e ”p r 巧e 鼬e d 一面d m e m ” t o m a k c i t 删v e t o n o n - h 面删c 锄啪孤dh e i g h t - v a r i a n t w a 储e n e 鹪w e u 嬲 t 0r e d u c em ea l i 蠲e 雎c to f d i s p l a c e m c l 】tt e = k t i l l _ c s i nt l l er e n d e f i i 培p a r t ,w eu i l i 旬t l l e 啪d e r i i l go fb o t l lo c e a nw a v ea 1 1 ds 1 1 i pw a | r e b y j o i n 吨m e i rh e i g h tf i e l dd a 协锄ds l o p c 舶l dd a 饥w j 鲥l yc o n s i d e rm eo 砸c c h a m c t e r i s t i ca n dh d re 侬圮to fw a t e rw h d o i n gt l 圮触r i l l g f o 锄,印r a y 觚d c 8 u s t i c sf i l | 恤e r 髓i l a n c et l l er e l l 捌n gq l l a m y t om 址汜o mw a t e rs i m “l a t i o n 孤dr e 玳l a 曲g a 1 t m ,嘶dg e n 吲i i o n h e i g h t f i e l dc a l 叫a t i 咀s l o p ef i e l dc a l c u l a t i o l l ,鲥dd i s p l a c e m 咖觚dr e n d 醯喀躺a l l p r o c e s s e d b yg p u ,w h i c hg r e a u yr e d u c em es y n c h r o 血卿i o no f c p u 髓dg p u hc h 印t e rl ,w e 百v eab r i c fr e 啊e wo fm e 北l a t e dw o r k w ct l l c ni l l 仃o d u c e s i i n u l a t i o na l g 硎t 1 1 r n s f o r o c e 锄w a v e 锄ds h j p w a k e i n c h a p t e r2 h c h a p t e r3 ,w e p r e s e n to i l rm e t i l o df o rg c n 馓廿n gg r i d 锄dh e i g h tf i e l d ,a n dd i s c 璐st h e 舳e t 0 i m p r o v e ”p r o j e c t e d g r i dc 锄e r a ”w bd e s c r i b eo l | rr e n d e r i r l ga p p r o a c hi nc h a p t e r4 t h ei n t e 刚e ds i i l m l a t i o np j p e l i n ea n de x p e r i m e n t a lr e s l l l t sa m 西v e ni na h a p t e r5 k 叮w o r d s r e a l - t i i n er e n d e r i n g ;w 舭rs c e n e ;p h o t o r e a l i s t i c ;p 枷c l es y s t e m ; p r o j e c t e dg r i d ;g p u 浙江大学硕士学位论文 图目录 图目录 图1 1f o s t e r 和m e t a x a s 的方法4 图l - 2l o v i s c a c h 基于卷积的水面模拟算法绘制结果。5 图1 3n i s h i d a t e 的带衰减的波动方程的水面模拟算法绘制结果。5 图l - 4h i n s i n g e r 的适应性方案的水面模拟绘制结果6 图1 5k i p f e r 和w e s t e 瑚a n n 的基于物理的河流模拟6 图1 6 水底的焦散现象7 图1 - 7 水中的太阳光束7 图2 1 将高度场应用到网格上1 0 图2 2 生成的水面高度场( 左) 和梯度场( 右) 1 3 图2 3 带有水平方向位移的波浪( 左) 和仅有高度位移的波浪( 右) 1 3 图2 4 一张生成的带有水平位移高度场( 对应于图2 2 ) 1 4 图2 5 用g p u 求解水面波动方程的崩溃情况1 7 图2 6 开尔文尾迹和船尾尾迹1 8 图2 7 基于粒子系统的尾迹模拟算法示意图1 8 图2 8 粒子图样( a ) 和( b ) 1 9 图2 9 利用粒子系统模拟尾迹的水面高度图2 0 图2 1 0 未扰动相位的绘制效果2 1 图2 1 l 扰动相位后的绘制效果2 l 图3 1g e 伽i p m a p p i n g 。2 3 图3 2g e o m e t r yc 1i p m a p s 2 4 图3 3 以视点为中心的网格建模示意图2 5 图3 - 4 以视点为中心的网格建模算法的绘制结果2 5 图3 5 物体空间、景物空间、视点空间、透视空间的关系2 6 图3 6g p u 计算网格时的半像素问题2 7 图3 7 简单的“投影网格”建模算法带来的纹理浪费2 8 图3 8 引入“投影空间纹理”避免了纹理资源的浪费2 8 图3 9 投影空间中建立的高度场2 9 图3 1 0 使用改进的“投影网格”建模算法的绘制效果2 9 图3 1 1 ( a ) r o l l 旋转( b ) r o l l 旋转后的相机与水平面求交3 1 图3 1 2 高度变化水面的可见范围与水平水面的可见范围不同3 1 图3 1 3 相机处理流程3 2 图3 1 4c h m 。跟翻m ,在投影空间上的关系3 2 图3 1 5 合并梯形区域3 3 图3 1 6 根据基准水平面上梯形区域耳的生成d m 。3 4 图3 1 7 计算高度变化的水面的可见范围3 4 i 浙江大学硕士学位论文图目录 图3 1 8d 肘。与c h m 。的关系3 5 图3 1 9c 疆m 。下观察通过翻m 。生成的网格3 6 图舢l 展开的c u b em a p 3 8 图4 2 水和空气介面处的光线传播3 9 图4 - 3 水和空气间的菲涅尔反射系数( a ) 和( b ) 4 0 图4 - 4 未使用皿r 的绘制结果( 反射的太阳非常昏暗) 4 1 图4 5 使用了皿r 的绘制结果( 高亮的反射太阳) 4 1 图4 6 泡沫纹理4 2 图4 7 障碍物影响4 3 图4 - 8 焦散现象模拟4 3 图4 - 9 焦散纹理序列4 4 图5 1 所实现系统的数据处理与绘制流程4 5 图5 2 绘制系统数据流图4 6 图5 3g p u 求解波动方程的水波模拟结果( a ) 、( b ) 4 8 图5 - 4 基于粒子系统的水波模拟结果( a ) 、( b ) 4 9 图5 5 对可见水面范围内所有尾迹的模拟( a ) 、( b ) 。5 0 图5 6 最终绘制结果( a ) 、( b ) 、( c ) 、( d ) 5 2 浙江大学硕士学位论文袁目录 表5 1 表5 2 实验平台和环境 绘制速度对比图表 表目录 v 。4 7 。4 7 浙江大学硕士学位论文第l 章绪论 第1 章绪论 1 1 引言 江河湖海是大自然的重要组成部分,无论是波涛汹涌的大海、奔腾不息的江 河还是清波浩淼的湖面都给人以美的享受。毫无疑问,水面的实施真实感绘制能 够大大丰富场景的感染力。早期的工作将水面看作一个完全的平面,并通过纹理 表现水面的光照效果。这样的水面显然缺乏三维动态真实感。随着图形处理硬件 绘制能力的提高,三维视频游戏普遍采用图形硬件来生成更加真实的画面,而水 的效果作为提高用户视觉体验的最重要的因素之一,其绘制的重要性也逐渐凸现 出来。 在水面绘制过程中我们必须考虑到其独特的性质: 水是动态的。水时刻都在运动,因此每帧都必须对水面的形状进行更新。 水面尺寸一般相当大。在绘制大规模水面如海洋时,必须使所建立的水 面网格沿着地平线延伸至可见的最远距离。 水面的真实感绘制要求考虑水的物理光学属性,如菲涅尔系数,即折射 光与反射光的比例,正是这种比例让绘制出的水面既波光粼粼,又有透 明的效果。 在三维视频游戏中,为了降低绘制负荷,水面往往被限制在一个小的区域内。 水面的动态模拟也尽可能采取简化,而且极少考虑交互动画。显然,这种技术绘 制出来的水面不够真实。当前,许多水面绘制系统都采用几何扰动技术来进行水 波的模拟,尽管这种模拟技术比较粗糙,但已经能生成比原来真实许多的水面。 本文的目标是模拟水面上的波浪和船行驶所产生的尾迹,并将两者的建模与 绘制统一起来,可以得到逼真的水场景绘制效果。 1 2 水波建模技术简介 水波建模的方法通常包括: 基于波的分析。直接构造参数曲面来代表水表面,参数曲面由波形函数 表示,例如= = ,( x ,y ,f ) = 4 s i n ( q f + 以) ,其中4 、q 和办都随时间 l = 0 变化。由于波形函数本身就反映了波的属性,因而可以模拟水波的运动, 如波的叠加、反射、折射现象。更复杂一些的波形函数可以解决波纹的 波峰卷曲问题,但解决不了水波的形状破碎问题。虽可通过波的振幅等 浙江大学硕士学位论文第l 章绪论 随时间变化实现一定的动画,但效果不佳。 基于物理模型的波浪模拟。用流体力学方程来描述水流的运动,例如常 用的n a v i * s i o k 鼯方程来建立浅水波模型,用计算流体动力学中数值分 析工具来求得方程的数值解,然后由数值解得到水波的形状。这种方法 中,波是根据方程的初始条件与边界条件自动生成的,接近真实的物理 现象。但由于把水流的形状当作一个高度场,所以难以表现陡峭的波峰 及卷曲的波形。如果采用三维的n a v i * s t o k e s 方程,把水流看作由许多 水粒子组成的点集,则需要采用体绘制的方法来绘制水波形状,从而影 响绘制效率。 基于粒子系统的波浪模拟。把水流看作一个个粒子,每个粒子都按一定 规则行动。基于这种离散的水粒子可以模拟瀑布、喷泉和水滴。所面临 的问题在于如何绘制粒子。将粒子绘制成一个个的点或者小球或者线段 是不够真实的,绘制成曲面则显然又不可行,因为它们并不像池中的水 那样聚在一起形成一个连续的整体。比较好的办法是绘制许多的隐式曲 面,使相距近的水粒子融成一个隐式曲面,相距远的分别绘制成小水球。 波浪与环境交互效果的模拟。例如,光线照射至波的表面时形成的反射 和折射;在不同深度的水底处形成的阴影和焦散现象( c a u s t i c s ) ;水中遇 到障碍物时,水波会发生相应的变化,形成不同的轨迹和波浪形状等等。 1 3 相关工作 在计算机图形学和海洋学的文献中,有相当一部分是关于水面模拟、水面动 画和水面绘制的。下面将分三块分别介绍在波浪模拟、尾迹模拟和环境交互效果 模拟方面的相关工作。 1 3 1 波浪模拟 f o u r i l i e r 和r e e v 髓曾经基于深海小振幅波提出一个简单的海浪模型。在这个 模型中,风作为扰动力,重力作为回复力。这个模型可以产生深海中的折射和击 岸波的效果。鼬n k i n e 0 1 曾提出一个模型,根据海浪变化的圆周轨道参数产生海浪, 并考虑海底对海浪的折射和海浪破碎的效果。水沫和浪花由粒子系统来模拟。这 个模型不用解流体差分方程,但是只能产生比较简单的海浪,而且也不能保证实 时性。 d a n i i lp e a c h e y 讲的模型基于两个方程:波相位方程和轮廓线方程。波相位方 2 浙江大学硕士学位论文 第l 章绪论 程用来模拟波的折射、浅水中的波浪速度和波长的变化。波轮廓线方程根据波的 斜率和水深,控制波形,水沫由粒子系统来模拟。虽然这个模型不需要解流体差 分方程,但仍无法达到实时。 p 盯l i n 提出用噪声合成的方法来模拟海洋的表面咖。m a g t e m 嘲等在1 9 8 7 年发 表的一篇关于海洋光学的文章中提出了一种利用f o 血e r 变换来合成一块水波区 域的方法。用户可以指定这块区域的大小和分辨率,在生成水波块之后可以将其 平铺在一个巨大的海域上。合成的高度场其实是由许多的正弦波叠加而成,但是 由于合成过程参考了海洋的统计模型以及经验模型,并且使用了相当多的正弦 波,因此其结果显得非常自然。 t s o 和b 锄埘”在海浪方程基础上提出了一个模型。在他们的模型中,用b 样条曲线来描述水面,用纹理映射通过光线跟踪来产生反射。 l 【嬲s 和m i l l e r 。1 用简化了的浅水方程提出一个实时的波浪模型,并且可以处理 波浪的折射和反射。在这个模型中,将水平面均分成网格,网格上的每一个点都 代表一个水柱体。已知每个水柱体的方向和速度,网格点上的水柱可传递给邻近 网格点,并保持水的体积守恒。由于这个模型中的每个网格点的波浪高度都是由 恒定传播的波叠加而成的,所以无法控制水的层流( i a m i n a r ) 和湍流( t l 】r b l l l e m ) , 同时也无法控制与白推动物体的交互。随后,i ,a y t o n 和、d ep a n n c 嗍对这种方 法进行了改进,使其可以被应用在非线性的水平对流中。 c 锄p b e n ”对 沁s 的模型进行了扩展,通过加入位移和产生涟漪来模拟物体 浮在水面上的效果。由于l ( 嬲s 模型本身使用简化后的差分形式,使得网格点上的 高度值并不准确,而且会由于体积守恒定律而产生一些变形。 n i c kf o s t 盯和d i i i l i t r im 吨髂“1 1 在立方体域内求解完整的三维 n a v i 昏鼬妇s 方程。通过使用基于有限差分的方法的m a c ( m 矾澍i nc e l l ,标记 格子法) 方法求解此方程,得到一个速度场,然后用这个速度场驱动已标记的、 无质量的粒子运动,从而得到流体的运动状态。流体的形状可以通过追踪这些粒 子的位置得到,也可以用高度场表示成曲面。由于解域是三维的空间,考虑到随 着单位分辨率的提高会导致计算量的增加,所以取低分辨率的解域。通过这个低 分辨率的立方体网格计算出流体的速度场与压强,然后由这个低分辨率速度场和 压强计算一个高分辨率的水表面。在使用有限差分法计算时,每个离散的小立方 体( c e l l ) 被做上四种标记,分别是固体立方体、液体立方体、边界面立方体和空 立方体,分别给它们赋上速度与压强的初值。在随后的计算中,他们被不加区分 地统一处理,以提高计算效率。 浙江大学硕士学位论文第1 章绪论 图1 1f o s t e r 和m e t a s 的方法 小峡谷里的波浪 s t 鼬n 3 1 独辟蹊径,使用了计算稳定的算法来实现n a v i * s t o k 髂方程,并利用 f 叫r i c r 变换对方程进行了简化。但是这种算法只能应用在固定边界的水面上。继 而,f o s 衙和f e d l 【i w “”将s t a m 的求解方法与使用标记粒子跟踪水面的方法结合。 w j i m e r 和w 撕姐“”发现某种多格点差分求解器可以通过适量细分的方法进行公 式化。 1 3 2 尾迹与交互模拟 g o s s “6 1 提出了一种用粒子系统对船的尾迹进行实时绘制的方法。m “”通过 将沿着船行驶路径上的点逐渐放大为圆形波来模拟船的轨迹。o b r i c n 和 h o d g i l l s “”把水体建模成一组可以互相交换流体的正方形底面柱体。如果一个柱体 内的向上水流速度超过阈值,即生成水花。为了达到实时的绘制效果,c h e n 和 l 0 b o 用二维的n a v i * s t o k e s 方程替换了三维的版本,通过计算局部压力来驱动 高度场的变化。 l o “a c h 例在2 0 0 2 年提出了一种基于卷积的水面交互算法,这个算法不仅能 够处理由重力作用产生的大型波浪,而且对于细小的波浪也能够做很好的模拟。 但是这个算法有两个比较大的缺点。首先,它不可能实时。为了对整个交互水面 区域进行精确的模拟,通过卷积计算反映出整个水体的能量传播状况,并且能够 适用于各种采样时间间隔,需要选取一个相对较大的卷积区域。然而当交互区域 的大小和分辨率都较大时,这样的卷积计算相当费时。其次,对于这种在景物空 间进行的卷积计算,一般只能被用在相对较小的局部区域。这种方法并不适用海 洋等大型水面的模拟,因为我们不可能在保持细节的情况下对所有可见区域进行 4 浙江大学硕士学位论文第1 章绪论 卷积操作。 图1 2l 0 v i s c a c h 基于卷积的水面模拟算法绘制结果 n i s l l id a _ t e 。”等提出了一种使用带衰减的波动方程的方法来快速模拟水面交互 动画。作者采用了一个二维的波动方程来计算高度场的有限差分,通过计算使水 波的高度随着时间的流逝而降低。算法完全基于c p u 进行计算,并能够达到实时。 图1 3n i s h i d a t e 的带衰减的波动方程的水面模拟算法绘制结果 h i m i n g c r 魄1 等采用了一种适应性的方案对辽阔的海洋进行绘制,该算法根据 一个波浪的过程性模型来描述水面格点的位移量,并且支持局部的交互动画。 浙江大学硕士学位论文第l 章绪论 图l - 4h i n s i n g e r 的适应性方案的水面模拟绘制结果 p 衙和w e s 搬脚越嘲用光滑粒子表示水,提出了一种基于物理的河流模拟 与真实感绘制方法。算法通过求解相邻粒子间的碰撞情况,实现了一种无网格的 高效模拟方法,并通过重建粒子表示的流体表面来进行绘制。算法可以达到实时, 并可以被应用于三维视频游戏和虚拟现实系统中。 图1 - 5k i p f e r 和w e s t e r m 8 n n 的基于物理的河流模拟 1 3 3 环境效果的模拟 水是透明的,且又是具有流动性的液体,对于阳光和自然光都有难以捉摸的 反射、折射作用,从而形成各种奇妙复杂的光影现象。例如在水中不断晃动的阴 影( s h a d o w ) 、焦散现象( c 羽腮t i c s ) 和阳光光束( 黜l b e 锄s ) 。通常的整体光照模 型及光线跟踪法是难以模拟出这种效果的,因此人们研究更加复杂、更加优化的 方法来模拟它们。 6 浙江大学硕士学位论文第l 章绪论 图l - 6 水底的焦散现象 图l 7 水中的太阳光束 m a r k w 砒嘲1 出色地模拟了阳光照射在水波上形成的光影现象。在全局光照模 型中,两个曲面之间的光线传播有四种情形,分别是: 1 由漫反射到漫反射 2 由漫反射到镜面反射 3 由镜面反射到镜面反射 4 由镜面反射到漫反射 传统的光照模拟方法有光线跟踪法( r a yn a c i n g ) 和辐射度法( r 丑d i o s 姆) 。 光线跟踪法能很好地处理情形2 和情形3 ,辐射度法能很好地处理情形1 。但光 线跟踪法在处理光线漫反射时会遇到困难,会忽视入达某点的许多漫反射分量; 而辐射度法则在处理镜面反射光线时会遇到困难,也就是说,难以很好地处理情 形4 中的光能传递。 虽然许多学者对波浪的反射和折射有较完整的定义,但真正准确地计算需要 求解很复杂的全局光照方程,这样很难做到实时。因此在这里我们采用一个只考 虑一次光线的简化方程。这个方程与j e n s e i l 嘲提出的方程很相似,文中提出了一 7 浙江大学硕士学位论文第l 章绪论 个基本的反射公式并且使用这个公式来查找相应的立方体贴图纹理。 t e s n d o r f 【嘲对焦散现象作了一个基本的介绍,给出了焦散的一个定义。由于 水底的起伏不平,使得照射到水面的光线经过水的折射,在水底产生了聚焦或是 散焦。假设光线的入射强度为厶,置是根据水底深度而变化的系数,则焦散面上 的光照强度为,= r 厶。 1 4 本文工作 我们的工作成果概述如下: 我们提出了一种基于粒子系统的尾迹模拟方法。这种方法相对于基于物 理计算的方法在效率上有着明显的优势。由子粒子图样可以编辑,我们 的方法可生成各种形式的尾迹,以逼近真实水面的效果,并将其应用到 大规模水场景的绘制当中。 我们改进了j o h 觚s o n 口力的“投影网格”方法,使其能应用于更加复杂的 场景。“投影网格”方法可用来高效地绘制大规模水面,并且有着自适应 的l o d 能力。但是该方法还不够完善,不能处理与水中物体的交互。此 外,它对于复杂场景没有适应性,不能使用在有陆地的水场景或者高度 有变化的水面上。此外,“投影网格”方法中使用的相机定义局限性很大, 即相机不允许绕视线轴旋转,这样就不能满足如飞行模拟等三维游戏对 于相机的自由度要求。本文针对该算法的缺陷进行了改进,达到了非常 高的适应性,可以被用于各种形式水面的绘制。 我们将波浪模拟与尾迹模拟产生的高度场与梯度场数据统一了起来,表 现更加真实的水面效果。在大部分绘制系统中,水面绘制程序利用法向 纹理来计算水面的光照效果,而法向场不能像高度场那样直接进行叠加, 这就为波浪高度场与尾迹高度场叠加后的水面光照计算带来了困难。本 文用梯度场来代替法向场,并提出了一套通过对梯度场进行叠加并计算 出最终法向的方法,成功地统一了波浪和尾迹模拟和绘制。 1 - 5 本章小结 本章首先介绍了水面绘制的研究背景,以及前人在水场景模拟和水交互模拟 方面已有的成果,并在此基础上提出了一系列新问题以及我们的解决方案和成 果。 8 浙江大学硕士学位论文第2 章波浪与尾迹的模拟 第2 章波浪与尾迹的模拟 自然界中的水波形成相当复杂,往往受引力、风、船、障碍物等多种因素影 响,因此水波的精确模拟涉及到多个物理模型。对于一个实时绘制系统,出于绘 制效率考虑,不可能考虑到如此多的模型,而且对于所采用的物理模型,也有必 要作一定程度的简化。 在我们的系统中仅考虑了对海洋波浪和船行驶尾迹的模拟。对于海洋波浪的 模拟,我们将给出一种基于f f t 的波浪模拟算法。对于船尾迹的模拟,我们介绍 两种模拟方法,分别是“基于g p u 的求解二维波动方程的模拟方法”和“基于 粒子系统的模拟方法”。我们的系统最终采用了“基于f f t 的波浪模拟方法”和 “基于g p u 的求解二维波动方程的模拟方法”。 2 1 高度场与梯度场的概念 高度场和梯度场是我们的系统用于扰动网格和计算光照的两种数据。因此在 说明具体算法之前,我们先介绍一下高度场和梯度场的概念,并给出一个通过高 度场来计算梯度场的方法。 水体可以采用体素表示,体中的每一个体素要么在水中,要么不在水中。但 这种表示方法有信息冗余,其实我们只需知道水面的形状,即水体和空气之间的 边界,就可以将水绘制出来了。水面可以简单地用一个高度场来表示( ,胛) 。高度 场是一个函数,给定某个二维空间上的点,即可求出该点的高度。公式( 3 1 ) 揭 示了如何使用高度场来对三维空间中的平面进行扰动。 p k 姊批w b ,f ) = p 脚。b ,f j + 品b ,f j 咖。 ( 3 1 ) 高度场有很多优点,它便于使用,也容易找到合适的数据结构进行存储。一 般我们会将高度场存为一张纹理,即高度图。通过高度图来绘制平面的过程通常 称为位移纹理映射( d i s p l 删n t - m 叩p i n g ) ,平面上的格点通过对高度图进行采 样来进行高度扰动。 浙江大学硕士学位论文第2 章波浪与尾迹的模拟 图2 1 将高度场应用到网格上 下面我们简单介绍一下梯度场的概念。这里所说的梯度指的是当前点在两个 互相正交的方向上的方向导数所组成的向量。如果设三维坐标系统中,y 为高度 方向,x 和z 为水平面的两个正交方向,水面高度场函数为y = 八而z ) ,那么梯度 的定义就是砂= 罢f + 芸7 。其中7 和了为x 方向和z 方向上的单位向量。我们 可以对整个交互区域的梯度进行离散采样得到我们所需的梯度场。 基于以上对于梯度和梯度场的定义,可以利用已知的高度场数据来计算梯度 场。由于我们的采样是离散的,因此对于某一点后的梯度瓦的计算公式为: 瓦2 滁纠 ( 4 1 ) 2 2 波浪模拟 由于波浪模型的复杂性,以现有的硬件计算能力,尚不能做到对其进行实时 模拟。因此我们采取了预计算生成一块区块的波浪高度场序列,并在绘制过程中 将这一个区块的高度场数据平铺到整个可见区域的网格上。下面介绍一种基于 f i 叮的波浪高度场生成方法。 2 2 1 统计模型和f 0 l l r i e r 变换 海洋学家通过经验观察获取了一些水体的统计模型,这些模型可以描述不同 气候环境下的水波频谱,这些频谱通过f o l l r i e r 变换过滤2 d 噪声,可以用来高效 计算二维的高度场。在统计模型中,水波高度被认为是与水平位置和时间相关的 随机量矗( p ,f ) 。统计模型把高度场分解为一系列正弦或者余弦函数的叠加。这些 分解出来的函数振幅有着良好的数学和统计方面的性质,使我们建立模型时更加 方便。在计算上,分解一般采用快速f o i l r i e r 变换( f f l r ) 。 1 0 浙江大学硕士学位论文第2 章波浪与尾迹的模拟 基于f f t 表示的水波高度场用矗( 热f ) 来表示f 时刻在水平位置p = 如力上复 数域上所有正弦函数值的和: ( p ,) = ( _ i ,) e x p p ) ( 2 2 ) 在这个公式中,表示时间,f 是一个二维向量f :( t ,屯) ,t = 孕, k 免= 等,一和m 满足一警刀 ,( ,为粒子生命周期) 的时候,粒子即过期。 2 在每一帧开始前,对每艘船生成新的粒子,将粒子赋初值,并加入粒子 列表。 3 将所有当前活跃的粒子以粒子图样为纹理作为矩形图元绘制到目标上, 目标一般为一个正方形帧缓冲区( 丘锄eb u 僚f ) ,这个缓冲区接下来将被 用作高度场来生成其他数据并被用于绘制。绘制过程中打开透明度混合 ( a l p l l ab l 锄d i i l g ) ,并将混合源和混合目标的混合因子都设为1 ,这样所 有粒子在同一位置的高度就会被叠加起来。 4 得到了高度场以及梯度或方向场以后,对水面进行绘制。 图2 - 9 利用粒子系统模拟尾迹的水面高度图 ( 分别对应于图2 9 的粒子图样) 观察该方法的绘制效果以后,发现绘制效果并不理想,原因是尾迹的形状相 当死板,几条水波硬生生地向两边移动,没有流体运动的感觉,为此我们对高度 计算结果进行了调整。我们为每一个粒子在生成时赋了一个随机的相位,并对粒 子做了一个与时间以及随机相位相关的扰动。高度计算公式变更为 q = 口日晡f k c o s ,。+ 纠 ( 3 1 2 ) 其中国是扰动的角速度,妒是扰动的相位。 浙江大学硕士学位论文第2 章波浪与尾迹的模拟 可以看到,加入基于相位的扰动的水波自然、活跃多了。 图2 1 0 未扰动相位的绘制效果 图2 - 1 1 扰动相位后的绘制效果 基于粒子系统的尾迹模拟算法相对于计算波动方程的算法,不仅方便、高效、 稳定、可控,而且有很广泛的适应性,下面一节中将会证明这一点。 2 4 本章小结 本章首先引入了高度场和梯度场概念,接着介绍了经典的波浪模拟方法一 “基于f f t 的波浪模拟方法”和用于模拟尾迹的“基于g p u 的求解二维波动方 程模拟方法”和“基于粒子系统的模拟方法”,并对这些算法的具体实现做了详 2 1 浙江大学硕士学位论文 第2 章波浪与尾迹的模拟 细的说明。根据实验结果,可以看到“基于粒子系统的模拟方法”相对于“基于 g p u 的求解二维波动方程模拟方法”在模拟效果上有着明显的优势。 浙江大学硕士学位论文第3 章水面网格建模 第3 章水面网格建模 对于波浪模型,我们可以只对一个较小的区块生成高度场,然后将这个高度 场在景物空间上无缝平铺到整个可见水面区域上。而对于尾迹模型,我们不能采 取这样的方法。在有大量船行驶的水场景中,水面的任何一个地方的尾迹波浪状 态都不一样。而且,由于存储资源和计算资源的限制,依据传统的建模方法对大 范围水面进行高分辨率的交互计算并不可行。本文引用了具有良好l o d 性质的 “投影网格”建模方法,并对其进行多方面的改进。我们还提出了“投影空间纹 理”的方法,以配合“投影网格”达到更好的绘制效果。 本章的内容将分为两部分。第一部分讨论针对有大量船尾迹交互的水面网格 的建模方法和相应高度场的生成方法。第二部分提出了一系列对“投影网格”方 法的适应性改进。 3 1 层次细节( l d d ) 一个优秀的建模算法应很好地考虑l o d 效果,利用有限的资源高效率地绘制 出更多的细节。常见的l o d 根据与视点之间的距离对网格进行不同分辨率的切 分。这种方法中分辨率的变化是离散的,上一级网格的分辨率一般是下一级网格 分辨率的两倍。g e o m i p m 印p i n g m l 通过预处理计算每个网格的细节层次。 图3 1g e i p m a p p i n g 虽然l o d 的概念看上去十分简单,但实现的过程中还需处理许多问题,比如 在细节层次切换时就会造成走样。在相机移动的时候,由于会产生频繁的细节层 浙江大学硕士学位论文第3 章水面阿格建模 次切换,因此画面的各处会不断发生突变,这种突交是由于新的细节层次与先前 的不一致引起的。在不同细节层次之间还会由于存在t 连接区域产生不连续,需 要用退化三角形进行连接。 e 时c l i p m a p s 嘲里提出了一种新的l o d 方法,它以视点为中心的生成嵌 套的均匀网格。用这种方法绘制出的地形不但简单、连续、稳定,而且还支持数 据压缩和细节合成。 图3 - 2g e e t r yc l i p a p s 3 2 水面网格的建模 3 2 1 以视点为中心的网格建模 对于大规模水面的交互模拟,我们最先想到的方法就是以视点为中心的网格 建模方法。这个方法简单直观,且能够达到一定的l o d 效果。 如图3 - 3 ,我们在以视点为中心建立一块区域,这块区域被称为可交互区域。 在可交互区域的外面包裹着一块范围相当广的延伸到可见的最远处的矩形,这块 区域不进行交互,被称为非交互区域。在可交互区域的外圈一定宽度的范围建立 衰减区域,使得可交互区域和非交互区域能够无缝地连接在一起。 浙江大学硕士学位论文 第3 章水面网格建模 图3 3 以视点为中心的网格建模示意图 只有位于可交互区域的船才会对水面进行交互,而非交互区域的船不会对水 面造成扰动。由于可交互区域是以视点为中心的,用户可以很清晰地观察到附近 的水面尾迹情况。为了保留可交互区域的细节,它的面积不能很大。虽然这种建 模方法已经能够达到较好的绘制结果,但还是存在一个严重问题。如果我们把相 机拉到较高的位置,那么初始设置的交互区域的大小可能就不够了,我们看到的 大部分区域都将是没有被扰动的非交互区域。有一个解决方法就是将交互区域的 大小根据相机高度等比例放大,但是这还是不能解决所有的问题。改变交互区域 的大小会引起纹理细节粒度的变化,导致绘制结果闪烁或者走样。相机的移动也 会引发相同的结果。 图3 - 4 以视点为中心的网格建模算法的绘制结果 浙江大学硕士学位论文第3 章水面网格建模 3 2 2 基于g p u 的。投影网格。建模算法 g e o m 哪c l i p l n a p s 是一种相当优秀的l o d 地形建模算法,不过研究过程中 我们采用的是。投影网格”( 喇e 曲e d g r i d ) 的方法嘲。这种方法实现简单,能高 效生成,而且有很大的改进空间。 在介绍“投影网格”算法之前我们先来了解一下顶点变换以及物体空间、景 物空间、视点空间和投影空间( 屏幕空间) 之间的关系。在三维绘制过程中,模 型的顶点在被绘制到屏幕前要经过三个矩阵变换,如图3 5 ,这三个矩阵分别为 m 删、肘。、肘。,他们先后将顶点从物体空间变换到景物空间、视点空 间和投影空间。投影空间也被叫做屏幕空间,“投影网格”就在该空间中生成。 习广1 厂1 唧,马 l 物体空间卜_ m 刊最物空闻卜m 刊视点空丽卜i p t ,一投影空i 霹 邑五;= i q 正。翻垃茹;叫- t 翻譬;三趟也- ;。乏i ;盈 图3 - 5 物体空间、景物空间、视点空间、透视空间的关系 绘制的细节是最终体现在投影空间上的,因此如果能够使建模生成的网格充 分符合投影空间上各个像素位置的细节层次,这样的网格无疑是最有效率的。“投 影网格”就是这样的一种方法,使用这种方法可以建立一个在投影空间上均匀的 网格。通过“投影网格”进行绘制的方法如下; 在投影空间建立一个与视线垂直的均匀网格平面 将平面投影到景物空间上的一个平面上 根据高度场对景物空间上的顶点进行位移 绘制投影平面 对于这种方法,每当相机发生移动或旋转,网格上的格点位置就要发生改变 并被重新计算。如果这样的计算频繁发生,当网格分辨率较大时,对c p u 资源的 消耗是相当大的。庆幸的是,投影网格的计算完全可以利用g p u 通过一次绘制 计算出来,并通过像素缓冲( p i x e lb 曲融o b j e c t ) 转换成顶点缓冲( v e r t e ) 【b u 虢r o b j e c t ) 进行网格绘制。利用g p u 计算投影网格的方法与c p u 计算的方法有所不 同,但也相当简单,而且能够在计算出格点位置的同时计算出格点的纹理坐标。 方法如下: 将视域四棱锥( 鲕s t l 加) 与水面所在平面求交,得到四个交点 进行一次绘制,画一个覆盖整个屏幕的矩形,将四个交点的位置作为矩 形四个顶点的属性传入、讯懿s l 协d e r ,变换矩阵为单位阵,另外传入一个 矩阵嬲,为当前相机的w o r l d - v i e w - p r o j e c t i o n 变换矩阵。 浙江大学硕士学位论文第3 章水面网格建模 在v e n e x s h a d e r 里对属性项里的顶点位置用矩阵m 。进行变换,然后经 过栅格化层在屏幕空间中进行插值计算。 在f 娜驷e n ts 1 1 a d c r 里,经过矩阵m 勘的变换就可以得到顶点位置,再通 过对顶点位置进行位移缩放变换,就可以得到相应的纹理坐标。 在利用g p u 计算网格时需要注意的一点是半像素问题,如果前面提到的方法 中绘制的是一个正好覆盖住屏幕的矩形,那么计算得到的网格会在绘制时在绘制 区域的边缘位置留下半个像素的空白,因此绘制时必须将矩形向宽度方向和高度 方向分别扩大习未面和习未面,w 和h 为网格顶点的列数和行数 网格酝域 屏幕区域 图3 6g p 【i 计算网格时的半像素问题 接下来我们要做的是将高度场叠加到网格上。水平方向视

温馨提示

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

评论

0/150

提交评论