游戲中的粒子系統常用來被創建各種炫麗多姿的特效,例如魔法效果,閃電,火焰,火舌,光環,雨雪,落葉等等,其重要程度不言自明。但很多初學者對粒子系統的使用仍是一頭茫然,這大多也都是因為多數書籍上只是介紹了粒子系統的原理和簡單的效果實現,例如最簡單的禮花效果等等,很多同學看過了以后並不覺得粒子系統能有什么過人之處,或是覺得即使粒子能制作高質量的特效,但也不知如何實現。
當然在真正的游戲開發中,粒子系統不大可能是像教程上寫得那樣用硬編碼的形式實現,必須有一個成型的粒子系統,這個系統常常和游戲引擎結合,或是被游戲引擎實現,然后提供各種制圖工具的導出插件,例如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特效,你可以看到屏幕中在冒泡泡。