基于OSG的粒子系统仿真实现

来源 :科技风 | 被引量 : 0次 | 上传用户:luke521314
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:OSG就是一款高效实时的三维图形开发包,它构建于OpenGL图形函数库之上,全部采用标准C++语言开发, OSG图形系统[1]主要应用于游戏、虚拟现实和科学计算可视化与仿真领域中的高性能图形程序的开发。在构建虚拟场景后,为了增加虚拟场景的真实度,加入自然现象能使场景更加的逼真,而在OSG中给我们提供了粒子系统能很好的完成这部分设计,本文着重讨论基于粒子系统仿真的雪效和雨效,实践证明OSG的粒子系统能满足仿真的要求。
  关键词:OSG;粒子系统;雪效
  1 粒子系统简介
  1.1 粒子系统概念
  粒子系统(particlesystem)是迄今为止被认为模拟不规则模糊物体最为成功的一种图形生成算法[2]。它构建场景的方法与以往不同,传统的方法是通过绘制和造型系统的算法来实现,而粒子系统采用的是计算模型,动态的表示物体的运动。因此,粒子系统采用微小粒子图元作为基本单位,这些粒子图元具有颜色、透明度、大小形状及生命周期等属性,粒子的生命周期分为产生到活动到消亡几个阶段,因此,在粒子系统创建过程中,考虑的因素要包括真实的物理模型,还要考虑粒子的各项属性规定[34],在建立好的场景当中也要考虑动力学规律对粒子的影响。
  1.2 OSG粒子系统数学模型
  在OSG环境中,粒子系统产生的新生粒子位于屏幕上方的圆形区域内。对于每个粒子而言,在粒子出生时就会有不用的随机参数,但实际上每个粒子的真实意义在于其每帧的位置和速度。
  在粒子运动过程中要受到很多外界因素的影响,比如重力、风力和空氣阻力等,按照物体的运动规律,设V0为粒子初始速度,S0为粒子的初始位置,粒子的速度V、位置S和加速度a有一下关系:
  1.3 OSG粒子系统的工作过程
  在OSG中,osgParticle类是专门定义用来模拟粒子系统的,它不但能高效地模拟粒子系统,而且效果生成得非常逼真。
  在OSG中使用粒子系统,首先要确定意图。
  其次,建立粒子模板,这一步要确定粒子的形状,如点(POINT)、线(LINE)、四边形(QUAD)、六角形(HEXAGON)等,确定粒子的生命周期,以及粒子的角度等因素。
  然后要建立粒子系统,设置粒子的相关属性。包括粒子的大小(SIZE)、颜色(COLOR)和Alpha值。每组属性都可以设置它的最大值和最小值,我们通过改变这些最大和最小值,对单个粒子的渲染进行控制,也可以在这两者之间进行线性插值,这样就有利于管理粒子的生命周期。
  接下来设置发射器,主要用来设置粒子的初速度、发射器形状及发射粒子的数目变化等。
  另外要设置操作,用户可以通过对其中的各种Operator类进行参数设定,如AngularAccelOperator(角加速度)等,改变它们的实例参数。
  最后在场景中加载粒子系统,更新粒子状态。
  2 基于OSG粒子系统的雨雪模拟实现
  2.1 粒子系统场景加载渲染技术
  osgViewer库可以很好的进行渲染操作,此在库中定义了一些视口类,因而可以将OSG 集成到许多视窗设计工具中,包括AGL/CGL,FLTK,Fox,FC,Qt,SDL,Win32,WxWindows,以及X11。这些视口类支持单窗口/单视口的程序,也支持使用多个视口和渲染器面的多线程程序。每个视口类都可以提供对摄像机运动,事件处理,以及osgDB::DatabasePager 的支持。osgViewer 库包含了以下三个可能用到的视口类。
  (1) SimpleViewer:SimpleViewer 类负责管理单一场景图形中的单一视口。使用SimpleViewer 时,应用程序必须创建一个窗口并设置当前的图形上下文(graphics context)。
  (2)Viewer:Viewer 类用于管理多个同步摄像机,他们将从多个方向渲染单一的视口。根据底层图形系统的能力,Viewer 可以创建一个或多个自己的窗口以及图形上下文,因此使用单一视口的程序也可以在单显示或者多显示的系统上运行。
  (3)CompositeViewer:CompositeViewer 类支持同一场景的多个视口,也支持不同场景的多个摄像机。如果指定各个视口的渲染顺序,用户就可以将某一次渲染的结果传递给别的视口。CompositeViewer 可以用来创建抬头数字显示(HUD),预渲染纹理(prerender textures),也可以用于在单一视口中显示多个视图。
  通过在控制台窗口中设置osgViewer的命令行参数、键盘和鼠标指令信息、环境变量参数等,即可实现本系统的实时交互功能.
  在osg编程中,实现文件读取的模块主要是osgDB工具库[6]。可读写的文件包括模型、视频、图像以及文档等。模型数据可以用节点类(Node)来表达,在本场景中已经建立好了一个ziran.ive模型,为了将此模型文件读入场景图供OSG进行渲染,可以使用如下语句:
  osg::Node*node=osgDB::readNodeFile(“ziran.ive”):
  2.2 雪效仿真实现过程
  采用预定义粒子系统,可以试用osgParticle类,直接加载到场景中使用,在这个场景中采用osgParticle::Precipitation这个新类来实现雨雪的效果。
  通过osgParticle确立粒子模板,设置粒子的基本属性,包括粒子的大小,生命周期和变化范围等,雪从天而降,一直到后期的消失要经历一个生命周期,尺寸决定了粒子大小,透明度变化范围(AlphaRange)和颜色变化范围(ColorRange)———透明度指光线穿透介质的程度.粒子的透明度和颜色随着时间变化在设定范围内发生变化。通过osgParticle:: ParticleSystem生成粒子系统实例,利用函数setDefaultAttibutes生成粒子的材质(Texturefile),本场景采用贴图进行渲染,质量和粒子半径决定了粒子的物理属性,粒子参数设置表如下 :   同时定义一个发射器,模拟发射器由osgParticle::ModularEmitter创建。在本场景中由于雪是从天空向下飘,所以放置器的角度是在场景的一定高度,扇面放置器(SectorPlacer)所有粒子由设定中心(Center)、角度范围(PhiRange)、半径范围(RadiusRange)的扇面产生发射一个的范围,发射器发射速度不易太快在添加雪效是设置为(50,200),在添加雨效时,速度要适当改变,每秒钟粒子添加粒子个数范围为线性插值介于最大值maxvalue和最小值minvalue之间,在本场景中设置为(100,300)。粒子在下落过程中会收到重力加速度影响,重力加速度对粒子的生命周期影响意义重大,可增加粒子效果的真实感,在本例中使用重力加速度默认为0.80665f。定義发射器参数设置如下表2:以上是设置好的粒子系统的各项参数,把设置好的粒子系统添加到粒子更新器中,并且要添加到建立好的模型场景中,通过2.1粒子系统场景加载渲染技术,把场景加入根节点进行渲染,得到真实的雪效,虽然自定义的粒子系统编程较复杂,但是效果也很逼真。同样的方法可以实现雨效,只需要改变相关参数,发射器的发射速度值和雨的浓度同样可以仿真现实中的雨效。
  3 实验结果
  本文是在CPU为Inter(R)Pentium(R) Dual Core E5500 1.80 GHz、内存为DDR2G、显卡为英特尔 GMA 4500(M)(HD)集成显卡配置的PC机上进行运行模拟的。显示器的垂直刷新率为60Hz,可以保证渲染图像显示跟屏幕更新保持同步。仿真效果图1雪效,图2雨效。
  4 小结
  利用软件开发环境完成基于粒子系统搭建与仿真,OSG粒子系统可以很好的模仿现实自然想象,OSG中自定义粒子系统各项参数的不同设定能得到不同状态下的雨雪效果,实验结果表明利用粒子系统可以很好地实现场景粒子特效,增强了虚拟现实逼真度,并具有很高的实时性。
  参考文献:
  [1]Martz P.Open scene graph quick start guide [M/OL].NewYork:Skew Matrix Software LLC,2007.
  [2]王乘,李利军,周均清.Vega实时三维视景仿真技术[M].武汉:华中科技大学出版社,2005:83218.
  [3]杨述华,廖守亿,王仕成,等.基于粒子系统和 Vega的实时雨雪模拟[J].计算机应用,2008,28(6):238 240.
  [4]刘巧红,单贵.粒子系统在虚拟校园中的应用研究.计算机技术与发展,21(2).
  [5]施润尼徐波编程指南北京:机械工业出版社,2008,08.
  [6]张小辉.虚拟交通场景中的雨雪仿真[D].西南交通大学硕士论文,2010:3537.
  作者简介:张慧(1980),女,河南登封人,中山大学工程硕士,现在在广东财经大学三水校区技术中心分中心工作。
其他文献
<正> 国有民营企业是改革现代企业制度,发展社会化大生产和市场经济的必然的要求,也是进行企业制度的创新。国有经济是指生产资料归国家所有的一种类型,是社会主义公有制经济
摘 要:采煤技术的进步给煤炭开采的各个环节都带来了比较深刻的影响,如何有效的实现对采煤工艺的优化与改进是当前时期面临的比较紧迫的问题。现阶段,我国的采煤工艺技术含量比较的低,对资源的利用方面也存在很多的不足,并且产品的质量较低,这对于煤炭企业的市场占有率的提升来说存在很大的困难。为了更好的促进煤炭行业的发展,需要在采煤过程中使用先进的技术设备,提高生产的水平,这也是对才没工艺进行优化的主要途径。 
摘 要:氧化钛膜层具有较高的折射率和出色的紫外吸收特性,广泛应用于UV/IR Cut滤光片的制备中。但是在TiO2/SiO2多层膜的制备中常常遇到雾度偏高的困扰,本文采用离子辅助沉积技术制备TiO2/SiO2多层膜,研究分析了相关工艺参数对沉积膜层雾度的影响,能够制备出较低雾度的薄膜样品。  关键词:氧化钛;滤光片;离子辅助沉积;霧度  氧化钛作为光学薄膜材料应用广泛,其透射波段位于400nm-1
利用强拟开集引入了强拟分离性,给出了强拟Si-空间的等价刻画,最后研究了强拟分离的拓扑性质。
目的探讨ICU危重病患者基础监护的方法。方法将内科常见危重急诊抢救统计资料分为2011年组和2014年组。对两组进行基础监护,监护内容包括体温、心率、心律、呼吸、血压、意识
DOI:10.19392/j.cnki.16717341.201720051  摘要:隨着新科技的发展,如今的社会成为了大数据时代。然而这些数据又有什么用呢?又为何各个公司都对数据异常看重?因为数据不仅仅是数据,他可以通过一定的途径,被翻译成极具价值的信息。比如大家都在淘宝上购过物,购物记录就组成了数据,系统可以根据你购物的内容来推测您的喜好和即将可能要购买的货物,所以在淘宝首页上展示出来的货物,
设R是含幺结合环,n≥2为自然数.对所有的k≥1,本文给出了n次幂等矩阵集Pk^n(R)={P|P^n=P∈Mk(R)}上的一种等价关系,证明了P^n(R)=∪k=1^∞Pk^n(R)中的等价类在给定的加法运算下构成一
目的探讨阿奇霉素在小儿上呼吸道肺炎支原体感染中的临床治疗效果。方法 92例上呼吸道肺炎支原体感染患儿作为研究对象,随机分为研究组和对照组,各46例。研究组给予阿奇霉素
摘 要:在推出《中国制造2025》计划的背景下,创新成为推动我国经济发展的首要因素。在经济“新常态”下,创新型中小企业在推动科技创新,促进经济繁荣和加快产业结构优化升级等方面发挥的作用越来越大,但发展过程中面临的问题也日益增多。面对经济“新常态”,大力推动湖南省内中小企业自主创新体系建设,强化政府对创新型中小企业发展的有效支持,充分发挥创新型中小企业内生性机制作用,大力推进政府部门服务模式创新,形
<正> 一、强化中央银行的宏观调控机能1.要树立中央银行的权威。中央银行要独立掌握货币发行权、行使信贷资金分配权,各更多还原