转自:http://www.cnblogs.com/leexuzhi/archive/2012/08/26/2657763.html
游戏中的粒子系统常用来被创建各种炫丽多姿的特效,例如魔法效果,闪电,火焰,火舌,光环,雨雪,落叶等等,其重要程度不言自明。但很多初学者对粒子系统的使用仍是一头茫然,这大多也都是因为多数书籍上只是介绍了粒子系统的原理和简单的效果实现,例如最简单的礼花效果等等,很多同学看过了以后并不觉得粒子系统能有什么过人之处,或是觉得即使粒子能制作高质量的特效,但也不知如何实现。
当然在真正的游戏开发中,粒子系统不大可能是像教程上写得那样用硬编码的形式实现,必须有一个成型的粒子系统,这个系统常常和游戏引擎结合,或是被游戏引擎实现,然后提供各种制图工具的导出插件,例如3dmax和maya等等,将其制作的粒子特效导出成为游戏引擎识别的格式,然后应用于游戏代码中。没错,游戏中的效果基本都是美工做的,程序再牛叉都只有看代码的份。
OGRE作为一个出色的开源引擎,怎么能少了粒子系统呢,当然它没有其他引擎那么强大,能与建模工具结合,毕竟它既是免费,又只是一个图像引擎,而并非完整的游戏引擎。所以它只有一个第三方的粒子插件ParticleUniverse,该插件为收费9欧元,但是在中国你懂得,ParticleUniverse有一套源代码,一套编辑器。编辑器是可视化的,用于制作粒子特效,并自带了很多例子,而源代码能够编译出一个dll文件用于在ogre中整合制作出的粒子特效。
首先,打开源代码的工程,编译之,当然你得在工程中设置好Ogre的include和dll路径。不然编译不过。编译通过后会在Particle Universe Plugin\VCBuild\bin\Debug下面看到一个生成的ParticleUniverse_d.dll文件,将它拷贝到ogre的工作路径,默认应该是OgreSDK_vc9_v1-7-4\bin\Debug。然后再你的ogre工程中需要加入ParticleUniverse的include和dll路径并且需要附加Particle Universe Plugin\VCBuild\lib\Debug下的ParticleUniverse_d.lib文件,不然链接不过。
然后需要把PU以插件的方式加入到ogre中,做法是在plugins_d.cfg文件中加入 Plugin=ParticleUniverse_d
第三步需要将PU的资源设置到Ogre中,这一步用到的是pu的编辑器,将其pu editor\sync\Particle Universe Editor目录下的media文件夹整个拷贝到OgreSDK_vc9_v1-7-4\bin\Debug下,再将pu editor\sync\Particle Universe Editor\resources.cfg中的内容整合到D:\OgreSDK_vc9_v1-7-4\bin\Debug\resources_d.cfg中。
最后就是在你的代码中使用PU粒子啦:代码中包含头文件#include "ParticleUniverseSystemManager.h"
然后加入代码
ParticleUniverse::ParticleSystemManager* pManager = ParticleUniverse::ParticleSystemManager::getSingletonPtr();
ParticleUniverse::ParticleSystem* pSys = pManager->createParticleSystem("mySys","PUMediaPack/Bubbles",mSceneMgr);
mSceneMgr->getRootSceneNode()->attachObject(pSys);
pSys->start();
表示播放自带的PUMediaPack/Bubbles特效,你可以看到屏幕中在冒泡泡。