1,粒子系统介绍

每个引擎都会有自己的粒子系统,粒子系统特效在游戏中运用广泛,比如射击类游戏中的爆炸特效,烟雾特效,开枪时喷出的火焰,撞击时击出的火花等等多半由粒子系统实现。粒子系统的基本单元是粒子,每个粒子一般具有形状、大小、颜色、透明度、位置、速度、加速度、方向、生命周期等属性。每一帧,粒子系统一般都会执行如下步骤:
    1) 产生新的粒子,并赋予相应的属性;
    2) 删除超过生命周期的粒子;
    3) 更新粒子的动态属性;
    4) 渲染所有有效粒子。

2, OGRE 粒子系统。

OGRE粒子系统还是比较清晰易懂的,它由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::_updateRenderQueue()

ParticleRenderer::_updateRenderQueue()

转载于:https://www.cnblogs.com/cxrs/archive/2012/06/07/2540678.html

OGRE粒子系统简介相关推荐

  1. 火炬之光(TorchLight)使用的Ogre粒子系统插件ParticleUniverse研究

    火炬之光(TorchLight)使用的Ogre粒子系统插件ParticleUniverse研究 转载:http://mobilegamebase.com/blog/article.asp?id=30 ...

  2. 3dmax:3dmax三维动画之粒子系统简介、基本场景之详细攻略

    3dmax:3dmax三维动画之粒子系统简介.基本场景之详细攻略 目录 3dmax三维动画之粒子系统简介.使用方法之详细攻略 粒子系统简介.使用方法

  3. OGRE粒子系统脚本详解

    粒子脚本允许实例化地在自己的脚本代码中定义粒子系统,而不必在源代码中进行设置,可以在做任何修改对哦能得到快速的回应,脚本里定义的粒子系统被用作模版,并且多个实际的系统可以在运行时从脚本里被创建. 粒子 ...

  4. UnityParticle1:粒子系统简介

    前置:UnityShader 一.创建粒子 创建方式:GameObject -> Effects -> ParticleSystems,这和创建 3D 物体方法一样,就是分类选择 Effe ...

  5. 捕鱼系列之2:magic3d粒子系统简介

    上一篇捕鱼文章写了那些很棒很炫目的特效,那么这些特效是从哪里来的呢?这里我要抖落一些干货了: THE MAGIC3D REVIEW: MAGIC例子特效前瞻 粒子系统可以用来创造一些你在游戏和电影中看 ...

  6. Cocos2d-x内置粒子系统

    内置粒子系统 内置的11粒子系统说明如下: ParticleExplosion:爆炸粒子效果,属于半径模式. ParticleFire:火焰粒子效果,属于重力径模式. ParticleFirework ...

  7. 老人关于OGRE引擎的总体介绍

    [Ogre总揽],转至http://edu.gamfe.com/tutor/d/16715.html Ogre是一个庞大而纷杂的对象和模块集合,如果初学者希望直接从对象列表中得到什么信息的话,可能会感 ...

  8. J2ME 粒子系统实现(转)

    粒子系统在图形学上的应用十分广泛 粒子系统在图形学上的应用十分广泛.最常见的,是通过控制大量的.具有相似行为的点元素,来描绘自然现象.例如下雨.下雪.火焰.水.雾等等.在家用控制台或PC上的2D.3D ...

  9. Unity Particle System 粒子系统简单介绍

    一.Particle System 粒子系统简介 Particle System 是 Unity 内的一个专门用于制作特效的系统,相对来说是一个比较复杂的系统,有几百个可以控制和设置的参数选项. Un ...

最新文章

  1. 扑克牌排序_JAVA 扑克牌排序打印,并进行洗牌
  2. 阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO 一锅端
  3. linux 中文输入法 xshall,Centos6.7下安装ibus中文输入法
  4. volatile对原子性、可见性、有序性的保证
  5. windows常用的几个操作
  6. 从零开始学Axure原型设计(高级篇)
  7. C++中的STL--基本概念
  8. Linux环境通过java虚拟机定位程序问题位置的方法
  9. 电脑机房用成品——名词解释
  10. Android中利用LinearLayout动态添加控件
  11. 空间三维直线拟合matlab代码
  12. pytorch中的 nn.ModuleList 和 nn.Sequential
  13. 中国气象数据要注册或交钱才给,咱们就去美国下载免费数据
  14. Materials studio中的简单聚合物的建立及盒子的弛豫
  15. 企业进行客户关系管理的重要性是什么
  16. Wannacry“永恒之蓝”勒索病毒最全防范措施
  17. sci计算机论文发表论文格式,SCI论文发表的格式以及字体的要求是什么?
  18. Macbook删除苹果系统,装单系统win10系统
  19. Delphi官方下载地址
  20. Chromium浏览器下载

热门文章

  1. 集合 ---- 重复数
  2. Servlet ---- cookie session
  3. java中输出a个b_下面代码输出什么 ( ) var a=0,b=0; for(;a10,b7;a++,b++){ g=a+b; } console.log(g);_学小易找答案...
  4. 学硕论文选题计算机,计算机硕士论文题目分享
  5. 不恢复余数除法原理_《有余数的除法》教案
  6. 由方位角和长度如何确定坐标 已知第一个点的坐标
  7. Apollo注册到自己的Eureka注册中心+配置中心集群
  8. vue中实现国际化--语言切换(转载)
  9. [菜鸟SpringCloud实战入门]第九章:服务网关Zuul体验
  10. buildroot 编译问题