Ogre粒子系统 以及 粒子脚本


粒子系统在三维显示中占有很重要的位置,如3D中的雨,雪,喷泉,爆炸等效果都是粒子完成的。

基本概念:

         粒子是用四边形来表示的,它有长宽,和其方向,有数量和材质,还有重量。这些属性封在粒子属性变换器(Affector)中,Affector中包含颜色衰退变换器(colourFadeAffector)和线形影响变换器(LinearForceAffector)和点状粒子发生器(PointEmmiter),由这些组成粒子脚本文件,以.Particle为其扩展名。点状粒子发生器随机地从单一的点发射粒子;盒状粒子发生器随机的从一个区域发射粒子。通过创建Plugins你可以向ogre里增加一个新的发谁。当前ogre只支持点状粒子发生器和盒状粒子发射器。当粒子发生器不停的喷发大量粒子时,就可以形成烟、火和爆炸等效果,结构图如下:

Ogre粒子系统 <wbr>以及 <wbr>粒子脚本

粒子系统脚本:

         OGRE提供了粒子系统脚本语言,刻一张哎脚本中设置粒子的各种属性,而不用重新编译程序。这样给使用者带来了方便。需要注意的粒子系统脚本文件有自己的语法,类似c++,注释用“//”,用“{}”来区分界限,但不支持在代码后跟注释。

         粒子系统给在脚本中式用模板的形式定义的,你可以在程序运行时期创建多个实例。

如何载入粒子脚本:

         粒子系统脚本是在系统初始化的时候载入的,缺省情况下在系统在公共资源路径(Root::addResourceLocation函数指定)下查找所有扩展名为“.particle”的文件并解析它们,如果想要指定其他扩展名可以使用particleSystemManager::getsingleton().ParseAllSource方法,如果想要解析单个的粒子系统脚本文件可使用ParticleSystemManager::getsingleton().parseScript方法。

         一旦粒子系统脚本被载入,你可以使用ParticleSystemManager::getSingleton().createSystem()方法来才创建一个实例化的粒子系统,该方法接受两个参数,一个该粒子系统的名称,而另一个参数是要参照的模板名称(也就是脚本中定义过的模板名称)

 

格式:

         可以在一个脚本文件中定义多个粒子系统模板。

          以下面的例子做说明(参考Ogre使用指南|Mage小组编写),下面是一个比较典型的粒子脚本,被用在了demo中:

particle_system Examples/GreenyNimbus     

//粒子系统的模板名

{

material        Examples/FlarePointSprite

//粒子的Material

particle_width 35

//粒子的宽度

particle_height 35

//粒子的高度

cull_each       false

//粒子的裁剪模式:整体包围盒湖综合各单个粒子裁剪

         quota           5000

    //粒子的数目

billboard_type  point

//公告板类型:point指代表粒子的四边形总是面向摄像机

   

    // Area emitter   发射器区域

emitter Box

//盒状粒子发射器

   

        angle           30

                 //粒子发射的时候偏离direction的最大角度

       emission_rate   30

                //发射速率(个/秒)

        time_to_live    1

                   //粒子生存时间(秒)

        direction       0 1 0

                   //粒子发射的方向

        velocity        0

                   //速率

        colour_range_start  1 1 0

                   //颜色起始值

        colour_range_end    0.3 1 0.3

                   //颜色结束值(在起始值和结束值之间取随机数)

 

//粒子发射器BOX的大小(宽度、高度、深度定义)

        width           60

                   height          60

        depth           60

    }

 

// Make em float upwards

//对运动中的粒子加上的一个外力,影响其运动轨迹

    affector LinearForce

    {

        force_vector      0 100 0

                   //指定外力的影响(用向量表示)

        force_application add

                   //指定将粒子的运动向量加上外力的向量  效果:匀加速运动

    }

 

// Fader 

//影响粒子中的颜色

    affector ColourFader

      //每秒衰减0.25

        red -0.25

        green -0.25

        blue -0.25

    }

}

脚本中的每一个粒子系统模板都必须有一个名字,且必须是在”{“前的一行。这个名称必须是唯一的。名字中可以包含“/”来构成路径,但是OGRE引擎只是把它当做字符串来看待,并不真正来分析这个路径,它仅仅方便程序员来区分层次。

         一个例子系统可以设置一些上层属性。如:quota表示允许的最大粒子个数。除了最基本的属性之外,还必须在一个粒子系统模板内嵌套定义发射器emitters和属性变换器affectors。它们内部的属性与它们的类型有关。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值