基于OSGEARTH的三维数字地球平台设计与实现
2015-04-25任清华杨化斌
陈 波,任清华,杨化斌
(空军工程大学 信息与导航学院,陕西 西安710077)
“数字地球”概念最早是由美国副总统戈尔在美国科学研究院提出的[1]。数字地球不仅可以提供数字地图地理信息查询服务,还可满足人们探索地球、管理地球的愿望。其基本思想是将高分辨率的遥感影像覆盖全球,并通过建立覆盖全球的数字高程模型和地球景观模型,形成虚拟地球[2]。
近年来涌现了大量数字地球软件。国外有Google公司的Google Earth,NASA的World Wind,微软的Virtual Earth等,国内有北大/北航的China Star,武汉大学的Geo Globe,中科院遥感所的DEPS CAS等[3],均含有高精度全球卫星影像,且提供简单的二次接口或部分开源,但具有以下不足:(1)只能使用单一的软件自带数字地球数据,无法集成其他软件所带的数字地球数据。(2)大多数软件属于商业软件,价格昂贵,少数开源软件使用复杂,功能受限[3]。(3)无法进行面向实际工程应用的二次开发,软件灵活性较差,无法满足多方面需求。
针对以上问题,本平台将选择一个新的开源三维地形渲染引擎osgEarth来进行三维数字地球平台开发。
OpenSceneGraph(OSG)是一个基于工业图形标准OpenGL的高层次图形开发API接口,通过它程序员能更加快速、便捷地创建高性能、跨平台的交互式图形程序[4]。
osgEarth是一个基于OSG使用标准C++语言开发的实时地形模型加载和渲染工具,具有良好的多源数据支持与数据管理能力。其采用驱动器方式来支持管理GIS数据源,内置多种驱动器,如GDAL驱动器,用于处理影像和DEM数据;TMS驱动器,用于处理采用TMS协议的瓦片数据等。此外,osgEarth的高扩展性使得用户可根据需求自行扩展其他类别的驱动器[5-7]。
osgEarth采用图层概念进行各类数据管理,osgEarth图层包括影像层、高层层、模拟矢量层等[8]。不同的图层对应不同数据类型。这种机制更易于不同分辨率的影像、高程以及模型数据的叠加[9-10]。
本文通过研究osgEarth三维地形实时渲染引擎内部结构,利用VC++开发平台集合osg3.1.0和osgEarth2.7开发包,建立三维球体模型,在此球体模型上加载卫星影像数据、数字高程数据(DEM)、光照数据、矢量数据、地表数据,构造出一个开源可供二次开发的实时、流畅、逼真的三维数字地球基础性平台。
1 平台概述
平台以osgEarth核心库为基础,以满足实际工程需要为目的。随着需求不断提高和计算机虚拟现实技术的发展,视景仿真细节要求越来越高,高程、卫片数据需求随之增加,这些都对传统建模和调用方式、渲染过程形成挑战;在海量数据调用渲染的基础上,平台还需根据项目需求及实际应用提供二次开发接口、承载新的数据处理能力。数据处理能力是影响现实仿真系统实时交互能力以及应用中模拟训练质量的关键因素,也是数字化地球模拟平台亟待解决的核心。
针对以上各种局限,在整体设计方案中,数字地球基础平台主要涉及3方面内容:数据存储、数据解析和渲染、应用插件加载。由于数据量较大,对三维数字地球设计使用B/S设计架构,如图1所示。
图1 三维数字地球B/S设计架构
数字地球平台为实际工程项目先提供一个效率与效果表现俱佳的基础球体,然后在客户端提供丰富的针对业务的开发接口,可让用户结合自身业务需要的模型、业务的支撑数据,进行更加具体的业务开发,最后将数据流处理结果在客户端进行展示。
2 技术难点及解决方案
2.1 基于数据库存储的LOD四叉树模型
osgEarth采用动态四叉树LOD方式对数据进行组织,此时数据被划分为不同LOD层次的瓦片序列,渲染地形时根据视点远近进行动态调度和加载。这种动态四叉树组织方式理论上可支持无限的数据量负载[4]。但当数据达到GB或TB以上时,影像的实时处理就变得异常缓慢。
虽可采用金字塔等方式来加快影像的处理,但仍不能满足实时渲染的要求,为此在进行三维地形场景构建时需要对影像和DEM数据进行预先瓦片分割处理,服务端采用数据库方式对数据进行存储与响应。
本算法的核心是将四叉树和LOD结合,四叉树保证了地表空间能够精细划分,LOD技术保证了能在合适的距离和角度下显示与之对应的地形,基于数据库存储又保证了在实时渲染时每一层的数据量可预见,因此可大幅提高索引效率。
数据具体分配流程:
现有数据项所在层行列为image(Lev,Row,Col)。获取该数据项所在数据库和表名称分配算法如下:
(1)计算数据项在当前层的标号,假设标号为Id,则计算式(1)如下
(2)确定数据项所在数据库名称。若Lev≤15,数据库名为Map15,若Lev>15,则计算n的值如式(2)所示
(此处DBMax为理论值10亿),根据层号以及n即可确定数据库名(例如Lev=17,n=2,数据库名称即为Map17_02)。
(3)确定数据项所在表名称,计算m值,如式(3)所示
若m=1,则直接用层号确定表名(例如Lev=9,表名称即为Level0_9),若m>1,则根据层号以及m值确定表名(例如Lev=14,m=3,表名称即为Level14_03)。
(4)表结构设计。数据库中的存储方式是二进制形式的,且每个二进制影像数据对应该数据在数字地球场景中的位置,所以,在数据库的表结构中应当包含影像数据的位置信息、二进制数据信息,以及数据信息的长度,表结构设计如表1所示。
表1 数据库中表结构设计
根据表结构可方便地利用视点依赖技术,确定当前场景内的瓦片,根据瓦片在数字地球场景中的位置访问数据库,加载对应的影像数据信息。
2.2 基于改良的Higgins算法的海浪模拟
目前模拟海浪的方法主要有流体力学方法、基于海浪谱的方法、几何造型法以及线性叠加法。线性叠加方法是目前国内外使用最多的海浪仿真方法,其基本思想是基于Longuest-Higgins模型模拟海浪,但这种方法生成的海浪波峰比较圆滑,海浪逼真性较差。本文提出分波幅和分相位的扰动算法,改进了基于线性风浪谱的圆滑波峰现象。
线性叠加法将平稳的海浪视为平稳具有各态历经性的随机过程,将风浪波动视为无限个振幅、频率和初相位不等,且在水平面上与轴线沿不同方向传播的简单余弦波叠加而成。由于海浪能量频带较窄,高频和低频的能量均较小,计算时可不考虑这些组成波的影响,模拟的海浪较平稳。改进的水波纹数据模型,加入更加自然的随机挠动,与传统的数学模型进行叠加,使得海水的渲染更加自然。
(1)海水波纹的基础数学模型。在实际工程应用中为了使所选频率更具有代表性以减少所要选的组成波数目,通常采用等频间隔或者等能量间隔方法对频率进行分割,进而求得方向分布函数和波振幅;根据深水波浪频散关系可确定海面高度场。风浪高度算法如式(4),浪高模型为与X轴成不同角度θ方向传播的简单余弦波叠加而成。
式中,ζ为瞬间波浪高度;Hs为海平面上的平均高度;ζi为第i个分量波浪高度;ki和ωi分别表示第i个分量的深水传播系数和分量角频率;ki=ωi/g,g为重力加速度;g=9.81 m/s;φi为构成第i个相位角;n为简谐波个数。由式(4)可算出波浪的实时高度,再由高度的实时变化来动态模拟海面,这种方式可基本表现波浪的变化趋势,但生成的海浪波峰较圆滑,真实感较差,如图2所示。
图2 Higgins模型海浪效果
(2)改进的波纹叠加模型。按照式(4)数学模型算出的模拟海面具有明显的线性痕迹,尤其是波浪形态比较规则,真实感较差。为增强风浪波纹的随机效果,使用扰动算法生成的Δζ和Δφ对分波幅和分相位进行扰动
式中,分波幅Δξ和分相位Δφ为随机变量;χ(xzt)为海面高度;R为随机函数,值域为[-ci,ci];c1和c2分别为分波幅和分相位的随机域整数;ci为R[-ci,ci]向区间[-1.0,1.0]映射的常量。Δξ和Δφ的随机特性作用于海平面上的所有点(xs,zs),因此,海面的规则性被破坏,效果得到明显改善,如图3所示。
经反复实验得出:当Δξ∈[0.75,1.25],Δφ∈[0.65,1.35]时,风浪尖锋的效果相对最佳。
3 设计与实现
3.1 平台设计
三维数字地球平台作为基础支撑平台,应能适应未来业务应用需求的变化和功能的拓展,且具有一定的前瞻性和稳定性。采用软件模块化构件技术进行设计实现,软件构件是一个集成化程度高,具有规范接口和确定上下文依赖的组装单元,能在框架结构下被直接或间接调用形成其他的构件或系统,对于降低软件开发周期或成本具有明显的意义。
三维数字地球平台框架结构如图4所示,最底层为图形硬件,第2层为基于OpenGL的底层渲染支持库,第3层为OSG场景图形渲染库,第4层为osgEarth地形渲染库,第5层为设计的三维数字地球平台,第6层为基于该平台开发的各种应用软件。
图4 三维数字地球平台框架结构
三维数字地球平台由平台核心库构件、挂件工具构件、地形矢量分析构件、场景特效构件、星空仿真构件、地球光照构件、海洋效果构件、场景元素快照存取构件、碰撞检测构件等组成,用于支持二次开发。在实际工程中,可根据项目需要进行构件装备。
3.2 平台开发设置
创建了一个VC++2010的解决方案:Earth.sln,在该解决方案下为每个构件创建一个工程,然后设置好各构件之间的依赖关系,便于提高开发效率。采用C++语言和面向对象思想进行编程,协调好源码变更。在开发平台同时,实时发布已经完成的构件接口,以支持二次开发。
4 结束语
从面向实际工程需求出发,设计了三维数字地球引擎。平台采用软件构件化设计方式,支持构件的灵活装载,为二次开发提供了便利。相比其他的三维数字地球平台,该平台在数据加载方面有较大优势,集成了海洋平台,在海浪渲染上有重大改进。平台集成了大量第三方库,使得其可适应复杂环境的模拟和对未知环境的预测。
[1] 李晶.三维数字地球构建关键技术研究[D].成都:电子科技大学,2012.
[2] 刘让国,彭会湘,韦二龙.基于OSG的三维数字地球引擎设计与实现[J].计算机与网络,2013(3):129-131.
[3] 王金宏,朱军,卢秋阳,等.基于osgEarth的虚拟校园场景建模研究[J].地理信息世界,2011(1):65-70.
[4] 吴小东,许捍卫.基于OSGearth的城市三维场景构建[J].地理空间信息,2013,11(2):107-111.
[5] 李新放.基于OSG的海洋环境三维可视化系统研究[D].青岛:国家海洋局第一研究所,2012.
[6] 肖鹏,刘更明,曹明亮.OpenSceneGraph三维渲染引擎编程指南[M].北京:清华大学出版社,2010.
[7] 张立强.构建三维数字地球的关键技术研究[D].北京:中国科学院研究生院,2004.
[8] 王锐,钱学雷.OpenSceneGraph三维渲染引擎设计与实贱[M].北京:清华大学出版社,2009.
[9] 刘小玲,杨红雨,郭虎齐.基于GPU粒子系统的大规模雨雪场景实时模拟[J].计算机工程与设计,2012,33(6):2398-2401,2436.
[10]杨文军,刘欢,王新欢.二三维一体化技术在油田应急中的应用[J].测绘与空间地理信息,2013(36):213-214.