本人OSG刚学习,想用pagelod将四个不同分辨率、同一地区的OSGB数据加载进来并生成索引,利用到眼距离不同,分别加载不同分辨率数据,但运行结果不对,求各位指点
```c++
void createObliqueIndexes(std::string fileDir)
{
//string dataDir = fileDir + "/Data";
string dataDir = fileDir;
osg::ref_ptr<osg::Group> group = new osg::Group();
vector<string> subDirs;
findDir(dataDir, subDirs);
for (size_t i = 0; i < subDirs.size(); i++)
{
string name = DirOrPathGetName(subDirs[i]);
string path = dataDir + "/" + subDirs[i];
osg::ref_ptr<osg::Node> node = osgDB::readNodeFile(path);
osg::ref_ptr<osg::PagedLOD> lod = new osg::PagedLOD();
auto bs = node->getBound();
auto c = bs.center(); //中心
auto r = bs.radius(); //半径
lod->setCenter(c);
lod->setRadius(r);
lod->setRangeMode(osg::LOD::RangeMode::DISTANCE_FROM_EYE_POINT);
osg::ref_ptr<osg::Geode> geode = new osg::Geode;
geode->getOrCreateStateSet();
lod->addChild(geode.get());
std::string relativeFilePath = subDirs[i]; //相对路径
if (0 == i)
{
lod->setFileName(0, "");
lod->setFileName(1, relativeFilePath);
lod->setRange(0, 0, 1.0); //第一层不可见
lod->setRange(1, 100.0, 200.0);
}
if (1 == i)
{
//lod->setFileName(0, "");
lod->setFileName(2, relativeFilePath);
//lod->setRange(0, 0, 1.0); //第一层不可见
lod->setRange(2, 200.0, 300.0);
}
if (2 == i)
{
//lod->setFileName(0, "");
lod->setFileName(3, relativeFilePath);
//lod->setRange(0, 0, 1.0); //第一层不可见
lod->setRange(3, 300.0, 400.0);
}
if (3 == i)
{
//lod->setFileName(0, "");
lod->setFileName(4, relativeFilePath);
//lod->setRange(0, 0, 1.0); //第一层不可见
lod->setRange(4, 400.0, FLT_MAX);
}
lod->setDatabasePath("");
group->addChild(lod);
}
std::string outputLodFile = fileDir + "/Data.osgb";
osgDB::writeNodeFile(*group, outputLodFile);
}
```