查看: 1798|回复: 8

如何判断一个PagedLOD的某一级child对应的模型已经加载?

[复制链接]

该用户从未签到

发表于 2013-7-16 11:12:48 | 显示全部楼层 |阅读模式
PagedLOD* lod=new PagedLOD();
lod->setFileName(0,"a_0.3ds");
lod->setRange(0,0,500);
...

如何判断a_0.3ds已经加载到场景中?

另外,DatabasePager是如何管理已经加载模型的节点的?就是,对于已经readNodeFile("a_0.3ds")一次之后,如何保证不再重复读取a_0.3ds文件了?

望知情人士指教一二

问题出处:我想在动态加载的模型的时候,做一些其他的事情,所以自己写了个插件myfile
PagedLOD* lod=new PagedLOD();
lod->setFileName(0,"a_0.3ds.myfile");
lod->setRange(0,0,500);

在ReaderWriterMyFile的readNode函数中,除了最终return readNodeFile("a_0.3ds")之外,我做了一些其他工作

我现在遇到的问题是,当a_0.3ds不再视野之内,但是距离视点距离在(0,500)之内的时候,会不停的执行ReaderWriterMyFile的readNode函数,即不停的加载"a_0.3ds"。我想只加载一次,DatabasePager是怎么做的呢?

该用户从未签到

发表于 2013-7-18 11:28:52 | 显示全部楼层
加载之后plod下面有子节点,没有加载的话不会有子节点。
另外重复加载的问题好像没有遇到过,

该用户从未签到

发表于 2013-7-18 12:11:41 来自手机 | 显示全部楼层
可以自己写多线程读取文件。

该用户从未签到

发表于 2013-7-19 09:36:37 | 显示全部楼层
child num 大小变化了

该用户从未签到

 楼主| 发表于 2013-7-19 10:05:12 | 显示全部楼层
liuzhiyu123 发表于 2013-7-19 09:36
child num 大小变化了

你指的是plod的孩子格式增加了吗?是增加的那个readNodeFile节点?它本来就应该是plod的第0个孩子,本来应该只写一个模型的路径,我现在是手动readNodeFile,顺便做一些其他的工作。

child num变化了会引起什么后果?

望简要回答即可

该用户从未签到

发表于 2013-7-25 20:30:46 | 显示全部楼层
DatabasePager只有在一种情况下会反复读取某个子节点文件,那就是这个文件的加载失败了并返回NULL

该用户从未签到

 楼主| 发表于 2013-7-26 09:11:15 | 显示全部楼层
谢谢以上几位的回答,特别是Array,我的确在自定义插件中,返回的是NULL,导致自定义文件被反复读取。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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