- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OpenGL论文粒子系统基于OpenGL与粒子系统的实时降雪模拟
摘要:为了增强虚拟现实系统的沉浸感,自然景物模拟一直是学者研究的热点之一。利用OpenGL函数包和粒子系统相关原理,模拟了自然降雪过程。整个降雪系统通过限制雪粒子初始化区域,大大减少了粒子数量,降低了算法的时间复杂度;通过宏定义每秒产生雪粒子数及雪粒子大小,模拟了不同情景的降雪过程,保证了系统模拟的多样性。
关键词:OpenGL 粒子系统; 真实感图形绘制; 虚拟现实
使用计算机模拟自然景物,如云、水流、树等一直是虚拟现实中真实感图形绘制领域具有挑战性的研究课题之一。签于自然景物和复杂性和随意性,传统的几何建模工具一般难以对其进行逼真的模拟。目前主要有两种方法实现自然景物模拟:一是基于物理建模技术的方法,二是基于粒子系统的方法。前者通过对Navier-Stockes方程求解,求出流体过断面时的平均流速,但由于N-S方程组是非线性的,计算较为复杂,因而难以达到实时要求;后者是,由Reeves等人于1983年提出的至今为止模拟不规则模糊景物最成功的一种图形算法。粒子系统的主要优点是可以利用非常简单的体素来构造复杂物体,为自然现象的造型提供了强有力的技术手段。
粒子系统从应用的角度可分为三类,即随机粒子系统、结构化粒子系统、方向粒子系统。随机粒子系统主要通过可控制的随机过程控制粒子属性的变化,可用来生成火、烟、灰尘、爆炸等场景图像;结构化粒子系统主要用来模拟具有一定结构的物体或现象,如树、草、云、彩虹等;方向粒子系统因为考虑到粒子间的相互影响,粒子除了具有速度和位置等动态属性外,还必须有方向属性,可用来模拟织物、可变形物体和刚体等。降雪现象没有一定的结构,模拟时无需考虑雪粒子间的相互作用,宜采用随机粒子系统进行模拟。随机粒子系统采用大量的、具有一定生命和属性的微小粒子图元作为基本元素,绘制不规则的模糊物体对象,其中,粒子图元的形状可以是小球、立方体、正四面体或其它的形体。粒子系统把物体定义为许多不规则、随机分布的粒子,且每个粒子均有一定的生命周期。随着时间的住移,旧的粒子不断死亡,新的粒子不断加入。粒子的这种出生、成长、衰老和死亡的过程,能够较好地反映模糊物体的动态特性。
本文依据粒子系统的仿真方法,对降雪进行了模拟。用大量雪粒子来描述降雪的形状属性及运动属性。降雪粒子系统是不断进化的,在生命期的每一刻,都要完成如下四步:第一步,系统产生新的雪粒子;第二步,更新雪粒子属性;第三步,删除“死”雪粒子;第四步,绘制雪粒子。本文降雪粒子系统中采用四边形来描述雪粒子几何特征,并给雪粒子加上纹理,进而逼真描述雪的自然现象。
1 雪粒子系统初始化
雪粒子系统由大量的雪粒子构成,雪粒子系统初始化需包含雪粒子初始化算法。对于雪粒子系统需要考虑的属性有雪粒子链表、雪粒子总数目、当前渲染的雪粒子数目,雪粒子系统的中心位置、消逝时间;对雪粒子则要考虑当前位置、上次位置、速度、加速度、生命期、尺寸大小等属性。
雪粒子产生区域是一个覆盖地面场景的长方体,并与水平面平行。在雪粒子密度相同的情况下,较大的产生区域需要较多的粒子,因此产生区域在满足视觉效果的前提下应尽可能小,这里,仅用视图体顶部的外接长方体作为产生区域。随着视点位置、视线方向的变化,视图体在空间移动,产生区域也作相应移动。本文雪粒子系统中雪粒子的初始化和发射被控制一个长、宽、高分别为mheight、mwidth、mdepth的长方体内。初始化时雪粒子x、y、z坐标分别由如下表达式确定:mheight、morigin.x+FRAND*mwidth、morigin.z+FRAND*mdepth。其中morign表示雪粒子系统场景的中心点。用自然语言描述雪粒子初始化、雪粒子系统初始化算法如下:
算法名称:雪粒子初始化;
算法参数:雪粒子索引号。
算法开始:
①初始化雪粒子的位置;
②设置雪粒子大小;
③设置雪粒子的初始速度为随机值;
算法结束。
算法名称:雪粒子系统初始化;
算法开始:
①判断是否存在雪粒子,若有,则雪粒子链表设为空,并设置头指针为空,否则转入第②步;
②调用“雪粒子初始化”算法;
③系统雪粒子总数、消逝时间均置为0;
算法结束 。
2 雪粒子系统的更新
随着视点的不断变化,及雪粒子的不断运动,雪粒子的空间坐标也在不断改变。当某一粒子运动到视口长方体分布区外时,则认为该是雪粒子寿命结束,系统停止对其计算和绘制。本文具体算法通过当前粒子的y轴坐标与场景的中心位置的y轴来判断雪粒子是否超出视口长方体,即:若mparticle[i].mpos.y=morigin.y,则雪粒子到达场景外。此外,雪粒子的数量直接影响场景的真实感,改变每一帧
文档评论(0)