Ogre中配置PU粒子系统

来源:互联网 发布:时间校对软件 编辑:程序博客网 时间:2024/03/29 22:22

配置方法原文:http://www.cnblogs.com/leexuzhi/archive/2012/08/26/2657763.html

为防止原文被删,下面是原文内容:

[plain] view plaincopyprint?
  1. 游戏中的粒子系统常用来被创建各种炫丽多姿的特效,例如魔法效果,闪电,火焰,火舌,光环,雨雪,落叶等等,其重要程度不言自明。但很多初学者对粒子系统的使用仍是一头茫然,这大多也都是因为多数书籍上只是介绍了粒子系统的原理和简单的效果实现,例如最简单的礼花效果等等,很多同学看过了以后并不觉得粒子系统能有什么过人之处,或是觉得即使粒子能制作高质量的特效,但也不知如何实现。  
  2.   
  3. 当然在真正的游戏开发中,粒子系统不大可能是像教程上写得那样用硬编码的形式实现,必须有一个成型的粒子系统,这个系统常常和游戏引擎结合,或是被游戏引擎实现,然后提供各种制图工具的导出插件,例如3dmax和maya等等,将其制作的粒子特效导出成为游戏引擎识别的格式,然后应用于游戏代码中。没错,游戏中的效果基本都是美工做的,程序再牛叉都只有看代码的份。  
  4.   
  5. OGRE作为一个出色的开源引擎,怎么能少了粒子系统呢,当然它没有其他引擎那么强大,能与建模工具结合,毕竟它既是免费,又只是一个图像引擎,而并非完整的游戏引擎。所以它只有一个第三方的粒子插件ParticleUniverse,该插件为收费9欧元,但是在中国你懂得,ParticleUniverse有一套源代码,一套编辑器。编辑器是可视化的,用于制作粒子特效,并自带了很多例子,而源代码能够编译出一个dll文件用于在ogre中整合制作出的粒子特效。  
  6.   
  7. 首先,打开源代码的工程,编译之,当然你得在工程中设置好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文件,不然链接不过。  
  8.   
  9. 然后需要把PU以插件的方式加入到ogre中,做法是在plugins_d.cfg文件中加入 Plugin=ParticleUniverse_d  
  10.   
  11. 第三步需要将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中。  
  12.   
  13. 最后就是在你的代码中使用PU粒子啦:代码中包含头文件#include "ParticleUniverseSystemManager.h"  
  14.   
  15. 然后加入代码  
  16.   
  17. ParticleUniverse::ParticleSystemManager* pManager = ParticleUniverse::ParticleSystemManager::getSingletonPtr();  
  18. ParticleUniverse::ParticleSystem* pSys = pManager->createParticleSystem("mySys","PUMediaPack/Bubbles",mSceneMgr);  
  19. mSceneMgr->getRootSceneNode()->attachObject(pSys);  
  20.   
  21. pSys->start();  
  22.   
  23. 表示播放自带的PUMediaPack/Bubbles特效,你可以看到屏幕中在冒泡泡。  
[plain] view plaincopyprint?
  1. 游戏中的粒子系统常用来被创建各种炫丽多姿的特效,例如魔法效果,闪电,火焰,火舌,光环,雨雪,落叶等等,其重要程度不言自明。但很多初学者对粒子系统的使用仍是一头茫然,这大多也都是因为多数书籍上只是介绍了粒子系统的原理和简单的效果实现,例如最简单的礼花效果等等,很多同学看过了以后并不觉得粒子系统能有什么过人之处,或是觉得即使粒子能制作高质量的特效,但也不知如何实现。  
  2.   
  3. 当然在真正的游戏开发中,粒子系统不大可能是像教程上写得那样用硬编码的形式实现,必须有一个成型的粒子系统,这个系统常常和游戏引擎结合,或是被游戏引擎实现,然后提供各种制图工具的导出插件,例如3dmax和maya等等,将其制作的粒子特效导出成为游戏引擎识别的格式,然后应用于游戏代码中。没错,游戏中的效果基本都是美工做的,程序再牛叉都只有看代码的份。  
  4.   
  5. OGRE作为一个出色的开源引擎,怎么能少了粒子系统呢,当然它没有其他引擎那么强大,能与建模工具结合,毕竟它既是免费,又只是一个图像引擎,而并非完整的游戏引擎。所以它只有一个第三方的粒子插件ParticleUniverse,该插件为收费9欧元,但是在中国你懂得,ParticleUniverse有一套源代码,一套编辑器。编辑器是可视化的,用于制作粒子特效,并自带了很多例子,而源代码能够编译出一个dll文件用于在ogre中整合制作出的粒子特效。  
  6.   
  7. 首先,打开源代码的工程,编译之,当然你得在工程中设置好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文件,不然链接不过。  
  8.   
  9. 然后需要把PU以插件的方式加入到ogre中,做法是在plugins_d.cfg文件中加入 Plugin=ParticleUniverse_d  
  10.   
  11. 第三步需要将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中。  
  12.   
  13. 最后就是在你的代码中使用PU粒子啦:代码中包含头文件#include "ParticleUniverseSystemManager.h"  
  14.   
  15. 然后加入代码  
  16.   
  17. ParticleUniverse::ParticleSystemManager* pManager = ParticleUniverse::ParticleSystemManager::getSingletonPtr();  
  18. ParticleUniverse::ParticleSystem* pSys = pManager->createParticleSystem("mySys","PUMediaPack/Bubbles",mSceneMgr);  
  19. mSceneMgr->getRootSceneNode()->attachObject(pSys);  
  20.   
  21. pSys->start();  
  22.   
  23. 表示播放自带的PUMediaPack/Bubbles特效,你可以看到屏幕中在冒泡泡。  
作者是:重甲土拨鼠


下面就是按照原文要求配置环境了!

首先是源代码的下载:http://download.csdn.net/detail/wbn850/3746298(本人使用下载的链接)

按照默认步骤安装完成!

在..\..\..\Particle Universe\Particle Universe Plugin\VCBuild路径下找到工程文件。

我使用的是VS2010,于是右键使用VS2010打开,转换之后出现三个工程,这里我们只需要中间即第二个工程编译出所需的dll就行了。

右键该工程,按照原文方法配置该工程ogre环境。到了这一步,基本和原文操作相同,下面就开始有差别了!

如果单单按照原文进行的话,这个资源是编译不过去了,所以需要对这个资源的源代码进行一些小修改。

直接编译的时候就会发现一些小bug了,我们需要修复一下这些bug。

首先是在Source Files文件夹ParticleRenderers文件夹下第一个cpp文件ParticleUniverseBeamRenderer.cpp第193行,这里这个函数调用缺少了一个参数,我们需要添加一个参数进去,我添加后是element = Ogre::BillboardChain::Element(Vector3::ZERO, _mRendererScale.x * mParentTechnique->getDefaultWidth(), 0.0f, ColourValue::White,Quaternion::ZERO);

修改之后再编译会再报错,错误是关于ms_Singleton变量的问题,将所有报错的ms_Singleton改成msSingleton,大概3~4个!

做完这些修改,工程应该就可以编译通过,如果还是不行的话,请重新检查以上步骤!

接下来继续回到原文的步骤,按照原文的步骤基本就可以完成PU环境的搭建了。

但是要记得,原文的范例代码是有一点小错误的,因为我找到的这个PU资源是没有 “PUMediaPack/Bubbles这个效果的,建议换成“sonw”,这样就可以看到下雪的粒子效果了。

更多0
原创粉丝点击