如何显示大场景海量三维模型?
2010-12-20 19:36
330 查看
最近因为项目需要一直在研究world wind,之前总算把world wind wms 的服务器搭建完毕,算是迈出了第一步。紧接着就开始考虑加载三维模型的问题,world wind通过配置文件用ModelFeature实现了.x, .xml, .dae文件格式的加载。
但是ww对于大场景海量三维数据的加载、显示并没有实现。在网上、期刊网上调研了许久,发现基本上是采用分层、分块加lod的策略,遗憾的是,这些文章并没有涉及到具体的实现细节,这对于我这个第一次真枪实弹地做gis的人来说,真是蛋疼。
今天在网上瞎逛,偶遇OSGGIS,它是基于OpenSceneGraph的。OpenSceneGraph是一款高性能的3D图形开发库,貌似很牛。随后看了OSGGIS的一些资料,它能够做到:
1. 用3D模型来替换点要素;
2. 将大数据量的图层按网格组织;同时构建平行的单元格。
此外下图为网友的实现效果图,cool。(http://hi.baidu.com/lorin_hill/blog/item/225a2bf39b79971ab07ec5e8.html)
这里还有另外一个网友的介绍(http://blog.csdn.net/zhuliangxiong/archive/2009/04/21/4096189.aspx)
“图层编译器引导来自一个或者多个图层的要素穿过一个或者多个过滤器图.然后将来自于不同过滤器图的输出组合成为一个OSG场景图.osgGIS有三种内置的图层编译器:
1.简单编译器:将要素编译生成内存中的多LOD的场景图;
2.网格化编译器:将要素分成网格,然后将每个网格分别编译生成分页的多LOD场景图;
3.四叉树编译器:编译生成分页的多LOD场景图,同时每一个LOD是其上级节点的四叉树子节点;
网格化编译器和四叉树编译器可以实现增量编译和局部更新.由于每一个网格都是无关的,所以这些网格可以同时编译.这种机制使得OsgGIS具很强的伸缩性.因为使用这种增量编译和局部更新技术,OsgGIS就可以处理任意规模的数据.
OsgGIS将整个图层分解为许多小块后分别独立编译,同时OsgGIS使用Session将各个编译过程连接在一起.Session用于管理公共的资源(例如:纹理..)和对外部数据模型的引用。Session还记录有整个图层编译过程中产生的统计数据。”
呵呵,看到这些,一阵窃喜。OSGGIS值得一看。
不过终究是开源的东东,研究起来还是困难重重。一步一步来吧。
但是ww对于大场景海量三维数据的加载、显示并没有实现。在网上、期刊网上调研了许久,发现基本上是采用分层、分块加lod的策略,遗憾的是,这些文章并没有涉及到具体的实现细节,这对于我这个第一次真枪实弹地做gis的人来说,真是蛋疼。
今天在网上瞎逛,偶遇OSGGIS,它是基于OpenSceneGraph的。OpenSceneGraph是一款高性能的3D图形开发库,貌似很牛。随后看了OSGGIS的一些资料,它能够做到:
1. 用3D模型来替换点要素;
2. 将大数据量的图层按网格组织;同时构建平行的单元格。
此外下图为网友的实现效果图,cool。(http://hi.baidu.com/lorin_hill/blog/item/225a2bf39b79971ab07ec5e8.html)
这里还有另外一个网友的介绍(http://blog.csdn.net/zhuliangxiong/archive/2009/04/21/4096189.aspx)
“图层编译器引导来自一个或者多个图层的要素穿过一个或者多个过滤器图.然后将来自于不同过滤器图的输出组合成为一个OSG场景图.osgGIS有三种内置的图层编译器:
1.简单编译器:将要素编译生成内存中的多LOD的场景图;
2.网格化编译器:将要素分成网格,然后将每个网格分别编译生成分页的多LOD场景图;
3.四叉树编译器:编译生成分页的多LOD场景图,同时每一个LOD是其上级节点的四叉树子节点;
网格化编译器和四叉树编译器可以实现增量编译和局部更新.由于每一个网格都是无关的,所以这些网格可以同时编译.这种机制使得OsgGIS具很强的伸缩性.因为使用这种增量编译和局部更新技术,OsgGIS就可以处理任意规模的数据.
OsgGIS将整个图层分解为许多小块后分别独立编译,同时OsgGIS使用Session将各个编译过程连接在一起.Session用于管理公共的资源(例如:纹理..)和对外部数据模型的引用。Session还记录有整个图层编译过程中产生的统计数据。”
呵呵,看到这些,一阵窃喜。OSGGIS值得一看。
不过终究是开源的东东,研究起来还是困难重重。一步一步来吧。
相关文章推荐
- 如何能在浏览器中显示三维模型
- Unity3D NGUI如何在UI上显示3D模型
- Unity鼠标中键滚动缩放相机,左键点击场景中模型居中显示
- OSG点击场景中的某个物体,如何判断点击的物体,及处理此模型相关变换
- 【Unity3D】【NGUI】如何在UI上显示3D模型
- 如何实现CityEngine与3ds Max模型互导时正常显示
- 如何在VR场景中实时显示帧率
- 微软 Hololens 技术解谜(上):如何还原三维场景
- UE4 在UI/UMG中显示三维模型
- Struts2如何显示已经更新的模型数据
- 如何将谷歌地图叠加到MapGIS三维地球场景
- 如何下载bigemap高程数据利用3dmax制作三维地图模型?
- DDD(领域驱动设计)应对具体业务场景,Domain Model(领域模型)到底如何设计?
- 利用solidwords导出urdf三维模型文件到gazebo显示
- Open Inventor练习-SoWin中SoWinRenderArea显示三维场景
- 基于事件驱动的领域模型实现框架 - 分析框架如何解决各种典型业务逻辑场景
- SkylineGlobe 如何二次开发获取三维模型的BBOX和设置Tint属性
- 如何中文显示模型(ActiveRecord::Errors)内的确认信息
- python+opengl显示三维模型小程序
- [Unity 3D教程]教你如何在3D场景中选择物体并显示轮廓效果