查看: 2213|回复: 4

求助关于粒子系统相对坐标系下的显式

[复制链接]

该用户从未签到

发表于 2009-4-19 18:08:05 | 显示全部楼层 |阅读模式
我的场景图加入一个osgParticle::FireEffect,使用相对坐标的方式,却怎么也看不到显式效果,不知道跑到哪去了:(
代码如下
        osgParticle::FireEffect* fire = new osgParticle::FireEffect(osg::Vec3d(0,0,0), 10.f);
        fire->setEmitterDuration(100000);
        fire->setUseLocalParticleSystem(false);
        root->addChild(fire);
其中root节点是有一个非单位阵的转换矩阵的MatrixTransform

请了解的朋友给帮个忙,急等

该用户从未签到

发表于 2009-4-19 18:28:37 | 显示全部楼层
setUseLocalParticleSystem(false)似乎是设置不要使用相对坐标系?

该用户从未签到

 楼主| 发表于 2009-4-19 18:35:31 | 显示全部楼层
缺省值是true,对应的ParticleProcessor的ReferenceFrame是ABSOLUTE_RF
而且看效果,如果setUseLocalParticleSystem(true),粒子系统Parent节点的变换矩阵没有被应用到粒子系统上

该用户从未签到

发表于 2009-4-19 20:15:48 | 显示全部楼层
注意ParticleSystem决不可以放在Transform节点之下。

该用户从未签到

 楼主| 发表于 2009-4-19 22:41:38 | 显示全部楼层
最终使用类似这样的方式实现了粒子系统随着Transform节点一起运动和旋转
osgParticle:articleSystem* ps = new osgParticle::ParticleSystem;
osg::Geode* psgeo = new osg::Geode;
psgeo->addDrawable(ps);
osgParticle::FireEffect* fire = new osgParticle::FireEffect(false);
fire->setParticleSystem(ps);
fire->setUseLocalParticleSystem(false);
fire->buildEffect();
transformnode->addChild(fire);
transformnode->addChild(psgeo);

本来我的想法是,ParticleSystem放在Transform节点下,ParticleEffect放在root(Group类型的根节点)下,应该能够使粒子系统随Transform正确的运动和旋转
然而实践证明,二者都放在Transform节点下才行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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