查看: 932|回复: 5

在场景中对节点命名,在调用的函数中却寻找不到此节点,求解啊

[复制链接]

该用户从未签到

发表于 2013-6-8 10:40:27 | 显示全部楼层 |阅读模式
在main主函数中创建osg::Camera* createHUD()这么一个函数,函数中定义了osg:ositionAttitudeTransform* pat = new osg::PositionAttitudeTransform这么一个pat节点,然后对此节点命名pat->setName("helpBoardNode"),完成后在findNodeVisitor函数(不在main里面)中寻找此节点却找不到,而用findNodeVisitor函数寻找当初在creator中设定好的节点是可以的,这是什么原因呢?如何才能在main函数外访问到这个名为"helpBoardNode"的节点呢?

该用户从未签到

发表于 2013-6-8 11:22:05 | 显示全部楼层
怎么查找的 对那些几点accept了

该用户从未签到

 楼主| 发表于 2013-6-8 12:32:15 | 显示全部楼层
本帖最后由 天行剑 于 2013-6-8 12:33 编辑
liuzhiyu123 发表于 2013-6-8 11:22
怎么查找的 对那些几点accept了


        nodeVisitor.setNameToFind("helpBoardNode");
        m_rootNode->accept(nodeVisitor);
        m_helpNode = dynamic_cast<osg:ositionAttitudeTransform*>(nodeVisitor.getFindNode());
就是用类似于上面的方法accept的啊,可是总是报错,于是试着把节点换成建模时设好的那些节点就没问题了,请问这是怎么回事呢?

该用户从未签到

发表于 2013-6-8 15:56:26 | 显示全部楼层

nodeVisitor.getFindNode()的返回值应该是个Node    不能直接复制给m_helpNode 需要动态转换下  否则类型不匹配

该用户从未签到

 楼主| 发表于 2013-6-8 16:43:07 | 显示全部楼层
zhufu0208 发表于 2013-6-8 15:56
nodeVisitor.getFindNode()的返回值应该是个Node    不能直接复制给m_helpNode 需要动态转换下  否则类型 ...

可是我已经通过dynamic_cast把Node强制转成了PositionAttitudeTransform啊

该用户从未签到

发表于 2013-6-13 11:32:16 | 显示全部楼层
检查您动态转换的结果,是否为NULL,即您找到的节点是否真的是一个PAT节点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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