现在的位置: 首页 > 综合 > 正文

菜鸟学习OGRE和天龙八部之十一: ParticleSystem 粒子系统基本搞定

2013年10月04日 ⁄ 综合 ⁄ 共 2647字 ⁄ 字号 评论关闭

天龙X部粒子系统在OGRE的基础上通过插件形式自定义了一些粒子系统:

 

添加发射器1个
PolarEmitter

 

添加效果器6个
ColourFading
MeshAnimationAffector
MeshRotator
Movement
Revolution
ScaleInterpolator

 

添加的Renderer 2个
mesh
texcoord_billboard

 

场景里面几乎所有都会用到,所以要想载入all.particle文件,

也要像搜狐一样写一个插件,自己实现all.article文件里面增加的粒子效果,

即使不全部实现,也最好弄个框架把.

至于怎么写,其实不算难到下不了手,至少有模板,照着OGRE自带的粒子插件

依葫芦画瓢...体力活....很累,如图,效果嘛如果要追求一摸一样就很难,差不多就行了:

17:32:15: Loading library ./Plugin_TLBBParticleFX2
17:32:15: Particle Renderer Type 'mesh' registered
17:32:15: Particle Renderer Type 'texcoord_billboard' registered
17:32:15: Installing plugin: Plugin_TLBBParticleFX2
17:32:15: Particle Emitter Type 'PolarEmitter' registered
17:32:15: Particle Affector Type 'ColourFading' registered
17:32:15: Particle Affector Type 'Movement' registered
17:32:15: Particle Affector Type 'Revolution' registered
17:32:15: Particle Affector Type 'ScaleInterpolator' registered
17:32:15: Particle Affector Type 'MeshAnimation' registered
17:32:15: Particle Affector Type 'MeshRotator' registered
17:32:15: Plugin successfully installed

 

  1. void TLBBParticleFX2Plugin::install()  
  2. {  
  3.     // 生成所有粒子发射器的工厂  
  4.     ParticleEmitterFactory* pEmitFact;  
  5.   
  6.     // PolarEmitter  
  7.     pEmitFact = new PolarEmitterFactory();  
  8.     ParticleSystemManager::getSingleton().addEmitterFactory(pEmitFact);  
  9.     mEmitterFactories.push_back(pEmitFact);  
  10.   
  11.     // 生成所有粒子效果器的工厂  
  12.     ParticleAffectorFactory* pAffFact;  
  13.   
  14.     // ColourFadingAffector  
  15.     pAffFact = new ColourFadingAffectorFactory();  
  16.     ParticleSystemManager::getSingleton().addAffectorFactory(pAffFact);  
  17.     mAffectorFactories.push_back(pAffFact);  
  18.   
  19.     // MovementAffector  
  20.     pAffFact = new MovementAffectorFactory();  
  21.     ParticleSystemManager::getSingleton().addAffectorFactory(pAffFact);  
  22.     mAffectorFactories.push_back(pAffFact);  
  23.   
  24.     // RevolutionAffector  
  25.     pAffFact = new RevolutionAffectorFactory();  
  26.     ParticleSystemManager::getSingleton().addAffectorFactory(pAffFact);  
  27.     mAffectorFactories.push_back(pAffFact);  
  28.   
  29.     // ScaleInterpolatorAffector  
  30.     pAffFact = new ScaleInterpolatorAffectorFactory();  
  31.     ParticleSystemManager::getSingleton().addAffectorFactory(pAffFact);  
  32.     mAffectorFactories.push_back(pAffFact);  
  33.   
  34.     // MeshAnimationAffector  
  35.     pAffFact = new MeshAnimationAffectorFactory();  
  36.     ParticleSystemManager::getSingleton().addAffectorFactory(pAffFact);  
  37.     mAffectorFactories.push_back(pAffFact);  
  38.   
  39.     // MeshRotatorAffector  
  40.     pAffFact = new MeshRotatorAffectorFactory();  
  41.     ParticleSystemManager::getSingleton().addAffectorFactory(pAffFact);  
  42.     mAffectorFactories.push_back(pAffFact);  
  43. }  

 

  1. //======================================================================  
  2. // @author:   
  3. //      LYN 2009.10.29 QQ:18052887

抱歉!评论已关闭.