查看: 1233|回复: 5

新人求助:使用smokeEffect,一段时间后烟雾就消失了,怎么设置不消失呢?

[复制链接]

该用户从未签到

发表于 2013-3-10 20:50:38 | 显示全部楼层 |阅读模式
osg::ref_ptr<osgParticle::SmokeEffect> createSmoke()
{
                osg::Vec3 wind(1.0f,0.0f,0.0f);
                osg::Vec3 position(-68.0f,803.0f,3.5f);
                osg::ref_ptr<osgParticle::SmokeEffect> smoke = new osgParticle::SmokeEffect(position, 1.0f,1.0f);
                smoke->setWind(wind);
                smoke->setName(gSmoke);
                return smoke.get();
}
我用这段代码创建了烟雾效果,但是过一段时间烟雾就没有了,怎么让他不消失呀?
本人菜鸟,各位大大不要见笑。~

该用户从未签到

发表于 2013-3-11 09:41:53 | 显示全部楼层
什么叫做“过一段时间烟雾就没有了”?您指得是每个粒子的生命周期短,还是所有粒子突然一起消失了

该用户从未签到

 楼主| 发表于 2013-3-11 11:04:29 | 显示全部楼层
array 发表于 2013-3-11 09:41
什么叫做“过一段时间烟雾就没有了”?您指得是每个粒子的生命周期短,还是所有粒子突然一起消失了

抱歉 没说明白。就是它不再产生粒子了。

该用户从未签到

发表于 2013-3-12 09:44:45 | 显示全部楼层
通过阅读SmokeEffect的源代码您可以迅速发现它有逐渐消失的设置:
  1. _emitter->setStartTime(_startTime);
  2. _emitter->setLifeTime(_emitterDuration);
  3. _emitter->setEndless(false);
复制代码
最简单的方法就是修改这里让它永远发射。您可以直接用getEmitter从外部取得发射器对象并且重新设置这几个接口的值

该用户从未签到

 楼主| 发表于 2013-3-12 13:38:40 | 显示全部楼层
array 发表于 2013-3-12 09:44
通过阅读SmokeEffect的源代码您可以迅速发现它有逐渐消失的设置:最简单的方法就是修改这里让它永远发射。您 ...

smoke->getEmitter()->setEndless(true);   
我添加了如上代码,
但是请问还有两个函数的参数该如何设置呢?
smoke->getEmitter()->setStartTime(?);
smoke->getEmitter()->setLifeTime(?);

该用户从未签到

发表于 2013-3-14 10:00:02 | 显示全部楼层
当然是根据您的需要设置了。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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