pagedLod如何设置单个模型的位置坐标
我再添加批量模型时代码如下:auto pagedLod = new osg::PagedLOD;
unsigned int childNo = 0;
for (std::vector<std::string>::const_iterator file = filePaths.begin(); file != filePaths.end(); ++file)
{
pagedLod->setFileName(childNo, *file);
pagedLod->setRange(childNo, modelParameter->MinVisibleRange, modelParameter->MaxVisibleRange);
childNo++;
}
但是这种方法不能给每个模型添加坐标位置~
我加载的模型都是.x的,如何给每个模型添加独立的坐标位置呢?还请大神不吝赐教~ 模型自身是不带坐标的,但是有文档记录了每个模型的坐标,不采用pagelod模型一到几百个就卡死了,采用pagelod又不能给每个模型赋坐标,模型就会堆叠在一起。。。。。。。。:'(:'(:'( getPageLOD()->setRadius(mBoundSphere.radius());
getPageLOD()->setCenter(mBoundSphere.center());
getPageLOD()->setCenterMode(osg::PagedLOD::USER_DEFINED_CENTER);
设置一个自定义的包围盒就OK了,包围盒进入视角范围就会加载你的模型 rpgpp 发表于 2016-8-30 20:26
getPageLOD()->setRadius(mBoundSphere.radius());
getPageLOD()->setCenter(mBoundSphere.center()); ...
@rpgpp多谢您的指导,但是这样好像并不能给每个模型指定不同的坐标吧- -
我是想同一个PagedLod节点下的每个模型(本身无坐标信息)通过指定坐标放在不同位置,
现在通过pagedLod->setFileName(childNo, *file);的方式并不能给模型指定坐标。
按我对您所说包围盒的理解,只是给整体做了一个包围盒,似乎并不能实现单个模型不同位置的放置~
雨落无声 发表于 2016-8-31 08:43
@rpgpp多谢您的指导,但是这样好像并不能给每个模型指定不同的坐标吧- -
我是想同一个PagedLod节点下 ...
一个group挂接多个pagedlod就可以了:) rpgpp 发表于 2016-8-31 11:51
一个group挂接多个pagedlod就可以了
我在贴吧看着有人说pagedlod有数量限制,不敢这样用,我就这样被骗了么- -
测试了一下发现一个group挂很多pagedlod也没问题~~~~~
谢谢了! 您好,能帮我看一下我这段代码的问题吗,模型位置设置不对
osg::ref_ptr <osgViewer::Viewer>viewer = new osgViewer::Viewer;
osg::ref_ptr <osg::Group>root = new osg::Group;
osg::ref_ptr <osg:agedLOD >page1 = new osg:agedLOD;
osg::ref_ptr <osg:agedLOD >page2 = new osg:agedLOD;
page1->setCenter(osg::Vec3(-100, 0, 0));
page1->setFileName(0, "cow.osg");
page1->setRange(0, 0, 20000);
page2->setCenter(osg::Vec3(100, 0, 0));
page2->setFileName(0, "spaceship.osgt");
page2->setRange(0, 0, 20000);
root->addChild(page1.get());
root->addChild(page2.get());
osgUtil::Optimizer optimizer;
optimizer.optimize(root.get());
viewer->setSceneData(root.get());
return viewer->run();
运行程序后,模型cow和spaceship总是粘在一起,完全感觉不到setCenter()的作用
页:
[1]