- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验八:粒子系统.doc
实验八:粒子系统
姓名: 班级 学号:
一、实验目的
掌握粒子系统的的原理,熟悉Ogre中粒子系统的结构和使用方法.
二、实验仪器
Pc,visual studio 2010
三、实验原理及过程
//利用Ogre实现一个粒子系统效果,并描述程序实现时的思路包括对每个调用的API以及脚本
进行详细说明
1、简述
粒子系统的基本单元是粒子,每个粒子一般具有形状、大小、颜色、透明度、位置、速度、加速度、方向、生命周期等属性。每一帧,粒子系统一般都会执行如下步骤:
(a)产生新的粒子,并赋予相应的属性;
(b)删除超过生命周期的粒子;
(c)更新粒子的动态属性;
(d)渲染所有有效粒子。
2、组成
它由ParticleSystemManage(粒子系统管理器)、ParticleSystem(粒子系统)、ParticleSystemRenderer(粒子渲染器)、ParticleEmitter(粒子发射器)、ParticleAffector(粒子影响器)、Particle(粒子)等组成。
(1) ParticleSystemManager(粒子系统管理器)
此类类似于OGRE中的SceneManager,单件模式,内含粒子系统工厂集合,粒子发射器工厂集合,粒子影响器工厂集合,以及粒子渲染器工厂集合,用于创建和管理粒子系统、粒子发射器、粒子影响器、粒子渲染器。该类还负责加载和分析粒子系统脚本。
(2) ParticleSystem(粒子系统)
具体的粒子系统类,它需要包含具体的ParticleEmitter 集合、ParticleAffector集合、ParticleSystemRenderer,Particle集合,用于粒子的创建、更新、渲染。
(3) ParticleEmitter(粒子发射器)
用于创建粒子,赋予粒子初始属性赋值,最重要的方法是_initParticle(),该类为抽象类,OGRE中提供了如下派生类,自己也可以根据需要编写自己的Emitter:
AreaEmitter
BoxEmitter
CylinderEmitter
EllipsoidEmitter
HollowEllipsoidEmitter
PointEmitter
RingEmitter
(4) ParticleAffector(粒子影响器)
用于在粒子的生命周期内更新粒子的属性,最重要的方法是 _affectParticles(),OGRE中提供了如下派生类,自己也可以根据需要编写自己的Affector:
ColourFaderAffector
ColourImageAffector
ColourInterpolatorAffector
DeflectorPlaneAffector
DirectionRandomiserAffector
LinearForceAffector
RotationAffector
ScaleAffector
(6) ParticleSystemRenderer(粒子渲染器)
该类用于渲染粒子系统,该类为抽象类,ORGE提供了BillboardParticleRenderer具体类,自己也可以根据需要编写自己的粒子渲染类。
(7) Particle(粒子)
粒子系统的基本元素,粒子,存储了粒子的所有属性和状态。
3、OGRE粒子系统渲染流程
(1)初始化
ParticleSystemManager::addEmitterFactory()
ParticleSystemManager::addAffectorFactory()
ParticleSystemManager ::addRendererFactory()
ParticleSystemManager::createTemplate()
ParticleSystem::setRenderer()
ParticleSystemManager::_createRenderer()
ParticleSystem::addEmitter()
ParticleSystemManager::_createEmitter()
ParticleSystem::addAffector()
ParticleSystemManager::_createAffector()
(2) 每一帧,执行如下更新
ParticleSystem::_update()
ParticleSystem::_triggerAffectors()
Affector::_affectParticles()
ParticleSystem ::_triggerEmitters()
Emitter::_initParticle()
ParticleSystem::_updateRende
文档评论(0)