查看: 1230|回复: 3

找不到LOD节点下的几何节点

[复制链接]

该用户从未签到

发表于 2009-11-30 11:08:57 | 显示全部楼层 |阅读模式
我现在又一个Creator创建的模型,包括有一个LOD节点,该节点下有三个几何节点,可以找到该LOD节点,但其子节点数总为1,且没有一个是几何节点,请教这是怎么回事呢?查找节点的代码如下:
    class findNodeVisitor : public osg::NodeVisitor
{
public:
findNodeVisitor();
findNodeVisitor(const std::string &searchName);
virtual void apply(osg::Node &searchNode);
void setNameToFind(const std::string &searchName);
osg::Node* getFirst();
typedef std::vector<osg::Node*> nodeListType;
nodeListType& getNodeList() { return m_foundNodeList; }
static osg::Node* FindNamed(osg::Node* pParent,const std::string& strName);
private:
std::string m_strSearchForName;
nodeListType m_foundNodeList;
};

findNodeVisitor::findNodeVisitor(const std::string &searchName) :
osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN),
m_strSearchForName(searchName)
{
}
//The 'apply' method for 'node' type instances.
//Compare the 'searchForName' data member against the node's name.
//If the strings match, add this node to our list
void findNodeVisitor::apply(osg::Node &searchNode)
{
if (searchNode.getName() == m_strSearchForName)
{
  m_foundNodeList.push_back(&searchNode);
}
traverse(searchNode);
}
// Set the searchForName to user-defined string
void findNodeVisitor::setNameToFind(const std::string &searchName)
{
m_strSearchForName = searchName;
m_foundNodeList.clear();  
}
osg::Node* findNodeVisitor::getFirst()
{
if(!m_foundNodeList.empty())
{
  return *(m_foundNodeList.begin());
}
else
{
  return NULL;
}
}
osg::Node* findNodeVisitor::FindNamed(osg::Node* pParent,const std::string& strName)
{
if(pParent==NULL)
{
  printf("ERROR(findNodeVisitor): Node to be Searched is NULL.\n");
  return NULL;
}
findNodeVisitor visitor(strName);
pParent->accept(visitor);
return visitor.getFirst();
}

该用户从未签到

发表于 2009-11-30 11:20:12 | 显示全部楼层
可以察看LOD的子节点是什么类型,然后尝试继续向下遍历,直至得到您的几何节点为止

该用户从未签到

 楼主| 发表于 2009-12-1 14:51:56 | 显示全部楼层
只能找到LOD下的第一个几何节点

该用户从未签到

发表于 2009-12-1 15:37:17 | 显示全部楼层
如果您的LOD节点下只有一个Geode节点(注意,请您确定那是个Geode节点),那么看一下其中包含了几个Drawable对象,是否您的3个几何信息都被包含到其中了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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