查看: 2460|回复: 5

大数据量的动态调度过程中遇到的困惑

[复制链接]

该用户从未签到

发表于 2012-9-5 12:53:30 | 显示全部楼层 |阅读模式
本帖最后由 zlfaint 于 2012-9-5 12:54 编辑

      我使用的pagedlod来解决海量数据调度,把数据按区域面积划块,每块作为一个节点,因为不是用于Lod精度级别的调度,而是用于区域调度,所以我得为每一个区域节点新建一个osg::pagedlod对象,每个对象内只载入一个区域节点,这样,载入环境时需要把每个osg::pagedlod对象作为节点添加到Root根节点,但渲染后发现,虽然实现了range范围外的节点不显示,但内存没有卸载range外节点的迹象,其使用量没有变化。
    所以,我想知道两个问题,一、是否因为我的每个osg::pagedlod对象中只有一个节点,所以root把每个osg::pagedlod对象加入后,渲染时就只剩下显示和隐藏pagedlod节点了,而没有动态调度的空间,因为除了我加入到osg::pagedlod对象中的唯一一个区域节点外没有其他节点供其调度了?二、对于大面积的海量数据,是否有替代osg::pagedlod的动态调度解决方案,有开源吗?

该用户从未签到

 楼主| 发表于 2012-9-5 12:56:08 | 显示全部楼层
自己先顶一下,求大神解惑!

该用户从未签到

发表于 2012-9-5 13:16:54 | 显示全部楼层
不能简单的使用PL的,需要自己进行一些空间索引和划分,比如quad tree 等等

该用户从未签到

 楼主| 发表于 2012-9-5 14:08:11 | 显示全部楼层
那我的第一个问题呢?版主

该用户从未签到

发表于 2012-9-6 17:30:04 | 显示全部楼层
一、是否因为我的每个osg::pagedlod对象中只有一个节点,所以root把每个osg::pagedlod对象加入后,渲染时就只剩下显示和隐藏pagedlod节点了,而没有动态调度的空间,因为除了我加入到osg::pagedlod对象中的唯一一个区域节点外没有其他节点供其调度了
PagedLOD依然是LOD,因此它的子节点表示的是不同的细节层次,如果您只有一个节点,那么也就是说细节的表现只有“有”或者“无”,并且如果这个子节点不是FileName的形式而是普通的内存对象而已的话,那么PagedLOD在这个时候就成了一个LOD了,不再具备分页调度的能力

该用户从未签到

发表于 2013-12-6 17:13:30 | 显示全部楼层
array 发表于 2012-9-6 17:30
PagedLOD依然是LOD,因此它的子节点表示的是不同的细节层次,如果您只有一个节点,那么也就是说细节的表现 ...

王老师你好,

   您所说的pagelod不再具有分页调度的能力能否再详细解释一下?我现在在osgearth上加载了1000个模型,每个模型的纹理有4M大小,模型建立了两套,分别对应两级lod,低层级lod模型不带纹理,数据小很多,然后每个模型通过一个pagelod节点管理,精细模型的可见range设置很小,也就100米,所有子节点再由一个osg::MatrixTransform节点管理,然后将这个节点挂在了root下。地形瓦片数据是用的mapnode节点统一管理,也是挂在root下。我在加载模型后,会出现这样一种问题:通过平移缩放,拉近拉远模型,操作一会儿后就会导致地形瓦片和模型都不再根据试点进行调度和绘制了,如果视点在近地面,当前可以看到精细的纹理,然后拉远试点,粗糙的瓦片可以从缓存中拿出来,但是我再次靠近地面,精细数据出不来了,感觉好像是osgearth自己的缓存这个时候只删不增新的节点了,怀疑是databasepager分页数据库调度线程被阻塞类似的原因,但是不能确定,不知道和您上述的原因是否有关系?如果没有关系请问王老师能否解释一下我这种情况的原因?有没有什么解决办法?我通过看代码了解databasePager中的_targetMaximumNumberOfPageLOD可能是负责osgearth缓存中可以存放多少个节点,是否这里需要修改一下?我看到有人将它设置成0,然后通过本地filesystem缓存区调度,不知道是否可行,请王老师指点,先谢谢您
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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