查看: 1258|回复: 3

求助!想动态改变粒子系统的效果,array、FlySky等高手进来帮帮我

[复制链接]

该用户从未签到

发表于 2010-9-29 14:42:54 | 显示全部楼层 |阅读模式
本帖最后由 luyang0222 于 2010-9-29 14:44 编辑

打个比方,我想雪的效果通过按键来实现,即按了某个键,开始下雪了,再按一下就关掉了这种效果,另外通过“+”“-”来控制雪粒子的大小。

我是这样的思路:
=================================================
① 先写一个按键响应的类changesnow: public osgGA::GUIEventHandler

在这个类里定义几个成员变量 float m_snow,m_snowtemp;bool button;并设了初值。

然后设置了按键消息处理bool changesnow::handle( const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa )

实现每按下“R”或“r”,m_snow自减0.1f,每按下“T”或“t”,m_snow自增0.1f,每按下“k”或“K”,m_snow由当前值与0.0f来回切换。

②  在main()先申请一个粒子系统pe:
osgParticle::recipitationEffect* pe = new osgParticle::recipitationEffect();
然后实例化类changesnow aa;
再pe->snow(aa.m_snow);

而后再把pe加到组节点上 root->addChild(pe);

后来再来个viewer->addEventHandler( new changesnow());
=================================================
我以为这样的话,就可以通过按键盘改变m_snow的值,从而改变雪的效果。但是实际运行却是没有反应。请教各位高手帮我解答疑惑。

该用户从未签到

发表于 2010-9-29 16:30:31 | 显示全部楼层
从思路上而言,这样应该是可以的,但是您并没有说明在handle()中,m_snow是如何被传入PrecipitationEffect实例的;我只看到您在main()中用到了这个变量

该用户从未签到

 楼主| 发表于 2010-9-29 20:02:25 | 显示全部楼层
谢谢王教授,现在想明白了

该用户从未签到

发表于 2010-9-30 08:24:59 | 显示全部楼层
3# luyang0222

不用这么客气,我这辈子还没当过教授
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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