实验八:粒子系统.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

xx88606 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档