(计算机应用技术专业论文)基于粒子和波的水行为模拟.pdf_第1页
(计算机应用技术专业论文)基于粒子和波的水行为模拟.pdf_第2页
(计算机应用技术专业论文)基于粒子和波的水行为模拟.pdf_第3页
(计算机应用技术专业论文)基于粒子和波的水行为模拟.pdf_第4页
(计算机应用技术专业论文)基于粒子和波的水行为模拟.pdf_第5页
已阅读5页,还剩50页未读 继续免费阅读

(计算机应用技术专业论文)基于粒子和波的水行为模拟.pdf.pdf 免费下载

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

文档简介

d e p a r t m e n t : q 幽巳型! 金 s i 呈d 皇坌d 旦! 皇b d q ! q g y m a j o r :q 幽巳垡! 金【巳巳! i 坌! i q d ! 皇b d q ! q g y r e s e a r c ha r e a : q 幽巳垡! 呈 鱼 坌巳b l s u p e r v i s o r :墨墨q 妄l 坌! 呈 q h 坌i 苎b 金凸g ! = i s t u d e n tn a m e :h u is u n o c t ,2 0 1 0 邀奇粒专甬胡皇两冰笱芍梗机1 人 系本人在华东师范大学攻 读学位期间在导师指导下完成的硕士博士( 请勾选) 学位论文,本论文的研究成果归 华东师范大学所有。本人同意华东师范大学根据相关规定保留和使用此学位论文,并 向主管部门和相关机构如国家图书馆、中信所和“知网”送交学位论文的印刷版和电 子版;允许学位论文进入华东师范大学图书馆及数据库被查阅、借阅;同意学校将学 位论文加入全国博士、硕士学位论文共建单位数据库进行检索,将学位论文的标题和 摘要汇编出版,采用影印、缩印或者其它方式合理复制学位论文。 本学位论文属于( 请勾选) ( ) 1 经华东师范大学相关部门审查核定的“内部”或“涉密”学位论文木, 于 年月 日解密,解密后适用上述授权。 ( ) 2 不保密,适用上述授权。 新签名趣氢:导师签名岔塑盈 本人签名圣! i ! 塑 2 7f 口年1 1 月f 歹日 木“涉密”学位论文应是已经华东师范大学学位评定委员会办公室或保密委员会审定过的学位论 文( 需附获批的华东帅范大学研究牛申请学位论文“涉密”审批表方为有效) ,未经上述部门 审定的学位论文均为公开学位论文。此声明栏不填写的,默认为公开学位论文,均适用上述授权) 。 逊墓硕士学位论文答辩委员会成员名单 姓名职称单位备注 张桂戌教授华东师范大学主席 孙仕亮副教授华东师范大学 童卫青副教授华东师范大学 华东师范人学硕f :学位论文论文摘要 论文摘要 流体模拟是计算机图形学的一个重要研究方向,而实时真实感绘制更是一 个挑战性问题,引起众多研究者的兴趣。水行为的模拟是其中一个研究热点。 由于水行为的多样性,模拟水的不同状态需要使用不同的模拟原理。国内 外现有的研究主要集中在水波和海浪的模拟,采用波动方程为模拟原理,按其 实现方法,大致分为两类:欧氏网格和拉格朗日粒子。前者是一个离散的方法 将空间区域细分并控制流体在不同的空间“细胞”中。该方法能够实时模 拟多种流体包括高度粘性流体,也可以实现流体的不可压缩性,但是流体的运 动波被网格分辨率限制,不能保证小特征的大量保留。拉格朗日方法用波、粒 子来模拟流体,粒子方法提供了一个概念简单、多样的模拟框架,因而被广泛 使用。但是在流体仿真中,基于粒子的模拟方法难以表征平滑的表面。 本文研究了喷泉的模拟,尝试建立一个模拟各种喷泉效果的通用平台。模 拟分为两个阶段:喷射状态和水滴与水面的交互。我们使用粒子的自由落体原 理来模拟喷射的水滴;第二阶段采用粒子和波相结合的方法模拟水滴和水面及 其交互行为。为了避免耗时的求解波动方程,本文采用一维波动方程的圆形扩 散来近似模拟水波运动。基于以上原理,我们使用v c + + 和3 d 图形引擎o g r e 作 为开发工具,初步实现了一个模拟平台。我们的喷泉模拟方法利用了粒子的优 越性,可以实时绘制较为真实的喷泉效果。 关键词:粒子,水波,喷泉,水模拟 t os i m u l a t ed i f f e r e n tw a t e rs t a t u sn e e d st ou s ed i f f e r e n ts i m u l a t i o np r i n c i p l e sd u et o t h ed i v e r s i t yo fw a t e ra c t i o n s t h ep r e v i o u sr e s e a r c hm a i n l yf o c u s e do nw a t e rw a v e a n ds e aw a v es i m u l a t i o n ,w h i c hi sr o u g h l yc l a s s i f i e di n t ot w ob a s i ca p p r o a c h e s : e u c l i d e a nm e s ha n dl a g r a n g i a np a r t i c l e t h ef o r m e ri sad i s c r e t em e t h o d :s u b d i v i d e t h es p a c ei n t os e v e r a lc e l l sa n dc o n t r o lf l u i df r a g m e n tw i t h i ne a c hc e l l t h i s a p p r o a c hc a ns i m u l a t es e v e r a lk i n d so ff l u i di n c l u d i n gv i s c o u sf l u i di nr e a lt i m e ,a n d r e a l i z ei n c o m p r e s s i b l ec o n d i t i o n h o w e v e r , i tf a i l si nc h a r a c t e r i z i n gd e t a i lf e a t u r e s b e c a u s em o v i n gw a v eo ff l u i di sc o n s t r a i n e db ym e s hr e s o l u t i o n w h i l et h el a t e r s i m u l a t e sf l u i du s i n gp a r t i c l ea n dw a v e t h i sm e t h o dp r o v i d e sd i v e r s em o d e l i n g f r a m e ,t h u sw i d e l yb eu s e d l a g r a n g i a np a r t i c l ei sd i f f i c u l tt os i m u l a t es m o o t h s u r f a c e t h i sp a p e rs t u d i e sf o u n t a i ns i m u l a t i o n ,a n da t t e m p tt ob u i l dag e n e r a lp l a t f o r mf o r s i m u l a t i n gf o u n t a i n f o u n t a i ns i m u l a t i o ni sd i v i d e di n t ot w op h a s e s :s p l a s h i n gd r o p s s i m u l a t i o na n dt h ei n t e r a c t i v ee f f e c tb e t w e e nd r o p sa n dw a t e rs u r f a c e w es i m u l a t e s p l a s h i n gd r o p su s i n gp a r t i c l e sa n df r e e - f a l lp r i n c i p l e t h ep h a s et w oa d o p t sw a v e p a r t i c l em e t h o dt om i m i cw a t e rw a v ea n dt h ei n t e r a c t i v ee f f e c t i no r d e rt oa v o i d s o l v i n gc o m p l i c a t e dw a v ee q u a t i o n s ,t h i sp a p e re m p l o y sc i r c u l a rd i f f u s i o no fid w a v et oa p p r o x i m a t ew a t e rw a v e b a s e do nt h ea b o v ep r i n c i p l e s ,w ei m p l e m e n ta b a s i cs i m u l m i o np l a t f o r mu s i n gv c + + a n d3 dg r a p h i ce n g i n eo g r e o u rf o u n t a i n s i m u l a t i o nt a k e sf u l la d v a n t a g eo fp a r t i c l ea n dw a v e ,a n di sa b l et or e n d e rv i s u a l l y r e a lf o u n t a i n k e y w o r d :p a r t i c l e ,w a t e rw a v e ,f o u n t a i n ,w a t e rs i m u l a t i o n 2 1 2 0 ( 3 r e3 d 粒子9 2 2 o g r e 网格模型1 2 2 3 j 、结。1 4 第三章水波模拟1 5 3 1高度场1 5 3 2网格粒子系统1 6 3 3,j 、结1 7 第四章喷泉模拟1 9 4 1模拟原理与方法1 9 4 2算法流程与实现2 0 4 3 实验结果与讨论2 6 4 4 ,j 、结2 8 第五章工作总结3 0 5 1 总结3 0 5 2 未来工作展迥3 1 附录i 参考文献 至叟谢v 华东师范大学硕i :学位论文第一章绪论 第一章绪论 1 1 研究背景与意义 计算机模拟是模拟自然现象和抽象物体的数字技术。在物理学、航空学、 化学、生物等自然领域,甚或经济、社会科学等人类学科领域,计算机模拟都 已成为一项有用技术。它可以发掘或全新诠释新技术,或者预估复杂且难以分 析结果的系统的行为。计算机模拟一直与飞速的计算机技术并肩发展,它经常 被当成是建模系统的替代技术。当前许多不同种类的计算机模拟有着共同的特 征:为具体的模型制作具有代表性的场景,但完全呈现模型所有可能的状态几 乎很难或不可能实现。计算机模拟是工业制造自动化的衍生品,由计算机辅助 设计派生而来,随着技术的发展和应用领域的不断扩大,逐渐发展成一个重要 的研究方向,如今已积累了丰硕的研究成果和技术。 现在的计算机模拟,更多地是图形环境下的模拟,是计算机图形学的一个 重要研究领域。为了节约开发成本和人力资源,部分图形工作者一直致力于创 造完备的集成了底层图形开发模块的软件系统,形象地称为引擎,以供专业的 开发人员可以专注于具体的建模和渲染。根据用途的不同,引擎大致分为游戏 引擎和图形渲染引擎。目前,图形引擎比较成熟,给游戏开发者、图形和仿真 技术研究人员带来了方便,可以缩短开发周期。 图形仿真的一个最复杂的分支是自然世界的模拟,因为许多自然事物的形 态不具备共性,轮廓边界为不规则曲线,如水面、海岸线、山峰、动植物等无 法用统一的几何模型进行数学建模。其中,水可以有气态、液态、固态,可以 是水蒸气、水滴、海洋、冰雪,每种形态需要采用不同的绘制模型和渲染方法, 不但要求视觉效果逼真,而且需要达到高度的实时性,水的多样性给图形仿真 研究人员带来了很大的挑战,引起了众多研究人员的兴趣。 经过多年的努力,研究人员已提出了许多水的模拟方法,但是基本局限于 单个行为状态的模拟。而现实世界里水的不同形态其实是同时存在并且交互的: 喷泉的水滴落到水面形成水波,沸腾的水冒着气泡形成水蒸气等等,所以 本文正是在这样的研究背景下,使用基于3 d 的图形引擎研究开发新的水行为 算法,力求解决多种水行为交互的绘制渲染问题,且基于以下原因本文选择模 拟喷泉作为研究场景。 第一章绪论 美轮美奂的景观供人观赏,有愉悦身心的作用, 调节小气候,起到增湿和降温作用,所以炎炎夏 泉是非常健康和必要的;其次,喷泉的水不停地 ,有利于给水体供氧,防止水体变质;还有室内 喷泉可以吸附空气中的灰尘、细菌、纤维等,净化空间, 同时提高人体吸氧和 祠 出二氧化碳的能力,补充人体皮肤所需的水分,舒缓压力,有益身体健康。 所以现在许多建筑设计,电影电视特效,虚拟仿真中都会有喷泉模拟,甚至有 专门制作喷泉的捅件。 2 喷泉造型多样,有广阔的仿真研究空间 喷泉造型多样,有喷雾状、涌流状、瀑布状等等,且喷泉不只是单调的水 景,一般要配以水池、假山、植物等,使之更贴近自然。所以喷泉的模拟几乎 囊括了自然世界模拟的方方面面,模拟一个真实的喷泉涉及图形学的各种知识, 包括:物理建模( 模拟静态物体) 、过程建模( 模拟运动物体) 、分形学( 模拟 不规则物体如植物) 、图形交互( 模拟各种物体之间的碰撞) 等等,对计算机图 形仿真研究带来很大挑战。 对于本文来说,主要研究喷泉的水滴粒子结构与水波的网格建模,以及粒 子与水波交互的新算法。针对建模和算法,下一节会详细讲述网格、粒子模型 和喷泉模拟的研究现状。 1 2 国内外研究现状 国内外计算机流体模拟源自二十世纪中后期,其间主要的技术成果是创建 了网格和粒子模型,网格与粒子都可以用以形成水波,但各有优缺点。喷泉的 模拟则主要以粒子建模为基础,致力于实现复杂度较低、实时性高、视觉效果 逼真的水流喷射状态,但对于水滴与水面的交互以及整个喷泉场景的实时渲染 却少有涉及。下面将详细讲述网格模型、粒子模型和喷泉模拟的研究现状。 1 2 1 网格模型 基丁网格的流体模拟在计算机图形学应用中已经很普遍了。为了重现动态 流体的可视化特征,f o s t e r 和m e t a x a s 1 2 首次提出在规则网格上解决完全3 d n a v i e r - s t o k e s 方程的方法。s t a r e 3 使用半拉格朗日整数法,改变流体粘度并合 2 华东师范大学硕l :学位论文第一章绪论 理地减小运动的幅度实现了绝对稳定的动态气体模拟。f o s t e r 和f e d k i w 4 将这 项技术扩展到液体流动,使用被称为水平集的表面和内部粒子方法追踪流体表 面动向,得到了很好的效果。e n r i g h t 5 等人在此基础上增加了外层流体粒子的 数量改善了表面追踪。他们还用新的速度外部插值的技术控制流体表面移动, 结果在粗分网格上也得到了平滑表面。 许多研究人员开发了许多方法来模拟高度粘性或粘弹性流体。c a r l s o n 等人 【6 】开发了一个欧氏模块用于模拟高粘度流体,如可以模拟融化的物体。g o k t e k i n 等人 7 】将流体变形分为弹性和可塑性部分,然后在n a v i e r - s t o k e s 方程平流项中 合并两种变形速度,他们不仅模拟了粘性效果而- 月模拟了流体的弹性和可塑性 行为。 1 2 2 粒子模型 平滑粒子流体动力学( s p h ,s m o o t h e d p a r t i c l eh y d r o d y n a m i c s ) 的出现代替 了之前的方法,它首次由l u c y 8 和g i n g o l d 、m o n a g h a n 9 开发,用来处理太空 物理问题。在s p h 中,空间是用粒子不规则采样的。这些粒子维持着不同的属 性,如密度和速度,并且在模拟过程中一直被追踪。使用径向对称的平滑内核 技术,无论处于空间的什么位置,这些属性值都能立刻追踪计算出来。 r e e v e s 1 0 将粒子系统引入计算机图形学,认为粒子可以模拟云、火、瀑 布和水等物体的特别工具。之后m i l l e r 和p e a r c e 1l 】将分子力学的思想应用到 基本粒子的相互作用中,获得了液体和融化物体的模拟。t e r z o p o u l o s 等人 1 2 】 用粒子以及相互作用力模拟了热弹性材料;对于固体材料,粒子由弹簧连接, 这样当材料融化时力会削弱并最终消失:这种模型不处理可塑性。 d e s b r u n 和g a s c u e l 1 3 】使用s p h 概念模拟了高度变形物体。m u l l e r 等人 1 4 】 使用s p h 模拟渲染了相互作用的液体;他们借鉴m o r r i s 1 5 】的理念,通过定义 粒子表面以及与表面曲率成比例的作用力,计算散度,模拟出表面张力;但因 为表面特征由少数粒子表示,这样计算的曲率可能导致数值问题。 p r e m o z e 等人【1 6 】使用了拉格朗日方法也获得了实时的流体模拟方法;它们 使用移动粒子半隐式方法( m p s ,m o v i n g p a r t i c l es e m i - i m p l i c i t ) 【1 7 解出了 n a v i e r - s t o k e s 方程,比标准s p h 获得更高级的非压缩性。 m u l l e r 等人 1 8 】提出了一个基丁粒子的方法模拟容积模型物体,不管是僵 硬弹性的材质还是高度可塑性的材质都适用。他们的技术来自连续介质力学, 第一章绪论 万华根等人【2 0 】是国内比较早地实现喷泉水流模拟的研究人员,他们通过 求解著名的n a v i e r - s t o k e s 流体方程的一个特解,即假设喷泉水流是直圆管中的 平稳h a g e n p o i s u e l l e 流,获取喷泉水滴在空中的行为轨迹;另外,他们采用元 球作为水粒子的形态得到了很好的水滴变形、融合的效果( 如图1 1 a ) 。z h i j i a n l 等 2 1 1 用三二维粒子模拟喷泉喷射,设置了一个初始喷射角度,利用粒子的循 环产生、消亡实现喷泉的形态,且整个模拟基于g p u 实现,有较好的时间复杂 度( 如图1 1 b ) 。卫丽芬等 2 2 1 也是采用基于粒子的喷泉模拟,但加入了纹理色 彩融合技术,同时增加了风、阻力等外界因素,使喷泉的模拟更真实,同时也 达到了很好的实时性。以上喷泉模拟对于喷射状态的模拟都非常成功,但是并 没有涉及水面交互与水波模拟( 如图1 1 c ) 。 w e n g s h e n gd 等 2 3 使用粒子模拟了喷泉喷射、水面和水滴与水面的交 互,他们给予水滴落下处水而粒子一个振幅,然后采用了中心粒子( 处于一个 六边形内) 影响邻接的六个六边形内粒子的方式表现水波,中心粒子振幅是一 个关于时间和周围粒子振幅的函数。这种方法完成了整个喷泉场景的渲染,达 到了很好的实时性( 如图1 1 d ) 。但是由于粒子无法显示平滑的波表面,因此 不能达到水波的真实视觉效果。 4 ( b ) ,ll舞謦警。g覃采r11誉拳,t重孙藩重零参重,囊童暑1量矿a誊鼍量童 。,茹嚣寥tt罐罨-。r!归 董f h髻事一譬t。,一鉴孽署t事 华东师范人学硕l 学位论文 ( c ) ( d ) 图1 1 粒子喷泉研究 1 3 主要工作与组织结构 1 3 1 主要工作 根据以上阐述,现有的喷泉仿真模拟主要是喷射状态的建模和绘制,大都 只研究粒子属性达到基于软件或g p u 的实时渲染效果。但是喷落的水滴与水面 的交互,如飞溅起的水花、粒子引起的水面波动少有实现。即使模拟了完整的 喷泉场景,也因为使用的足单一粒子建模方式,无法很好地真实渲染水波,而 网格建模恰恰可以弥补这一点。 因此本文的主要工作是: ( 1 ) 基于波和3 d 粒子的喷泉模拟方法,3 d 粒子模拟喷射的水珠,水滴与 水面的交互则用波粒子的方法,用2 d 粒子扰动网格模拟水面现象; ( 2 ) 使用o g r e 引擎,初步实现了模拟喷泉效果的应用程序; 一章绪论 述了网格、粒子结构模拟流体以及喷泉模拟的国内外研究方法现状和各自的优 缺点,将本文的主要工作原理和实现特点、优点引述了出来; 第二章的主要内容是介绍o g r e 的粒子系统和网格模型,这两个是模拟水 波时用到的最密切相关的两个渲染系统,通过介绍粒子和网格的特征属性以及 分析、撰写代码脚本,阐述喷泉场景的模型构造; 第三章详细讲解了水波模拟的算法原理,介绍了从高度场建模水面到网格 与粒子结合表示波面和水波能量,以及最终水波动画的形成。这个算法是形成 喷泉池水流动的主要原理,是整个喷泉模拟场景的重要组成部分; 第四章则整体阐述了喷泉模拟的原理与方法在计算机上实现的流程和细节, 并且分析和讨论了实验的结果; 第五章里总结了本文的主要工作和不足之处,以及未来可以继续研究的领 域和方向。 6 华东师范人学硕士学位论文第二章o g r e 渲染引擎 第二章o g r e 渲染引擎 o g r e ( o b j e c t e d - o r i e n t e dg r a p h i c sr e n d e r i n ge n g i n e ) 是一个用c + + 编写 的、面向场景的、灵活且开源的面向对象的3 d 图形渲染引擎,它的设计是使 开发人员更容易、更直观地编写使用3 d 图形硬件加速的应用程序。o g r e 抽 取了类如d i r e c t 3 d 和o p e n g l 的底层系统库,提供了一个基于全局对象和其他 高级类的界面。 o g r e 只是一个渲染引擎。所以它的主要目的是为图形渲染提供一个一般 的解决方案。尽管它也提供其它的一些便利( 向量、矩阵、存储处理等) ,但只 是辅助性的。从游戏开发或仿真应用考虑,它并不是一个全能的解决方案,因 为没有提供声音、物理等方面的支持。也许可以把这些视为o g r e 的主要缺点, 但也可以看做是引擎的一大特点。选择o g r e 作为图形引擎意味着开发者可以 自南使用物理、输入、声音等其它库别,也可以使开发小组专于图形而减少放:船 在其它系统上的精力。o g r e 几乎拥有了商业3 d 渲染引擎的全部特性,甚至 在某些方面超越了它们: ( 1 ) 全面同等地支持o p e n g l 和d i r e c t 3 d : ( 2 ) 全面支持w i n d o w s 、l i n u x 以及m a co sx 平台; ( 3 ) 简单并可扩展的对象框架,能方便地载入到己存在的应用程序框架中;。 ( 4 ) 自动处理渲染状态和空间裁切; ( 5 ) 强大且成熟的材质管理和脚本系统,可以不动一行代码去进行材质维护: ( 6 ) 支持所有纹理混合和绑定技术,同时支持对g p u 编程技术,支持汇编 语言和所有高级语言形式的各种着色语言,其中高级语言包括:c g 、h l s l 和 g l s l ; 支持多种纹理图片格式,包括:p n g 、t g a 、d d s 、t i f 、g i f 、j p g ,同时支 持特殊格式的纹理,其中包括:一维纹理、体积纹理( v o l u m e t r i ct e x t u r e s ) 、 3 d 纹理( c u b e m a p s ) 和压缩的纹理格式如d x t c ; ( 7 ) 全面支持渲染到纹理( r e n d e r - t o t e x t u r e ) 技术和投影纹理( p r o j e c t i v e t e x t u r i n g d e c a l s ) 技术: ( 8 ) 全面支持材质多重细节层技术; ( 9 ) 优化的二进制模型文件格式,同时支持手动和自动多重细节层生成: 华东师范大学硕士学位论文第二章o g r e 渲染引擎 ( 1 0 ) 拥有多种从商业或者开源3 d 模型软件导出到o g r e 模型格式和动画格 式的插件,其中包括官方以及用户提供的版本; ( 1 1 ) 全面支对顶点和索引缓存( v e r t e xa n di n d e xb u f f e r s ) 、顶点声明( v e r t e x d e c l a r a t i o n s ) 以及贴图缓存( b u f f e rm a p p i n g s ) : ( 1 2 ) 全面支持骨骼动画和姿态动画( p o s ea n i m a t i o n ,顶点动画的一种) , 每个顶点可以混合任意数目的骨骼权重; ( 1 3 ) 支持软件和硬件加速蒙皮; ( 1 4 ) 支持静态几何体批次( s t a t i cg e o m e t r yb a t c h i n g ) ; ( 1 5 ) 支持二次贝塞尔曲面; ( 1 6 ) 拥有以插件方式链接不同场景结构的接口,允许你使用适合自己应用程 序的场景体系; ( 1 7 ) 高级可屏蔽场景查询系统( a d v a n c e dm a s k a b l es c e n e q u e r y i n gs y s t e m ) ; ( 1 8 ) 全而支持多种阴影技术,包括模版阴影( s t e n c i l ) ,纹理阴影( t e x t u r e ) , 叠加阴影( a d d i t i v e ) ,调制阴影( m o d u l a t i v e ) ,并且全部支持硬件加速; ( 1 9 ) 高级插件方式的粒子系统,可扩展的发射器( e m i t t e r s ) ,效果器 ( a f f e c t o r s ) ,渲染器( r e n d e r e r s ) ; ( 2 0 ) 全面支持并且方便使用的天空盒( s k y b o x e s ) ,天空面( s k y p l a n e s ) , 以及穹顶( s k y d o m e s ) 等地理绘制; ( 2 1 ) 可以使渲染优化的公告栏( b i l l b o a r d i n g ) 技术; ( 2 2 ) 以单一队列为基础的渲染管理,允许全面操作渲染执行顺序; ( 2 3 ) 可以自动管理透明对象; ( 2 4 ) 成熟且可扩展的资源管理和载入系统,文件系统支持的文件包括z i p , p k 3 等压缩格式。 o g r e 是一个成熟,稳定,可靠,灵活,跨平台且拥有丰富功能的实时3 d 图形库,它可以让开发者在应用程序中采用面向对象的方式表现复杂的3 d 模 型。o g r e3 de n g i n e 为3 d 图形应用程序提供了强大的“动力”,进而允许开 发人员更多关注应用程序细节而不是一个3 d 场景的渲染过程。作为应用程序 的中间件,o g r e 扮演了一个专注于处理了三维空间场景的角色,开发者可以 用很少量的代码来构建一个完整的三维场景。它不能处理用户输入,不能管理 游戏状态,不能做网络通讯,不能播放声音,它只是作为一个3 d 渲染引擎被 设计出来,并且那就是它唯一的应用。如果需要其它应用功能,则可以在o g r e 8 华东师范人学硕i :学位论文第二章o g r e 渲染引擎 中寻找其它的库来完善。 2 1o g r e 粒子系统 2 1 1 基于物理的模型和粒子系统 在计算机图形学中,粒子系统可以将基本的物理原理和数学约束条件结合 起来控制对象的行为。 粒子系统是许多粒子的集合,这里的粒子通常是指质点,可以通过求解微 分方程组来确定粒子的动态行为。粒子系统已经在许多领域用来模拟对象的各 种行为。例如在流体力学领域,研究人员使用粒子系统模拟湍流的行为。一般 人们在实际中并不求解偏微分方程,而是生成一群受各种力作用以及受各种约 束条件限制的粒子来模拟系统的动态行为。我们还可以使用粒子建立实体对象 模型。例如,可以使用一个三维粒子阵列来模拟可变形的实体对象,且其中的 粒子由弹簧连接起来。当对象受n # t - 力的作用时,粒子就会移动并使它们的位 置近似表示实体对象的形状。计算机图形学领域的研究人员已经使用粒子系统 建立了许多对象的模型,如烟火、鸟的群聚行为以及波浪起伏的行为等。在这 些应用中,粒子系统的动力学规律确定了粒子的位置,而在每个位置上,我们p 可以放置一个图形对象,而不仅是一个点。 粒子系统中处理的是一群粒子,其中的每个粒子可视为一个质点。根据物 理规律可得到粒子的运动方程,并用数值方法求解这些方法,从而得到这些粒 子在每个时刻的状态。在最后一步,将每个粒子作为一个图形对象来绘制,对 于烟火粒子系统,粒子可能是一个有颜色的点,或者对于粒子动画系统,粒子 可能是一个卡通人物。 2 1 2o g r e3 d 粒子 在o g r e 中粒子系统被用来作为在3 d 程序中产生多种视觉特效的基础, 虽然有时候存在一些替代方案,不过人多数情况下粒子系统会使实现过程变得 更简单。 粒子系统可以使用相应的脚本来定义。相对于硬编码方式,脚本可以更快 地产生原型且容易更改。用户可以完全通过脚本来创建和配置粒子系统,每个 粒子脚本在实际使用中又其实是一个粒子模板,可以通过它在程序中产生多个 实例。换言之,如果想创建多个相同样式的粒子效果( 如多处着火) ,用户不用 9 第二章o g r e 渲染引擎 a f f e c t o r s c a l e r r a t e- 2 a f f e c t o rc o l 口u r f a d e r r e d l i g r e e n l 0 蛞 b l u e l _ 0 1 a l p h a l 一个脚本创建多个实例就好了。图2 1 为一火焰粒 果,由此可以窥其一斑。 6 3 1 5 7 71 1 口1 8 9j 1 7 , i l 日0 6 3 1 5 7 71 19 1 8 9 j ;7 日0 6 3 1 5 7 71 ( a ) ( b ) b 图2 1o g r e 粒子渲染演示。( a ) 火焰粒子脚本;【b ) 火焰效果。 示例的脚本代码是最典型的粒子系统设置,它包含了所有产生和约束控制 粒子的“器件”: 1 发射器( e m i t t e r ) 对粒子发射器直观地解释就足:一个用来发射粒子的“装置”。o g r e 提供 的发射器也是通过一种直观的方式来发射粒子:点发射器只在空间中的一个点 上来发射粒子:盒子发射器会在一个矩形空间内的任意位置随机发射粒子;圆 柱体发射器在一个制定的圆柱体空问内发射粒子;椭球体( 包括球体) 发射器 从一个椭球体空间内发射粒子;空心椭球体( 包括空心球) 发射器从椭球体的 表壳发射所有的粒子;还有环形发射器从一个环的边缘上面发射粒子。我们这 里采用的是盒子( b o x ) 发射器,从发射器中发射出来的粒子的频率 ( e m i s s i o n _ r a t e ) 、速度( v e l o c i t y ) 以及方向( d i r e c t i o n ) 都足可以手动配置 的。 】0 华东师范大学硕士学位论文第二章o g r e 渲染引擎 在很多情况下,粒子系统不会简单地直线发射粒子;通常的情况下,发射 的粒子都会从发射器以一个角度发射出来,我们可以通过“a n g l e ”参数来配置 发射器的这个属性。当你需要直线发射的时候,可以简单地把这个参数值设置 为0 ,如果你希望向所有方向同时发射粒子,就可以把这个角度设置为1 8 0 。 当设置为9 0 度的时候就会在一个半球内的任意角度发射粒子。 粒子发射的速率单位被定义为粒子数量秒。粒子既可以用一个固定的速度 发射出来也可以在一个固定的范围内以自由的选择自己的发射速度。同时,它 们都有一个固定的生命周期( t t l ,t i m e t o l i v e ) 也或者可以有一个范围内的 生命周期。对于发射器的持续喷射时间也可以设置为一个固定的数字或者一个 范围内随机,让发射器可以在停止一段时间之后继续发射。粒子系统必须拥有 一个发射数量的配额( q u o t a ) ,这就是它发射粒了的数量限制。一旦发射出来 的粒子总数达到了这个限额,粒子系统就会停止发射,等待已经存在的粒子消 失( 达到它所设置的生命周期) ,然后才能继续发射新的粒子。在默认的情况下, 这个限制的数量是1 0 。示例这里为形成火焰形状,匹配粒子数目,设置的值为 5 0 0 。 2 效果器( a f f e c t o r ) 效果器在粒子系统中的作用是:当粒子被发射进入世界空间之后,效果器 会按照一定规则对粒子的路径和生命周期进行影响。例如,可以给粒子在空问 中增加“重力”或者“风”等影响效果。每种类型的效果器都能产生不同的效 果类型,示例脚本里加入的是缩放器( s c a l e r ) 和颜色衰减器( c o l o u r f a d e r ) 。 缩放器可以在单位时间内对所有的粒子进行统一的缩放( 同时对x 、y 、z 轴方向) ,而这个缩放足以粒子的初始大小为基础的。 颜色衰减器会在粒子的生命周期内改变它的颜色,它的颜色参数的定义是 每秒改变颜色的百分比。但是这里的衰减不是无限地渐进衰退,而是基于一个 固定的根据初始颜色产生的衰退因子进行衰减。例如一个原先为白色的物体, 假定数值为1 0 ,衰减器参数为0 5 即以一半的速度衰退,则两秒后它的颜色应 为黑色而不是从1 0 到5 再到2 s 的灰色。 这里要特别介绍一种线性力效果器( l i n e a r f o r c e ) 。线性力是物理学中常 用的应用到系统中粒子上面的一个力。因为力是种向量,所以它同时具有方 向和力量的强弱,力量的强弱就是向量的长度,所以f o r c ev e c t o r 0 ,5 0 ,0 ) 和 :乇+ 1 譬= 蝥 华东师范大学硕士学位论文第二章o g r e 渲染引擎 f o r c ev e c t o r 0 ,1 0 0 ,0 ) 虽然具有相同的方向,但是后者的力量确实前者的两 倍。因为对粒子的持续用力会改变粒子本身的速度,所以可以通过 f r o c e 来设置如应用具体的力。当设置 值为application f o r c e a p p l i c a t i o na v e r a g e 的时候,系统会根据平均力和粒子的当前速度来渐进产生一个稳定的速度。 f o r c ea p p l i c a t i o n 设置为a d d 时允许速度持续增大( 或者减小) 。线性力效果 器是本文工作中用到的一项重要的设置,第四章会有更详细的介绍。 2 2o g r e 网格模型 模型是对世界的抽象,这个世界既可以是我们生活的真实世界,也可以是 我们利用计算机生成的虚拟世界。我们都熟悉在科学和工程领域中使用的数学 模型。这些模型使用数学方程来描述我们希望研究的物理现象。在计算机科学 领域,人们使用抽象数据类型表示对象之间的结构关系;在计算机图形学领域, 人们使用儿何对象构建这个世界的模型。当建立一个数学模型时,需要仔细地 选择数学方程,该方程应适合于描述人们要仿真的物理现象。虽然常微分方程 可能适合于描述弹簧一质点系统的动态行为,但是我们可能使用偏微分方程描述 湍流流动现象。在计算机图形学领域,我们也经历了类似的过程,例如需要选 择模型使用的图元,并表示这些图元之间的关系。就像选择数学模型时有多种 方法一样,人们选择的几何模型应该能够充分利用图形系统的性能。 在o g r e 中,模型( m e s h ) 被整合成一种资源。资源在o g r e 中的定义 是所有渲染几何体到渲染目标的数据所需要的数据。o g r e 还有其它类似的资 源如:骨骼( s k e l e t o n ) 、材质脚本( m a t e r i a l ) 、g p u 程序、纹理( t e x t u r e ) 、 合成器脚本( c o m p o s i t o r ) 、字体信息( f o n t ) 等。为了渲染场景需要相应的 资源,o g r e 使用了一个单体对象r e s o u r c e g r o u p m a n a g e r 来作为资源管理器, 这个对象的实例负责定位资源具体位置和初始化已知类型的资源。 m e s h 也是o g r e 可以快速载入的二迸制网格模型格式,同时也是o g r e 唯一支持的模型文件格式,可以通过o g r e x m l c o n v e r t e r 工具通过命令行的方 式产生这种文件,也可以在3 d 模型工具中通过导出插件创建。当把它放入 o g r e 的档案系统中时,要确认扩展名一定是“m e s h ”,否则o g r e 无法识 别其类型。如果模型用了变形动画或者姿态动画,就会在m e s h 模型文件中同 时包含这些动画的执行数据。图2 2 显示了一幅载入了机器人和草地模型的部 分o g r e 场景。o g r e 载入模型资源用的是手动载入,手动载入指的是在代码 华东师范大学硕上学位论文第二章o g r e 渲染引擎 中通过接口来载入相应的资源,在需要使用前需要执行些代码来载入和初始 化。 模型与实体息息相关。实体是o g r e 中比较重要和复杂的概念之一,在每 个实体中都包含着一些子实体的实现,这些子实体是真正的可渲染对象,它们 维护着具体的材质特性,而每个子实体又和一个子模型( s u b m e s h ) 对应。概 括地来说,实体和子实体是物体渲染特性的入口,而模型和子模型是物体结构 特性( 几何数据) 的入口。 o g r e 用了专门的m e s h 类定义和设置模型接口,在w i n d o w s 版本的o g r e 中m e s h 类与普通的c 类一样具有继承和派生,具有自己的成员数据和函数, 因此除了o g r e 特定的载入接口,m e s h 类的使用与c 无异。 大多数情况下如果只是需要建立虚拟场景,那么直接载入已经做好的模型 是最有效率的选择。但是在科研领域,模型的获取固然重要,更重要的是利用 模型的底层几何数据进行图形研究。这时候并不需要具有成百上千多面体的网 格模型,简单的几何图元就是很好的实验体。为此o g r e 给予了手动创建m e s h 模型的选择来满足要求,这样开发人员可以利用数学方程建立模型,也可以直 接保留和提取模型数据以作分析,虽然会在某一程度上增加了代码长度,但是 对于科研还是相当有利的。 图2 2o g r e 模型示例之机器人和草地。其中草地是一块平面上拷贝多次模型。 1 3 学位论文第二章o g r e 演染引擎 了o g r e 的3 d 粒子系统和模型类的主要特征和使用要求,为第 程序打下了基础。 是介绍o g r e 粒子的脚本生成及其主要参数的设置,模型文件的 来源与载入以及载入后的模型作为o g r e 的资源之一如何通过模型类接口让开 发人员自由调度使用。讲解原理的基础之上本章适当例举了一些具有代表性的 案例加深说明,使之浅显易懂。后面则是根据这些方法设计我们的喷泉系统和 水面模型。 要强调的是粒子和模型只是本文生成图形场景的工具,还必须将工具与数 学和物理原理结合才能生成动态的接近真实的视觉效果。粒子与模型的功能相 当强大,许多图形开发软件都带有此类接口,因此熟悉它们与程序的接口以及 主要效果功能对于开发者全关重要。 下一章将要讲述的是粒子与网格结合模拟水波的原理与方法。这是一种新 型的水波模拟思想,这种方法不仅弥补了粒子不能模拟流体平滑的表面特征而 且弥补了使用网格模拟所必须解决的复杂的计算特性,是一种很有效率的算法, 也是模拟喷泉水波动画的核心。 1 4 华东师范大学硕 学位论文 第三章水波模拟 第三章水波模拟 这一章主要介绍一种粒子网格结合的水波模拟算法,这是本文主要采用的 模拟水体的方法,用于喷泉模拟中的水波动画场景。本章会概要介绍粒子网格 算法的背景和原理以及实现过程,然后分析其优缺点。这一章承接了上一章粒 子与网格的知识体系,更是为下一章喷泉模拟做了水波形成的理论铺垫。 下面先就粒子网格算法原理作简要解释: 水波的计算机模拟大体建立在物理流体的运动学基础之上,近年的研究主 要是趋向于两种模拟方法:欧式方程与粒子过程建模法,绪论部分已经详细阐 述了两种方法各有的优点和缺点。基于网格粒子的水波模拟算法原理主要是利 用高度场构建水平面,然后在在水平面的交互区域放置带有能量的粒子加上一 个偏离函数,对水面产生扰动,形成水波。 3 1 高度场 “ 高度场亦称高度映射( h e i g h tm a p ) 。每个时刻水波泛起的高度可以画出一 幅高度图,或者高度图也可以转化为起伏的水波,因此使用高度场的更替可以 实现连续的水波动画。 高度场函数巾有两个变量,用以表征二维空间的点,且每个时刻返回一个 高度值。如果用x ,y 表示横纵坐标,x 表示平面,f 表示时间,z 表示当前的垂 直高度,那么高度场方程为 x ( x ,) ,) = z ( t )( 3 1 ) 如果没有任何外力,z 的初始值应是0 。当水

温馨提示

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

评论

0/150

提交评论