查看: 1569|回复: 7

关于osgprecipitation例子的问题

[复制链接]

该用户从未签到

发表于 2009-9-2 11:07:11 | 显示全部楼层 |阅读模式
在osgprecipitation例子中,实现了风、雨、雪的效果。可是场景在漫游的时候,速度稍快,这些效果就失真了。拿该例子来说,当稍微快速旋转场景的时候,雪效失真。其中缘由可能是受到了矩阵变化的影响。大家有什么好的解决办法吗?谢谢。

该用户从未签到

发表于 2009-9-2 12:27:28 | 显示全部楼层
似乎没有很好的方法,,或许你可以调节一下粒子的速度试试~~~~

该用户从未签到

发表于 2009-9-2 12:28:12 | 显示全部楼层
不要把粒子系统根节点放在Transform节点之下,这样可能会产生一些无法预料的问题,尽量放在整个场景的根节点之下

该用户从未签到

 楼主| 发表于 2009-9-2 14:00:39 | 显示全部楼层
我是直接挂在整个场景的根节点之下的,而且没有对粒子做任何的几何变换,就像这个例子一样。谢谢楼上两位的解答。

该用户从未签到

 楼主| 发表于 2009-9-3 10:32:25 | 显示全部楼层
我想在场景中实时的开启或者关闭雪效,采用了两种方法效果均不理想:
1)设置场景根节点为DYNAMIC,然后通过addChild和removeChild来开启或者关闭雪效。操作几次后,报如下错误:_BLOCK_TYPE_IS_VALID(pHead-nBlockUse) 。大致原因:反复对同一块内存进行操作所致。
2)通过回调来动态添加和删除雪节点。这次死机的问题解决了,但是当我在回调中添加雪节点后,雪效失真,而且机子反应迟钝。
  请教大家有没有更好的方法来解决这个问题,非常感谢。

该用户从未签到

发表于 2009-9-3 12:19:01 | 显示全部楼层
尽量不要addChild/removeChild。可以用Switch节点试一试

该用户从未签到

 楼主| 发表于 2009-9-5 17:51:51 | 显示全部楼层
用Switch解决了,谢谢。。。
不过,对这个例子,我还有几个疑问:
1)雾的浓度。设置其浓度为1和设置浓度为0效果变化不明显。在我看来,其实就没有变化。。。
2)风向。在场景中加一个雪节点和雨节点,分别设置他们的风向为沿x轴正向和x轴负向。加入节点的先后顺序影响到了风向的正确性。具体代码如下:
  osgParticle:recipitationEffect* pe=new osg::PrecipitationEffect;
   pe->snow(0.5);   
   pe->setWind(osg::Vec3(1.0,0.0,0.0));

   osgParticle::PrecipitationEffect* re=new osg::PrecipitationEffect;
   re->snow(0.5);   
   re->setWind(osg::Vec3(-1.0,0.0,0.0));

    osg::Group* root=new osg::Group;
    //如下两行代码的先后顺序不一样,风向就会不一样。具体来说:先加入的节点风向是正确的,而后加入的节点风向是采用默认的。
    root->addChild(pe);
    root->addChild(re);
    。。。。。。。。。。

该用户从未签到

发表于 2009-9-5 20:04:19 | 显示全部楼层
我不太清楚,粒子库本身是可能存在问题的,您不妨自行研究和参与osg的完善工作
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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