查看: 3688|回复: 4

osgEXP导出场景后遍历出现的问题

[复制链接]

该用户从未签到

发表于 2009-4-13 22:39:29 | 显示全部楼层 |阅读模式
用osgEXP + 3DMAX8.0导出了一个场景如图一所示
场景中有Sphere01、Sphere02、Cone01、Teapot01、Box01、Cylinder01共计6个模型
但是使用NodeVisitor遍历场景时,列出的却有12个节点,节点名称如图二所示
是代码的问题还是什么原因造成了这样的情况呢?
代码如下:
  1. class CTraverseScene : public osg::NodeVisitor
  2. {
  3. public:
  4.   CTraverseScene() : osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN)
  5.   {

  6.   }

  7.   ~CTraverseScene()
  8.   {

  9.   }

  10.   virtual void apply(osg::Node &node)
  11.   {
  12.         foundNodeList.push_back(&node);
  13.         traverse(node);
  14.   }

  15.   typedef std::vector<osg::Node*> nodeListType;

  16.   nodeListType& getNodeList()
  17.   {
  18.         return foundNodeList;
  19.   }

  20. private:
  21.   nodeListType foundNodeList;
  22. };

  23. int main()
  24. {
  25.   osg::ref_ptr<osg::PositionAttitudeTransform> nodePAT = new osg::PositionAttitudeTransform;
  26.   osg::ref_ptr<osg::Group> root = new osg::Group;
  27.   osg::ref_ptr<osg::Node> node = new osg::Node;
  28.   osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer;

  29.   node = osgDB::readNodeFile("BoxandSphere.osg");
  30.   nodePAT->addChild(node.get());
  31.   root->addChild(nodePAT.get());

  32.   CTraverseScene ts;
  33.   node->accept(ts);

  34.   std::vector<osg::Node*> nodeList = ts.getNodeList();

  35.   for (unsigned int i = 0; i < nodeList.size(); i++)
  36.   {
  37.         std::cout << nodeList[i]->getName() << std::endl;
  38.   }

  39.   viewer->setSceneData(root.get());
  40.   viewer->setCameraManipulator(new osgGA::TrackballManipulator);

  41.   while (!viewer->done())
  42.   {
  43.         viewer->frame();
  44.   }

  45.   return 0;
  46. }
复制代码

图一

图一

图二

图二

该用户从未签到

发表于 2009-4-14 00:45:32 | 显示全部楼层
这个很简单,,,你导出一个就可以了,,,Sphere01也是变换节点,,Shpere01-GEODE是一个叶节点,,这样它本身就包含了姿态信息~~~~

该用户从未签到

 楼主| 发表于 2009-4-14 09:00:16 | 显示全部楼层
我用的是osgEXP的默认设置导出的
怎么样才可以只导出一个呢?

该用户从未签到

发表于 2009-4-14 09:14:23 | 显示全部楼层
导出一个不是osgExp的设置,在3dsmax中选中要导出的对象,然后选择Export Selected就可以了

该用户从未签到

 楼主| 发表于 2009-4-14 12:01:42 | 显示全部楼层
呵呵
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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