查看: 1095|回复: 6

随着时间变化切换模型

[复制链接]

该用户从未签到

发表于 2011-7-11 21:37:38 | 显示全部楼层 |阅读模式
问题描述:
   现在有一组模型,现在我想每隔十秒切换一个模型,我用的是Settimer 方法,但是控制的不够精确,每次运行结果都不一样
能有更好的办法吗?

该用户从未签到

发表于 2011-7-12 00:11:41 | 显示全部楼层
可以用osg::ref_ptr<osg::Sequence>

该用户从未签到

发表于 2011-7-12 08:29:22 | 显示全部楼层
可以在回调里面做,判断getSimulationTime的值就可以了

该用户从未签到

 楼主| 发表于 2011-7-12 14:10:44 | 显示全部楼层
本帖最后由 david850911 于 2011-7-12 20:28 编辑

回复 3# array

谢谢array,我试了下更新回调的方法,但是节点没有显示出来。能帮我看下什么问题吗?
我想做的是在间隔5秒的时间切换一个节点,
class TimerCallBack : public osg::NodeCallback,public Handmodel
{   public:
double       _num;
     double       _delay;
     double      _preTime;
   public:
TimerCallBack():
       _delay(5.0),
    _preTime(0.0),
    _num(0.0)
     {}
   //~TimerCallBack();
   virtual void operator()(osg::Node* ,osg::NodeVisitor* nv)
   {
    if (nv->getFrameStamp())
    {
   
     double curTime = nv->getFrameStamp()->getReferenceTime();
     if (curTime-_preTime>=_delay)
     {   if(_num==0)
        {
      for (int i=0;i<SUMMODEL;i++)
        m_picNode1->setNodeMask(0);
        m_picNode1[0]->setNodeMask(1);
          }
     
      if (_num==1)
      {
       for (int i=0;i<SUMMODEL;i++)
        m_picNode1->setNodeMask(0);
       m_picNode1[1]->setNodeMask(1);
      }
      if (_num==2)
      {
       for (int i=0;i<SUMMODEL;i++)
        m_picNode1->setNodeMask(0);
       m_picNode1[2]->setNodeMask(1);
      }
     
     }
       _num++;
      _preTime = curTime;
     }
    }
   };     
后面是加到主场景中进行渲染. 但不明白为什么节点没有显示,更不用说切换了。谢谢!

该用户从未签到

 楼主| 发表于 2011-7-12 14:11:30 | 显示全部楼层
本帖最后由 david850911 于 2011-7-12 14:16 编辑

回复 2# FlySky


谢谢,我看了下书,只找到了osg::ImageSequencel类,用于切换图片,但我要切换的是IVE模型,能具体说下怎么用你说的osg::Sequence吗? 深表感谢!!

该用户从未签到

发表于 2011-7-13 04:42:13 | 显示全部楼层
参看osgsequence这个例子,OSG源码example下的

该用户从未签到

发表于 2011-7-13 08:16:49 | 显示全部楼层
回复 4# david850911


1、检察您的代码逻辑是否有问题2、这种时候使用Switch节点更加方便
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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