|
采用pagedlod的方式动态加载3ds模型 ,加载的方式如下:
-
- osg::ref_prt<osg::Group> root=new osg::Group;
- osg::ref_prt<osg::Group> models=new osg::Group;
- root->addChild(models);
- while()
- {
- std::string modelName=ps[0];
- float x=atof(ps[1]);
- float y=atof(ps[2]);
- float z=atof(ps[3]);
- osg::ref_ptr<osg::PagedLOD> lod=new osg::PagedLOD;
- lod->setCenter(osg::Vec3(x,y,z));
- lod->setFileName(0,"F:\\bdf\\data\"+tufu+"\"+modelName);
- lod->setRange(0,0.0,2000);
- models->addChild(lod.get());
- }
复制代码
运行之后有一个让我不能理解的地方,我的理解是 当每个pagedlod的中心点与视点的距离在2000以内时,会动态的加载该模型。但是我的程序中却产生了下面的问题,
当我用操纵器处于俯视图状态(从所有模型的顶部查看),如下图
这样在移动视点的时候,当图中最大的白色的模型进入视点后,即显示出来,
但是当我不采用俯视,而是采用类似CS的漫游方式的时候,如下图
,当我移动到最大的白色模型的位置时,此时这个模型却不显示,只有当我用操纵器转动使得场景处于俯视图的时候,这个模型才会显
示出来,这个是什么原因呢?这个白色模型的中心点此时与视点的距离已经小于2000. 其他的模型也是如此,只有当处于俯视图的时候
,通过移动视点,模型动态的加载,但是当处于这种类似CS的漫游方式的时候,大部分模型都不会加载,只有位置很近的模型才会加载
。不知道我的表述是否清楚,请问这个可能是什么原因呢?谢谢 |
|