查看: 960|回复: 7

求助:读取osgb失败

[复制链接]

该用户从未签到

发表于 2015-5-5 11:08:48 | 显示全部楼层 |阅读模式
接触osg时间不长,遇到读取osgb文件读取的问题
尝试以下几种方法都不行,请教问题出在了哪里?
char strOut2[512];
sprintf(strOut2,"G:\\3dgis\\data\\1335.osgb");

1 osg::ref_ptr<osgDB::ReaderWriter> _rw;
if(!_rw.valid())        _rw = osgDB::Registry::instance()->getReaderWriterForExtension( "osgb" );                               
_rw->readObject(strOut2);
调试查看变量:osg::Object        {_name="" _dataVariance=UNSPECIFIED _userDataContainer=0x00000000 }

2 osgDB::ReaderWriter::ReadResult rr        = osgDB::Registry::instance()->readHeightField(strOut2, NULL);
调试查看变量:{_status=NOT_IMPLEMENTED _message="" _object={...} }
                               
3 osg::ref_ptr<osg::Node> loadedModel = osgDB::readNodeFile(strOut2);
调试查看变量:{_ptr=0x00000000 }

4 osg::HeightField* hftest = osgDB::readHeightFieldFile(strOut2);
调试查看变量:{_ptr=0x00000000 }

备注:这个osgb文件是我自己写的,用的是_rw->writeObject( *(hf.get()),strOut);这个方法,加载到三维球上是
可以的。我现在想读取出来,但是总是获取不到正确的指针变量
不明白为什么,问题出在的哪里?求指导

该用户从未签到

发表于 2015-5-5 14:35:27 | 显示全部楼层
osgDB::FilePathList fl = osgDB::getDataFilePathList();
fl.push_back(std::string("G:\\3dgis\\data\\");
osgDB::setDataFilePathList(fl);

添加文件路径试试

该用户从未签到

 楼主| 发表于 2015-5-5 15:28:30 | 显示全部楼层
添加这个是什么作用?
我原来的路径是“G:\\3dgis\\data\\dem\\test_30\\12\\6723\\1335.osgb”(为了简化,原帖中简略成了“G:\\3dgis\\data\\1335.osgb”)
添加了路径fl.push_back(std::string("G:\\3dgis\\data\\dem\\test_30\\12\\6723"));和fl.push_back(std::string("G:\\3dgis\\data\\dem\\test_30"));都不行
调试查看变量,还是之前的效果

该用户从未签到

发表于 2015-5-5 15:39:41 | 显示全部楼层
添加路径后面要不要带个\\啊?

该用户从未签到

 楼主| 发表于 2015-5-5 15:54:35 | 显示全部楼层
换成这个fl.push_back(std::string("G:\\3dgis\\data\\dem\\test_30\\"));??
还是不行

该用户从未签到

发表于 2015-5-5 19:35:29 | 显示全部楼层
感觉就是模型读取路径的原因,路径设置好,直接引用文件名字
char strOut2[512];
sprintf(strOut2,"1335.osgb");

该用户从未签到

 楼主| 发表于 2015-5-6 10:09:32 | 显示全部楼层
                                osgDB::FilePathList fl = osgDB::getDataFilePathList();
                                //fl.push_back(std::string("G:\\3dgis\\data\\dem\\test_30\\12\\6723\\"));
                                //fl.push_back(std::string("G:\\3dgis\\data\\dem\\test_30\\12\\6723"));
                                //fl.push_back(std::string("G:\\3dgis\\data\\dem\\test_30\\"));
                                fl.push_back(std::string("G:\\3dgis\\data\\dem\\test_30"));
                                osgDB::setDataFilePathList(fl);

                                char strOut2[512];
                                sprintf(strOut2,"1335.osgb");
调试结果还是不行

该用户从未签到

 楼主| 发表于 2015-5-6 10:13:34 | 显示全部楼层
osgDB::setDataFilePathList(fl)
求解:这个是什么作用?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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