查看: 1501|回复: 6

新手提问有关osg::Sequence的操作排序

[复制链接]

该用户从未签到

发表于 2012-9-6 15:17:58 | 显示全部楼层 |阅读模式
最近研究帧动画,对于osg::Sequence存在疑惑,希望各位达人解惑~
  首先,如果我这样写
    osg::ref_ptr <osg::Squence> seq=new osg::Sequence;
       osg::ref_ptr<osg::Node> model1=osgDB::readNodeFile(.....);
       osg::ref_ptr<osg::Node> model2=osgDB::readNodeFile(.....);
       seq->insertChild(0,model1);
       seq->insertChild(1,model2);
      。。。。。。。设置帧动画的时间等。。。。。

    ******最后可以实现两个模型的切换显示********

但是,我将添加的模型改变成一个方法后返回的类型则不可以切换显示了,
     (1)osg::ref_ptr<osg::Node> SetModel1(osg::ref_ptr <osg::Node> n1)
             {
                 ........................................//一种渲染属性设置
                 .........................................
                 return n1.get();
            }
             osg::ref_ptr<osg::Node> SetModel2(osg::ref_ptr <osg::Node> n2)
             {
                 ........................................//另一种设置
                 .........................................
                 return n2.get();
            }
(2)
     osg::ref_ptr <osg::Squence> seq=new osg::Sequence;
       seq->insertChild(0,SetModel1(node));
       seq->insertChild(1,SetModel2(node));
      。。。。。。。设置帧动画的时间等。。。。。

    ******最后无法实现切换显示,但是去掉一个,另一个作为单独加载到场景中均没问题********

该用户从未签到

发表于 2012-9-6 17:34:59 | 显示全部楼层
请给出SetModel1和SetModel2函数的具体内容,您返回的节点是否是您想要的

该用户从未签到

 楼主| 发表于 2012-9-6 20:45:52 | 显示全部楼层
array 发表于 2012-9-6 17:34
请给出SetModel1和SetModel2函数的具体内容,您返回的节点是否是您想要的

        两个设置的内容均是将加载的模型进行颜色的改变,达到的动画效果是两个不同颜色的模型交替出现
         如:
           osg::ref_ptr <osg::Node> SetModel1(osg::ref_ptr <osg::Node> node1)
               {
           osg::StateSet *stateset=node1->getOrCreateStateSet();
                  //设置stateset红色
           .............
                 return node1.get();
               }

          请您指点下哈~

该用户从未签到

 楼主| 发表于 2012-9-6 20:47:31 | 显示全部楼层
本帖最后由 ShowHands 于 2012-9-6 21:02 编辑
array 发表于 2012-9-6 17:34
请给出SetModel1和SetModel2函数的具体内容,您返回的节点是否是您想要的


现在我跳出来了,但是遇到异常,您看我之前seq->insertChild(0,SetMode1(model))中,已经将其的index设为0,也就是第一个显示的。但是我运行时,osg::sequence对象却找不到插入的孩子,请您看截图~麻烦您指点下
(1)异常代码处
1.jpg
(2)异常
2.jpg
3.jpg

该用户从未签到

发表于 2012-9-7 08:57:23 | 显示全部楼层
顶一个~

该用户从未签到

 楼主| 发表于 2012-9-10 08:34:18 | 显示全部楼层
自顶一个,不会石沉大海吧~

该用户从未签到

发表于 2012-9-12 11:13:24 | 显示全部楼层
截图不是很明显么,animationPathCallback指针为空,您在操作一个空指针当然会错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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