查看: 2991|回复: 10

请教:海量数据的载入问题

[复制链接]

该用户从未签到

发表于 2010-2-1 10:45:35 | 显示全部楼层 |阅读模式
Terra Vista采用分块分层生成大范围多地物的地形模型,每个地形块以行列号为名称进行存储,所有地形块最终集成到master.flt文件中,数据量上10G
请问:一次性载入这样的数据量显然不太可能,所以得采取视锥体裁剪、多层LOD的方式、动态卸载等技术进行处理,osg是否支持这些技术,如何实现,请群里的兄弟多多指教。

该用户从未签到

发表于 2010-2-1 13:14:43 | 显示全部楼层
都支持,看pagedlod

该用户从未签到

发表于 2010-2-1 13:34:50 | 显示全部楼层
模型得做成几个lod层吧~~

该用户从未签到

 楼主| 发表于 2010-2-1 14:55:42 | 显示全部楼层
3# tianxiao888

每块生成的地形自动建立了多个LOD层,而且每块之间无缝拼接。然后这些地形块以外部引用的方式集成到master.flt内。

该用户从未签到

 楼主| 发表于 2010-2-1 15:17:43 | 显示全部楼层
请问:lucifinil
利用osgPagedlod对master.flt进行操作,将所有分块的flt格式文件转换为ive文件。那么在程序直接readNodeFile("master.ive"),是否自动产生分页功能。如果不能的话,如何处理。请指教。

该用户从未签到

发表于 2010-2-1 16:01:06 | 显示全部楼层
主要设定Pagedlod->setFileName(0,fileName)agedlod->setRange(0,near,far);
注意:由粗到细的添加模型。
还要设定Pagedlod->setCenter();Pagedlod->setRadius();

你先看看教程吧

该用户从未签到

发表于 2010-2-1 17:23:58 | 显示全部楼层
PagedLOD的机制允许osg使用多个分块文件来管理和动态调度大规模场景~~您所设想的功能都可以通过它来实现,但是不存在自动化的工具,因为没有人知道您将使用什么样的分块策略。

有空不妨看一看VPB的实现,它采用了四叉树的场景分块方式,足可调度和渲染TB级别的场景数据

该用户从未签到

 楼主| 发表于 2010-2-1 23:21:51 | 显示全部楼层
TerraVista生成的地形文件的目的是为了大地形的分页调度,它的生成原理基于四叉树,最终生成文件记录了地形块分块方式和LOD层次。我想,OSG是否能够直接将该集成文件作为PagedLod对象,载入到场景中,从而实现整个地形的分页调度功能。既能充分利用商业软件的自动建模功能,又能对海量数据的管理。VPB虽然能够直接利用DEM和遥感影像生成金字塔式的建模结构,利于海量地形数据的调度,但是不利于多地物与大地形的集成和统一管理以及编辑修改,不知道理解的是否准确。

该用户从未签到

发表于 2010-2-2 08:40:03 | 显示全部楼层
您完全可以自行结合TerraVista的文件格式,编写插件将其转换到分页节点的场景树结构;如果您对TerraVista软件和OSG的插件编写方法都比较熟悉的话,那么做起来并不难。不过OSG核心恐怕永远不会有结合商业软件的计划~~

该用户从未签到

 楼主| 发表于 2010-2-2 10:57:16 | 显示全部楼层
呵呵,感觉OSG好深奥啊。Array是否做过相关插件,能否请教一二,在此多谢了。此外,OSG的例子编译后,生成的文件中有一个为osgPagedlod,从源码可以看出,它是不是将一块地形LOD层次读取后转换为Pagedlod的节点(这个节点文件好像具有多层LOD的单个文件),是不是这个意思呢。

该用户从未签到

发表于 2010-2-2 12:09:44 | 显示全部楼层
我个人编写过不少插件,不过对于TerraVista没有任何接触,并且没有了解它的打算。(我们有自己的地物分块和处理方案)

此外osgpagedlod这个例子演示了如何把LOD节点转换为PagedLOD节点并且使用外部文件来记录和引用它的子节点,您可以参考也可以不参考这个例子来完成自己的工作
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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