花了点时间研究了一下Ogre的粒子系统
particle_system tsss
{
//普通属性
cull_each true
emit_emitter_quota 3
iteration_interval 0
local_space false
material DefaultMaterial
nonvisible_update_timeout 0
particle_height 100
particle_width 20
quota 10000
renderer billboard
//渲染器的属性
sorted false
accurate_facing false
billboard_origin center
billboard_rotation_type texcoord
billboard_type oriented_common
common_direction 0 -1 0
common_up_vector 0 1 0
point_rendering false
//发射器
emitter Box
{
angle 0
colour 1 1 1 1
colour_range_start 1 1 1 1
colour_range_end 1 1 1 1
direction 0 -1 0
emission_rate 100
position 0 0 0
velocity 50
velocity_min 50
velocity_max 50
time_to_live 5
time_to_live_min 5
time_to_live_max 5
duration 0
duration_min 0
duration_max 0
repeat_delay 0
repeat_delay_min 0
repeat_delay_max 0
name
emit_emitter
width 1000
height 1000
depth 0
}
//Affactor
affector LinearForce
{
force_vector 0 -200 0
force_application add
}
}
脚本里面
渲染器的属性是跟在普通属性后面的
发射器和Affactor分开用大括号写起来
枚举属性的方式都是去获取字典库 然后根据字典库来获取属性的字符串值
举一个Affactor的例子:
void EnumAffectorParameters( Ogre::ParticleAffector* affactor, StringMap& parameters )
{
using namespace Ogre;
ParamDictionary* dictionay = affactor->getParamDictionary();
if( NULL == dictionay )
return;
const ParameterList& list = dictionay->getParameters();
for ( ParameterList::const_iterator it = list.begin(); it != list.end(); ++it )
{
const ParameterDef& def = *it;
String value = affactor->getParameter( def.name.c_str() );
parameters[def.name] = value;
}
}