基于开源OSG引擎开发三维管线信息系统
2013-08-06尹志永王涛周磊黎慕韩
尹志永,王涛,周磊,黎慕韩
(天津市测绘院,天津 300381)
1 引言
城市地下综合管网是城市重要的基础设施,担负着信息传输、能源输送等工作,随着城市化进程的加快,目前我国许多城市已形成大规模、纵横交错的地下管网。很多城市因此建立了地下管线信息系统以对地下管网进行科学、信息化管理,但这些系统大多数是二维的,不能清晰直观地显示空间层次复杂的地下管网。三维管线模型能直观地描述城市地下管线间纵横交错、上下起伏的空间关系,具有较强的立体感和逼真感,有利于真实全面地反映地下管网的分布状况,因而城市三维管线信息系统的研制非常必要。城市三维管线信息系统利用三维可视化技术,将地下管网以三维模型的形式直观地表现出来,为市政各部门提供准确的管线信息以辅助分析与决策。
在技术上,开发三维管线信息系统一般有数学类技术和基于已有三维GIS平台进行二次开发两种途径。其中,数学类技术主要利用计算机图形学及相关数学知识,结合OpenGL、DirectX等技术从底层进行管线建模及三维场景管理。基于已有三维GIS平台上进行二次开发通常存在后期信息处理量大、接口扩展困难、开发成本较高等缺点,因而基于OpenGL或DirectX的数学类技术成为三维管线系统开发的较佳选择。OpenSceneGraph(简称OSG)是一套开源、免费的三维场景图形开发库,它是基于工业标准OpenGL的软件接口,实现了对OpenGL的完全类封装,建立了面向对象的框架,使程序员能快速便捷地创建高性能、跨平台的三维交互式图形程序。随着虚拟仿真技术的发展,OSG已在三维地理信息系统、计算机辅助设计、科学与工业数据可视化、网络游戏等多个行业得到广泛应用。
要建立三维管线信息系统,主要需解决管线三维建模,三维数据可视化及管理两个难题。本系统建立过程中,三维管线建模利用的是基于3ds Max SDK开发的自动建模插件,采用VC++在MFC框架下基于OSG引擎开发三维管线信息系统。
2 开发3ds Max插件用于管网自动建模
城市地面建筑的三维数据可通过LiDAR技术直接获取,而三维形式的地下管线数据尚无直接获取手段,只能从管线属性数据中提取相应的属性来模拟实现管线的三维可视化。通常城市地下管线数据存储形式为属性信息与图形信息并行存储,即以数据库文件(如Access的MDB文件)存储属性信息,以图形文件(如CAD的DWG文件)存储图面信息。
三维管线模型和三维附属设施模型统称三维管网模型。管网数据的三维建模利用专业的三维建模及渲染软件3ds Max制作,宜采用自动化方式,具体实现则是利用3ds Max SDK技术开发自动建模插件。建模插件开发的原理是:从MDB文件读取管网数据的属性信息及坐标值,包括:管点平面坐标及高程,管点特征,附属设施的类别,管线尺寸、材质、埋设方式等属性,再调用3ds Max函数库的相应接口自动解算出管线的长度、走向及角度等属性并生成与实地相符的管网模型;对于种类繁多、构造各异的附属设施,通过在3ds Max中创建设施模型库,在批量生成时从设施模型库中调用即可自动完成。本系统包括了自主开发的管网自动建模插件,如图1所示。在利用插件自动制作管网模型的过程中,赋予每个管网模型唯一的标识符,该标识符与MDB数据库中管线或附属设施的ID号一一对应,将用于应用系统的查询及统计功能模块。
利用与3ds Max版本相匹配的OSG Export for max9插件,将创建的管网模型整体导出为OSG内部支持的IVE格式,IVE格式是二进制的,具有读写快速、易操作的特点,三维模型导出如图2所示。该OSG Export插件可从网上免费下载。
图1 管网自动建模插件
图2 三维管网模型导出
3 OSG介绍及关键技术
OSG主要为图形图像应用程序的开发提供场景管理和图形渲染优化功能,它使用可移植的ANSI C++编写而成,并使用已成为工业标准的OpenGL底层渲染API。OSG作为中间件为应用软件提供了各种高级渲染特性、IO及空间结构组织函数。OSG以场景树结构对三维模型进行组织与管理,场景中的模型、地形、阴影等均以场景树节点的形式存在。OSG运行时文件由一系列动态链接库(或共享对象)及可执行文件组成,这些链接库可分为5大类,共同构成了OSG的运行体系,链接库的功能如表1所示。
OSG链接库功能表 表1
基于OSG引擎开发三维系统所用到的关键技术有:
(1)场景裁减。对一个庞大的三维系统而言,往往存在大量无助于最终渲染结果的对象,把无用的对象从场景结构中暂时剔除,将剩余有效的场景对象发送到OpenGL渲染管道,即只把最终为终端用户所看到的对象发送到渲染管道。
(2)细节层次节点LOD(level of details)。LOD技术指,在场景中离视点较远的区域分辨率较低,离视点较近的区域分辨率较高,而且随着视点的改变场景的变化具有连续性。当物体仅覆盖较小区域时,可用粗略模型来绘制,既不影响视觉效果,又可提高绘制效率。OSG内部采用PagedLOD分页数据库调度策略,不一次性将数据全部调入,而是根据视点需要,实时从外存调入相应的数据,从而实现大范围地形的流畅渲染。
(3)数据动态调度。上述两种技术都不能从根本上解决在内存中可能要存储海量数据这一问题,因此数据的动态调度尤为重要,在显示当前视域的同时,判断下一步可能要载入的数据,做出正确的加载和卸载处理,确保内存中始终维持有限的数据额度。
4 三维管线信息系统
三维管线信息系统的框架由三部分构成:数据层、驱动层和应用层,其系统结构如图3所示。
图3 三维管线信息系统体系结构
(1)数据层。系统所用数据包括3类:属性数据MDB文件、三维管网模型和三维地形模型。MDB数据库文件作为属性文件供系统查询、统计等功能使用,而三维管网模型的创建前文已予以论述。三维地形模型也是系统不可缺少的部分,其与作为核心的管网模型共同构成了场景数据源。三维地形模型由地表DOM与表达地形起伏的DEM融合而成,其构建工具为VPB,下文将对VPB进行阐述。
(2)驱动层。通过OSG三维渲染引擎对场景数据进行渲染和显示,为用户提供一个动态的、具有空间参考的三维交互式立体环境。
(3)应用层。提供三维管网模型在三维地形环境下的动态浏览、交互式漫游、数据查询、数据统计输出、数据管理等功能。
4.1 利用VPB创建三维地形模型
VirtualPlanetBuilder(简称VPB)是基于OSG的三维地形数据生成工具,利用VPB工具,输入影像数据及高程数据后可高效的构建出各种规模的分块分页地形数据库。VPB是开源工具,其与OSG紧密结合所生成的瓦片数据可保存在本地计算机上进行快速浏览,且具备TB级的数据处理能力。VPB以开源的栅格空间数据和影像数据读写库GDAL作为支撑,所以其支持的数据格式多达数十种。VPB支持多数据源的自动处理,在命令行窗口下使用VPB中的vpbmaster程序制作三维地形数据库。构建的三维地形模型以OSG内部支持的二进制IVE格式写到硬盘,可快速的加载到OSG场景中以供浏览和漫游。本系统所用的影像数据是2.5 m的SPOT 5彩色影像,高程数据分辨率是25 m。
4.2 应用系统开发
应用系统采用VC2010开发平台的MFC框架,结合OSG引擎开发。VC2010包含的MFC Feature Pack功能包对传统MFC库进行了扩展,开发出的应用程序具有类似新版Visual Studio、Microsoft Office或Internet Explorer等流行界面的视觉效果。应用系统功能界面如图4所示。
图4 三维管线信息系统
系统功能主要包括:动态浏览、场景漫游、基本查询及标注、地物定位及收藏、数据统计、专题图表输出及数据管理。
(1)动态浏览。具有多视角切换的动态浏览功能,场景视窗可自定义放大、缩小。该功能是通过实时修改场景照相机Camera类、观察矩阵(观察者的位置和姿态)的方式来实现平滑的动态浏览。
(2)场景漫游。本系统中场景漫游方式包括3种:轨迹球方式、步行方式及自定义路径飞行方式。轨迹球方式为OSG系统自带的。步行方式和自定义路径飞行方式的实现通过对OSG API中的GUIEventHandler和CameraManipulator类的继承来实现。自定义路径飞行方式可按设计路径进行飞行漫游,功能较实用。
(3)基本查询及标注。打开工程时,存储管网对象属性的MDB文件也同步加载。三维管网对象与MDB属性数据库通过唯一标识符一一对应,当点击(或捕捉)到某一模型对象时,图形系统返回对象的唯一标识符,通过该标识符程序从MDB数据库中通过SQL语言检索出其属性并显示出来,并可按用户的定制要求在视窗中立体标注。三维场景中对象的捕捉通过对OSG API中的GUIEventHandler的继承来实现,文字标注则用到了HUD(抬头显示)技术。
(4)地物定位及收藏。三维场景中模型对象的快速定位是常见而实用的功能,本系统通过给定对象的标识符可自动定位对象并使其居中显示。收藏功能则是将感兴趣对象添加入系统收藏夹,点击收藏节点即可自动定位到兴趣对象上。
(5)数据统计及专题图表输出。通过SQL语言从MDB数据库中检索出符合条件的管网对象并进行统计,生成各种统计图表并输出。本系统还具有专题断面图绘制功能,具有场景截图功能。
(6)数据管理。对工程中包含的管网模型,三维地形数据及MDB属性文件进行维护及管理。
5 结语
在目前基于三维GIS平台开发三维管线信息系统存在成本高、不易扩展、技术尚不成熟的情况下,充分利用开源的、开发难度不高、场景性能优越的OSG引擎开发应用系统则具有实用性、经济性的意义。通过调用OSG API实现三维场景的动态渲染和显示,使该系统具有良好的交互式三维可视化效果。将MDB数据库中对象属性与三维管网模型进行映射,通过SQL技术实现三维模型的查询、统计及输出,实现了三维模型的信息化,使得本系统具有初步的信息系统特点,奠定了三维信息管理的基础。
本系统还有许多方面有待进一步研究和开发,主要有:系统数据不包含地上建筑、景观等模型,导致场景内容不够丰富;系统尚不具备严格的GIS功能(如空间查询,管网对象的空间分析),如何将成熟的二维GIS组件技术引入到系统中来也值得研究。
[1]张文元,付仲良.基于ArcGIS Engine的综合管线三维可视化研究[J].测绘通报,2008(8):28~31.
[2]王锐,钱学雷.OpenSceneGraph三维渲染引擎设计与实践[M].北京:清华大学出版社,2009.
[3]王贵武,解智强,李世强等.利用海量探测数据实现昆明市地下管线三维建模的应用研究[J].测绘科学,2009,34(6):122~124.
[4]罗胜.3ds max SDK插件开发技术[J].机床与液压,2003(6):242~244.
[5]万定生,徐亮.基于OSG的水利工程三维可视化系统研究与应用[J].计算机与数字工程,2009,37(4):135~138.
[6]OpenSceneGraph 中文网站.http://www.osgchina.org.
[7]李新放,刘海行,周林等.基于OpenSceneGraph的海洋环境三维可视化系统研究[J].海洋科学,2012,36(1):54~58.
[8]祖为国,邓非,梁经勇.海量三维GIS数据可视化系统的实现研究[J].测绘通报,2008(7):39~41.
[9]廉光伟.基于OSG的三维地籍信息系统设计与实现[J].城市勘测,2011(5):32~40.
[10]熊自明,葛文,吴绍民等.城市三维地下管网信息系统研究与实现[J].信息工程大学学报,2010(1):59~62.