赞
踩
节点访问器
- #pragma once
- #include<Windows.h>
- #include<osg/Node>
- #include<osgDB/ReadFile>
- #include<osg/MatrixTransform>
- #include<iostream>
-
- using namespace std;
-
- class findNode : public osg::NodeVisitor
- {
- public:
- findNode() :osg::NodeVisitor(TRAVERSE_ALL_CHILDREN)
- {
-
- }
-
- void setFindName(const std::string& name)
- {
- m_name = name;
- }
-
- virtual void apply(osg::Node& searchNode)
- {
- if (searchNode.getName() == m_name)
- {
- std::cout << "The Node named of: " << m_name << " is found" << std::endl;
- m_NodeToFind = &searchNode;
- return;
- }
- traverse(searchNode);
- }
-
- //返回查询到的节点指针
- osg::Node* getFindNode() {return m_NodeToFind;};
-
- public:
- std::string m_name;
- osg::Node* m_NodeToFind; //查找得到的节点
-
- };

访问代码
- findNode f;
- f.setFindName("cessna");
- root->accept(f);
- osg::MatrixTransform*kk = dynamic_cast<osg::MatrixTransform*>(f.getFindNode());
- std::cout << "获取模型字节点名称:" << kk->getChild(0)->asGroup()->getName();
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。