OSG中找到特定节点的方法

2023-06-12,,

OSG中找到特定节点方法

转自:http://38288890.blog.163.com/blog/static/19612845320072721549504/

为了在OSG中找到需要的节点并对节点做出相应的操作,可以从NodeVisitor类中继承一个类,NPS的教程

[download id="14"]
阐述了这个问题。下面是我写的一个类,找到指定名字、指定类型的节点:
class findGeoNamedNode:
public osg::NodeVisitor
{
public:
findGeoNamedNode();
findGeoNamedNode(const std::string name):
osg::NodeVisitor(TRAVERSE_ALL_CHILDREN) //Set traverse mode
{
resultNode=NULL;
this->name=name;
}

virtual void apply(osg::Node &searchNode)
{
if(searchNode.getName()==name)
{
osg::Geode* dynamicTry=dynamic_cast(&searchNode);

if(dynamicTry)
{
resultNode=dynamicTry;
}
}
traverse(searchNode);
}

osg::Geode* getNode()
{
return resultNode;
}
private:
osg::Geode* resultNode;
std::string name;
};
使用这个VISITOR类只需要调用以下的一些函数
osg::Node* testNode=NULL;
testNode=dynamic_cast(osgDB::readNodeFile("d:\\1.3ds"));

findGeoNamedNode* visitor=new findGeoNamedNode("Box01");
testNode->accept(*visitor);
用起来很方便,得益于visitor模式的正确应用。
 
 
 

您可能也喜欢:
OpenSceneGraph 笔记--如何导出三角形数据2
OpenSceneGraph 笔记--如何导出三角形数据
学习OpenSceneGraph
OpenSceneGraph 笔记--C++/CLI写托管Scene类
找点事情做
osgNETDemo
正确运行OSG的例子
OpenSceneGraph 笔记--窗体模式运行
OpenSceneGraph--移动物体
GPU体素化初探
OSG——选取和拖拽
虚拟手术DEMO

OSG中找到特定节点的方法的相关教程结束。

《OSG中找到特定节点的方法.doc》

下载本文的Word格式文档,以方便收藏与打印。