查看: 1528|回复: 4

请教:关于writeNodeFile前后NodePath的变化

[复制链接]

该用户从未签到

发表于 2010-6-10 15:08:11 | 显示全部楼层 |阅读模式
大家好,我想使用writeNodeFile来保存场景文件,发现用writeNodeFile后节点的NodePath信息好像会改变,如何在使用writeNodeFile的时候保证节点的NodePath不会改变呢。
   比如,我在一个场景中添加了一个圆柱体模型(使用3DMAX建立,经插件转换为IVE格式的模型),为了能够对这个模型进行空间位置变换的操作,我为这个模型节点建立了一个位置变换矩阵的父节点,然后又添加了矩阵变换的父节点。通过computeIntersections获得该圆柱体模型节点的NodePath信息如下:
   NodePath[0]sg::Camera
     NodePath[1]:osg::Group
     NodePath[2]:osg::MatrixTransform
     NodePath[3]:osg:ositionAttitudeTransform
     NodePath[4]:osg::object   (_name="场景根")
   NodePath[5]:osg::object  (_name="Cylinder01")
     NodePath[6]:osg::object   (_name = "Cylinder01-GEODE")
     保存场景后,再次打开此场景文件,通过computeIntersections获得该圆柱体模型节点的NodePath信息如下:
   NodePath[0]:osg::Camera
    NodePath[1]:osg::Group
    NodePaht[2]:osg::Group
    NodePath[3]:osg::Object   (_name="")
    NodePath[4]:osg::Object   (_name ="")
    NodePath[5]:osg::Object   (_name ="")
    NodePaht[6]:osg::Object   (_name = "场景根")
    NodePath[6]:osg::object   (_name = "Cylinder01-GEODE")
    从上面,可以看出,再次打开时,NodePath中多了一个osg::Group节点,这可能是因为我在打开文件的代码中,使用了Root->addchild()导致每次打开都会增加一个osg::Group。但是,为什么保存前的osg::MatrixTransform和osg::PositionAttitudeTransform节点信息没有了,而是变成了osg::Object 呢,并且保存前的NodePath[5]节点信息,在保存后的节点路径中也消失了。
   请问,以上使用writeNodeFile前后,对一个模型的NodePath造成的变化是怎样引起的呢?如果我想保存后,再次读文件时,还可以获得osg::MatrixTransform和osg::PositionAttitudeTransform节点的信息,该如何做呢?谢谢!

该用户从未签到

发表于 2010-6-10 16:19:44 | 显示全部楼层
为什么保存前的osg::MatrixTransform和osg:: PositionAttitudeTransform节点信息没有了,而是变成了osg::Object 呢

我个人认为不应该是这样的,不知道您的操作代码是否存在什么问题

该用户从未签到

 楼主| 发表于 2010-6-11 17:15:18 | 显示全部楼层
谢谢啊,我再检查下代码!另外想请教下,我想用VS2010开发osg的程序,是否一定要用VS2010编译出来的OSG库文件呢?

该用户从未签到

发表于 2010-6-12 08:30:31 | 显示全部楼层
最好是这样,不然可能会有无法预知的编译器兼容性问题

该用户从未签到

 楼主| 发表于 2010-6-12 15:26:55 | 显示全部楼层
好的 谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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