当前位置:   article > 正文

osg根据节点名称返回节点_osg::node *

osg::node *

节点访问器

  1. #pragma once
  2. #include<Windows.h>
  3. #include<osg/Node>
  4. #include<osgDB/ReadFile>
  5. #include<osg/MatrixTransform>
  6. #include<iostream>
  7. using namespace std;
  8. class findNode : public osg::NodeVisitor
  9. {
  10. public:
  11. findNode() :osg::NodeVisitor(TRAVERSE_ALL_CHILDREN)
  12. {
  13. }
  14. void setFindName(const std::string& name)
  15. {
  16. m_name = name;
  17. }
  18. virtual void apply(osg::Node& searchNode)
  19. {
  20. if (searchNode.getName() == m_name)
  21. {
  22. std::cout << "The Node named of: " << m_name << " is found" << std::endl;
  23. m_NodeToFind = &searchNode;
  24. return;
  25. }
  26. traverse(searchNode);
  27. }
  28. //返回查询到的节点指针
  29. osg::Node* getFindNode() {return m_NodeToFind;};
  30. public:
  31. std::string m_name;
  32. osg::Node* m_NodeToFind; //查找得到的节点
  33. };

访问代码

  1. findNode f;
  2. f.setFindName("cessna");
  3. root->accept(f);
  4. osg::MatrixTransform*kk = dynamic_cast<osg::MatrixTransform*>(f.getFindNode());
  5. std::cout << "获取模型字节点名称:" << kk->getChild(0)->asGroup()->getName();

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/314960
推荐阅读
相关标签
  

闽ICP备14008679号