`
isiqi
  • 浏览: 16558875 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Ogre 粒子系统及粒子脚本

阅读更多

Mage小组 著
Email: norman_chen@163.com
renwind@163.com
QQ: 18725262
http://www.173d8.com
http://blog.csdn.net/pizi0475

粒子系统及粒子脚本
粒子系统在三维显示中占有很重要的地位,如3D中的雨,雪,喷泉,爆炸效果等都是粒子系统神奇魅力的表现。
我们可以用程序的方式虚拟美国哥伦比亚号航天飞机在太空中爆炸的场景:大大小小的碎片向四处飞溅,耀眼的火花,滚滚的浓烟,在这其中多数元素都是混乱的。从技术的角度讲本场景中的大多数效果得益于一个优秀的粒子系统。烟,火花,这些3D中的效果通常使用粒子系统来创建的。
基本概念
粒 子是用四边形来表示的。它有长宽,和其方向,有数量和材质,还有重量。这些属性封在粒子属性变换器(Affector)中,Affector中包含颜色衰 退变换器(¬ColourFaderAffector)和线形影响变换器(LinearForceAffector)。粒子的产生由粒子发生器 (Emmiter)产生。它包含有盒状粒子发生器(BoxEmmitter)和点状粒子发生器( ¬PointEmmiter),由这些组成粒子脚本文件,以.particle为其扩展名。点状粒子发生器随机地从单一的点发射粒子;盒状粒子发生器随机 的从一个区域发射粒子。通过创建Plugins你可以向ogre里增加一个新的发射器。当前ogre只支持点状粒子发生器和盒状粒子发射器。
当粒子发生器不停的喷发出大量粒子时,就可以形成烟、火和爆炸等效果。
粒子系统结构图:

粒子系统脚本
OGRE提供了粒子系统脚本语言,可以在脚本中设置粒子的各种属性,而不用重新编译程序。这样给使用者带来了方便。需要注意的粒子系统脚本文件有自己的语法,类似C++:注释用“//”,用“{ }”来区分界限。但不支持在代码后跟注释。
粒子系统在脚本中是以模板的形式定义的,你可以在程序运行期创建多个实例。
载入粒子脚本
粒 子系统脚本是在系统初始化的时候载入的,缺省情况下系统在公共资源路径(Root::addResourceLocation函数指定)下查找所有扩展名 为“.particle”的文件并解析它们。如果你想指定其它扩展名可使用 ParticleSystemManager::getSingleton().parseAllSources方法,如果想解析单个的粒子系统脚本文件 可使用ParticleSystemManager::getSingleton().parseScript方法。
一旦粒子系统脚本被载入,你 可以使用ParticleSystemManager::getSingleton().createSystem()方法来创建一个实例化的粒子系统, 该方法接收两个参数,一个该粒子系统的名称,而另外一个参数是要参照的模板名称(也就是脚本中定义过的模板名称。
格式
可以在一个脚本文件中定义多个粒子系统模板。
以下是一个典型的粒子脚本,该脚本包含三个粒子系统模板,它被用于OGRE的粒子DEMO中,你可以运行该DEMO来查看实际效果。当然你也可以修改这些属性来改变效果。
// 粒子系统模板名
// Exudes greeny particles which float upwards
Examples/GreenyNimbus
{
// 粒子的Material
material Examples/Flare
// 粒子的宽度
particle_width 30
// 粒子的高度
particle_height 30
// 粒子的裁剪模式:整体包围盒裁剪或单个粒子裁剪。
cull_each false
// 粒子数目
quota 10000
// 公告板的类型:point指代表粒子的四边形总是面向摄像机。
billboard_type point

// 盒状粒子发射器
emitter Box
{
// 粒子发射时偏离direction的最大角度
angle 30
// 发射速率(个/秒)
emission_rate 30
// 粒子生存时间(秒)
time_to_live 50
// 粒子的发射方向
direction 0 1 0
// 速率
velocity 10
// 颜色起始值
colour_range_start 1 1 0
// 颜色结束值(在起始值和结束值之间取随机数)
colour_range_end 0.3 1 0.3
// 定义粒子发射器BOX的大小
width 60
height 60
depth 60
}

// LinearForce:对运动中的粒子的加上一个外力,影响其运动轨迹。
// Make em float upwards
affector LinearForce
{
// 指定外力的影响(用向量表示)
force_vector 0 100 0
// add:粒子的运动向量加上外力的向量。效果:匀加速运动。
force_application add
}

// ColourFader:影响粒子中的颜色
// Fader
affector ColourFader
{
// 每秒衰减0.25
red -0.25
green -0.25
blue -0.25
}

}

// A sparkly purple fountain
Examples/PurpleFountain
{
material Examples/Flare2
particle_width 20
particle_height 20
cull_each false
quota 10000
billboard_type oriented_self

// Area emitter
emitter Point
{
angle 15
emission_rate 75
time_to_live 3
direction 0 1 0
velocity_min 250
velocity_max 300
//颜色变换上下限
colour_range_start 0 0 0
colour_range_end 1 1 1
}

// Gravity
affector LinearForce
{
force_vector 0 -100 0
force_application add
}

// Fader
affector ColourFader
{
red -0.25
green -0.25
blue -0.25
}
}


// A downpour
Examples/Rain
{
material Examples/Droplet
particle_width 50
particle_height 100
cull_each true
quota 10000
// Make common direction straight down (faster than self oriented)
billboard_type oriented_common
common_direction 0 -1 0

// Area emitter
emitter Box
{
angle 0
emission_rate 100
time_to_live 5
direction 0 -1 0
velocity 50
colour_range_start 0.3 1 0.3
colour_range_end 0.7 1 0.7
width 1000
height 1000
depth 0
}

// Gravity
affector LinearForce
{
force_vector 0 -200 0
force_application add
}

}

脚本中的每一个粒子系统模板都必须有一个名字,且必须是在“{”前的第一行。这个名称必须是唯一的。名字中可以包含“/”来构成路径,但OGRE引擎只把它当成字符串看待,并不真正来分析这个路径,它仅仅方便程序员来区分层次。
一个粒子系统可以设置一些上层属性,如:quota 表示允许的最大粒子个数。除了基本属性外,还必须在一个粒子系统模板内嵌套定义发射器Emitters和属性变换器affectors。它们内部的属性与它们的类型有关。
粒子系统脚本的属性较多,请参考OGRE Tutorial中的Particle Scripts部分。


示例一
打开OGRE DEMO中Emample.particle试着改变粒子发射器(emitter Box和emitter Point)和粒子的发射速率(比如将emission_rate 100改为emission_rate 30),粒子生存时间(秒)(time_to_live )等等,注意区分大小写,存盘,然后再运行Demo_ParticleFX.exe看看效果。
示例二
打开OGRE中的Demo_ParticleFX工程,查看其中的代码,理解粒子系统的调用方法。
该程序在运行时,场景中有一个食人魔,头上冒着绿色的烟雾(粒子系统),旁边有两个运动的粒子发生器喷发着五颜六色光点(还是粒子系统)。
OGRE引擎在初始化的时候会自动载入粒子系统脚本文件,我们不用管它。
在 程序的createScene函数里,通过ParticleSystem* pSys1 = ParticleSystemManager::getSingleton().createSystem("Nimbus", "Examples/GreenyNimbus");创建出一个实际的粒子系统Nimbus,它采用的模板"Examples /GreenyNimbus"就是在粒子系统脚本中定义的。
本程序共有三个粒子系统,创建方法都一样,只不过采用的模板不同。
粒子系统被创建好后,可以将其attach到场景节点上去,便于运动控制。代码如下:
mSceneMgr->getRootSceneNode()->createChild()->attachObject(pSys1);
一旦粒子系统被attach到场景节点上,就可以通过FrameListener的frameStarted方法来控制节点运动,当然粒子也就边运动边喷发了。

分享到:
评论

相关推荐

    Ogre粒子系统及粒子脚本.rar

    《Ogre粒子系统及粒子脚本》 在游戏开发和可视化应用中,粒子系统是一种广泛使用的特效技术,能够实现如火焰、烟雾、水花、爆炸等动态效果。Ogre是一个开源的3D渲染引擎,它提供了强大的粒子系统支持,帮助开发者...

    Ogre粒子系统及粒子脚本.pdf

    总结来说,Ogre粒子系统通过粒子脚本提供了一种灵活的方式来创建复杂的3D视觉特效。开发者可以通过调整粒子的属性、发射器和影响器参数,以及编写自定义的插件,实现各种创新的动画效果。这种功能强大的工具对于游戏...

    Ogre粒子系统简介

    ### Ogre粒子系统详解 #### 粒子系统与粒子脚本的重要性 粒子系统在三维图形渲染领域占据着举足轻重的地位。无论是自然界的风雨雷电还是人为的烟火爆炸,这些视觉效果都能通过粒子系统得到生动逼真的模拟。例如,...

    ogre粒子系统属性及ogre学习资料

    本文将详细解释Ogre粒子系统的属性及其在实际应用中的作用。 1. **quota** - 这个属性定义了粒子系统在任何给定时间能够存在的最大粒子数量。默认值通常是10,但通常需要根据具体效果的需求调整,比如增加到10000,...

    基于OGRE粒子系统的烟花模拟

    ### 基于OGRE粒子系统的烟花模拟 #### 引言 随着计算机图形学的发展,对自然现象的逼真模拟成为研究的热点之一。在电影、游戏和动画领域,经常需要模拟诸如山、水、云、烟、火焰和烟花等自然现象。然而,这些不...

    OGRE粒子脚本祥解

    OGRE粒子脚本是一种强大的工具,它允许开发者在不修改源代码的情况下,通过脚本定义和实例化粒子系统。这提供了更高的灵活性,使得快速响应设计调整成为可能。粒子脚本通常用于创建各种视觉效果,如火花、烟雾、水滴...

    ogre粒子编写器ParticleEditor

    **Ogre粒子系统详解** Ogre(Object-Oriented Graphics Rendering Engine)是一个开源的3D图形渲染引擎,广泛应用于游戏开发、模拟软件以及可视化应用等领域。在Ogre中,粒子系统是一个重要的组件,用于创建各种...

    研究论文-基于OGRE粒子系统的喷泉模拟.pdf

    粒子系统在计算机图形学中占有至关重要的地位... 提出了一种基于OGRE粒子系统的喷泉模拟方法,在该图形渲染引擎下实现了多种喷泉效果. 使用这种简本语言使程序员更容易开发,大大提高了喷泉模拟的开发速度和开发效率.

    OGRE平台下的DEMO

    1. **3D渲染基础**:OGRE引擎的核心是其强大的3D渲染能力,包括模型加载、纹理映射、光照、阴影、粒子系统等。DEMO会展示这些技术如何被实际应用,帮助你理解3D图形的基本原理。 2. **场景管理**:OGRE提供了一种...

    ogre1.7教程及源码

    4. **高级渲染技术**:包括硬件着色器支持、动态阴影、体积雾、粒子系统等,这些功能可以实现复杂而真实的视觉效果。 5. **场景管理**:Ogre1.7的Scene Manager允许开发者以树状结构组织场景,便于管理和操作3D对象...

    论文研究-弹目交汇爆炸可视化方法研究.pdf

    针对弹目交汇中爆炸过程物理模拟复杂度高、实时性差的问题,提出一种基于OGRE粒子系统的实时可视化方法。研究了OGRE引擎和粒子系统理论,拓展粒子渲染器和发射器,结合OGRE脚本,生成弹目交汇爆炸实时可视化模型;...

    _Ogre3D.rar_Ogre_ Ogre_ogre_ogre3d 教程

    9. **粒子系统**:Ogre3D支持创建复杂的粒子效果,如火焰、烟雾、火花等。教程会展示如何创建和定制粒子系统。 10. **脚本语言**:Ogre3D支持使用脚本语言定义场景和组件,这将减少程序员的工作量。教程会涵盖如何...

    ogre手册word版_part2

    通过以上内容的介绍,相信读者已经对Ogre中的组合器应用及粒子系统脚本有了较为深入的理解。这些高级特性不仅增强了Ogre的灵活性,还为开发者提供了强大的工具来实现复杂的视觉效果。在实践中,结合示例项目和文档...

    OGRE 3D v1.4.0中文手册.pdf

    粒子系统是游戏和图形应用中模拟动态视觉效果的关键,粒子脚本通过定义粒子系统属性和行为来实现这一功能。它支持标准粒子发射器,如点发射器(PointEmitter)、盒状发射器(BoxEmitter)、圆柱形发射器...

    ogre 1.7 范例(共48例)

    Ogre 1.7提供了一个强大的粒子系统,范例会展示如何创建和定制粒子效果,以及如何与其他对象交互。 7. **脚本语言与插件** Ogre支持用脚本语言定义场景和行为,这使得非程序员也能进行3D场景的设计。同时,其插件...

    OGRE_SDK1.7.X

    7. **粒子系统**:OGRE内置了强大的粒子系统,可以创建火、烟、爆炸等特效。开发者可以自定义粒子形状、颜色、大小和生命周期等属性。 8. **脚本语言**:OGRE支持通过AngelScript、Lua等脚本语言配置场景和行为,...

    OGRE引擎使用指南 PDF

    - **粒子系统**:了解粒子脚本的格式和用法。 - **动画系统**:掌握基本动画和骨骼动画的实现方法。 - **用户界面**:使用Overlay和GuiElement等类构建UI。 #### 日志管理和异常处理 - **日志管理**:介绍Ogre的...

    OGRE教程 OGRE 入门教程

    - **特效**:提供丰富的视觉特效功能,如粒子系统、后处理效果等。 - **其他特性**:还包括脚本支持、资源管理等功能。 #### 二、OGRE的模块 OGRE由多个模块组成,每个模块都有其特定的功能: 1. **OgreMain模块*...

    ogre实例程序

    6. **粒子系统**:Ogre的粒子系统可以创建各种特效,如火焰、烟雾、爆炸等,通过粒子生成器、控制器和渲染器来定制粒子行为。 7. **资源管理**:Ogre的资源管理系统负责加载、缓存和管理3D模型、纹理、脚本等资源,...

Global site tag (gtag.js) - Google Analytics