查看: 1836|回复: 3

复杂粒子效果的隐藏

[复制链接]

该用户从未签到

发表于 2009-5-5 14:50:00 | 显示全部楼层 |阅读模式
我创建复杂的粒子系统,代码如下:
osgParticle:articleSystem *create_complex_particle_system(osg::Group *root)
{
    osgParticle::Particle ptemplate;

    ptemplate.setLifeTime(2);

    ptemplate.setSizeRange(osgParticle::rangef(0.75f, 0.75f));
    ptemplate.setAlphaRange(osgParticle::rangef(0.2f, 0.2f));
    ptemplate.setColorRange(osgParticle::rangev4(
        osg::Vec4(1, 1, 1, 0.5f), //1,0.5f,0.3f,0.5f
        osg::Vec4(1, 1, 1, 0.5f)));//0,0.7f,1.0f,0.5f
    ptemplate.setRadius(0.001f);    // 5 cm wide particles
    ptemplate.setMass(0.05f);

    osgParticle::ParticleSystem *ps = new osgParticle::ParticleSystem;
    ps->setDefaultAttributes("Images/particle.rgb", false, false);
    ps->setDefaultParticleTemplate(ptemplate);
    osgParticle::ModularEmitter *emitter = new osgParticle::ModularEmitter;
    emitter->setParticleSystem(ps);
        osgParticle::RandomRateCounter *counter = new osgParticle::RandomRateCounter;
    counter->setRateRange(2, 2);
    emitter->setCounter(counter);
    osgParticle::PointPlacer *placer= new osgParticle::PointPlacer;
        placer->setCenter(223.0,29.0,95.0);
        emitter->setPlacer(placer);
        osgParticle::RadialShooter *shooter = new osgParticle::RadialShooter;
    shooter->setInitialSpeedRange(3, 3);
    emitter->setShooter(shooter);
        root->addChild(emitter);
        osg::Geode *geode = new osg::Geode;
    geode->addDrawable(ps);
        root->addChild(geode);
        return ps;
    osgParticle::ParticleSystemUpdater *psu = new osgParticle::ParticleSystemUpdater;
    psu->addParticleSystem(_ps);
}
我想在程序启动时,先隐藏该粒子效果,在操作用时再显示该粒子效果,我使用psu->setNodeMask(0);想隐藏,可是osgParticle::ParticleSystemUpdater没有setNodeMask成员,有什么办法?谢谢!

该用户从未签到

发表于 2009-5-5 15:15:27 | 显示全部楼层
OSG的粒子系统目前似乎不是那么好控制,隐藏可以设置上一级节点的setNodeMask,但是再显示的时候会无效;我个人暂时不知道万全的方法

该用户从未签到

发表于 2009-5-5 15:28:52 | 显示全部楼层
为什么不直接在需要的时候再创建呐?

把Emitter放在一个Switch下应该可以实现隐藏吧,如果不再需要就干脆removeChild好了

该用户从未签到

发表于 2009-5-5 16:28:41 | 显示全部楼层
Emitter 或者Program的 setEnabled()
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表