天龙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
- void TLBBParticleFX2Plugin::install()
- {
- // 生成所有粒子发射器的工厂
- ParticleEmitterFactory* pEmitFact;
- // PolarEmitter
- pEmitFact = new PolarEmitterFactory();
- ParticleSystemManager::getSingleton().addEmitterFactory(pEmitFact);
- mEmitterFactories.push_back(pEmitFact);
- // 生成所有粒子效果器的工厂
- ParticleAffectorFactory* pAffFact;
- // ColourFadingAffector
- pAffFact = new ColourFadingAffectorFactory();
- ParticleSystemManager::getSingleton().addAffectorFactory(pAffFact);
- mAffectorFactories.push_back(pAffFact);
- // MovementAffector
- pAffFact = new MovementAffectorFactory();
- ParticleSystemManager::getSingleton().addAffectorFactory(pAffFact);
- mAffectorFactories.push_back(pAffFact);
- // RevolutionAffector
- pAffFact = new RevolutionAffectorFactory();
- ParticleSystemManager::getSingleton().addAffectorFactory(pAffFact);
- mAffectorFactories.push_back(pAffFact);
- // ScaleInterpolatorAffector
- pAffFact = new ScaleInterpolatorAffectorFactory();
- ParticleSystemManager::getSingleton().addAffectorFactory(pAffFact);
- mAffectorFactories.push_back(pAffFact);
- // MeshAnimationAffector
- pAffFact = new MeshAnimationAffectorFactory();
- ParticleSystemManager::getSingleton().addAffectorFactory(pAffFact);
- mAffectorFactories.push_back(pAffFact);
- // MeshRotatorAffector
- pAffFact = new MeshRotatorAffectorFactory();
- ParticleSystemManager::getSingleton().addAffectorFactory(pAffFact);
- mAffectorFactories.push_back(pAffFact);
- }
- //======================================================================
- // @author:
- // LYN 2009.10.29 QQ:18052887