基于OpenSceneGraph的海洋环境三维可视化系统研究

2012-01-12 12:02李新放刘海行宋转玲
海洋科学 2012年1期
关键词:球体高程可视化

李新放, 刘海行, 周 林, 贾 贞, 宋转玲

(国家海洋局 第一海洋研究所, 山东 青岛266061)

基于OpenSceneGraph的海洋环境三维可视化系统研究

李新放, 刘海行, 周 林, 贾 贞, 宋转玲

(国家海洋局 第一海洋研究所, 山东 青岛266061)

为了研究虚拟现实技术在海洋环境三维可视化中的应用, 对大气、海底地形、风浪流等数据产品进行了分析整理, 运用场景裁剪、level of details(LOD)细节层次、场景动态调度等关键技术方法, 结合VisualPlanetBuilder (VPB)、ARCGIS多种数据处理工具, 在VC++和OSG2.8.7的可视化开发环境上,构建了一个三维、动态、实时、可交互的海洋环境可视化模拟仿真系统。这个系统可以为海洋科学研究和工程建设提供一个更加便捷、直观的可视化平台。

虚拟现实; 海洋环境; 可视化

在全球陆地资源日益紧张和环境不断恶化的今天, 世界各国纷纷将目光转向海洋, 开发海洋资源,发展海洋经济成为沿海国家国民经济的重要支柱,伴随着在海洋开发过程中人们日益多样化的海量信息需求, 原有的二维纸质海图、电子海图提供的海洋环境信息已经日渐不能满足实际生产研究的需要。快速、高效的数据模型, 流畅、逼真的三维场景渲染方式, 日益成为海洋环境信息表达的一种趋势。在海洋环境的三维可视化研究中, 海洋因其环境的复杂性和数据的难以获取, 较之陆地更加难以模拟。目前,国外在海洋环境三维可视化的研究和应用方面较为成熟, Flavio等[1]对实时三维地形可视化中数据分析应用进行了研究, Wynne等[2]对分等级不规则三角网的三维高程表示进行了研究, Kofler等[3]对地形模型的大场景贴图进行了研究。经过长期应用和推广, 形成了一系列可视化商业软件, 如 Google Earth、Skyline、Cadsoft的 Envisioneer和 MaK Technologies的Army Command 2010等软件。我国在海洋三维可视化方面的研究主要从20世纪末开始逐渐发展起来,任建武[4]等对海底地形及变化模型进行了研究; 肖如林等[5]对三维虚拟地球下的海洋信息原型适应性进行了分析与研究; 刘海行等[6]基于 IDL对海洋观测航线断面进行了分析研究; 徐敏等[7]对海洋大气环境的多维动态可视化系统进行了研究; 苏天赟等[8]对海底多源综合数据的集成与管理进行了研究等。但是, 这些研究大多是针对小范围、局部区域的海洋环境仿真分析建模, 缺少对全球海洋环境可视化进行宏观的系统研究。

OpenSceneGraph(OSG)是一个基于工业图形标准OpenGL的高层次API接口, 即三维可视化渲染引擎。它具有跨平台的特性和较高的渲染性能, 程序员能够通过它更加快速、便捷地创建高性能、跨平台的交互式图形程序。随着虚拟仿真技术的发展, OSG已在三维地理信息系统、计算机辅助设计、科学与工程数据可视化、游戏与娱乐等多个行业得到广泛应用。

本文通过研究OSG三维渲染引擎内部结构, 利用 VC++开发平台结合 OSG2.8.7开发包, 建立三维球体模型, 在地球模型上对现有海洋环境可视化产品进行宏观展示, 并对现有高程数据、卫星云图进行处理, 增强显示效果, 最终构建一个实时、高效、流畅、逼真的海洋环境三维仿真可视化系统。

1 系统描述

海洋环境三维可视化系统主要分以下层次: 基础数据层、可视化驱动层、应用实现层。基础数据层主要对海底地形数据、DEM 数据、卫星云图、ARCGIS数据、独立应用3DMax建立的模型等多类数据进行预处理, 构建可视化系统的基础背景场模型, 通过建立金字塔瓦片分级索引, 达到根据用户不同的交互请求进行及时、快速的数据响应; 可视化驱动层主要通过 OSG三维渲染引擎对数据进行渲染、显示, 为使用者提供一个实时、动态、三维可交互的立体环境; 应用实现层根据用户的具体应用需求, 基于可视化驱动引擎, 提供专业可视化仿真模块, 实现海洋环境要素在三维数字球体模型下的交互式漫游、动态加载、多视角动态浏览、交互拾取查询等。层次结构如图1所示。

图1 系统体系结构Fig. 1 System Architecture

2 关键技术

2.1 场景裁减

裁减(Cull)就是“从大量事物中进行挑选、删除”。对于一个庞大的三维系统而言, 往往存在大量无助于最终渲染结果的对象, 把它们从场景结构中暂时剔除, 将剩余场景对象发送到OpenGL渲染管线, 即只把最终能够被终端用户看到的对象发送到渲染管线[10]。在系统设计中采用视锥体裁减方法, 包括近平面裁剪、远平面裁剪、视锥体侧面裁剪, 超出这一裁剪范围的对象将被剔除出渲染队列。

2.2 LOD细节层次节点

根据细节层次的思想, 在不影响渲染外观的前提下, 系统根据场景对象与观察者的距离, 模型越靠近观察者越精细, 显示范围相对缩小, 以减轻系统绘制场景的负担, 实现全球大范围海底地形的动态、快速可视化仿真。LOD (level of details)节点调度流程如图2所示。

2.3 数据的动态调度

采用视锥体裁减保证每帧中只有一部分数据被传送到渲染管道, 而LOD的场景结构牺牲一部分渲染质量换取了效率的提升, 但这些都不能解决“在内存中可能要存储海量数据”这一问题——数百GB甚至TB级别的数据(如海底地形地貌)很难在现有的计算机硬件条件下全部载入内存中。因此, 数据分页(动态调度)尤为重要, 在显示当前视域的同时, 判断下一步可能要载入的数据, 做出正确的加载和卸载处理, 确保内存中始终维持有限的数据额度。在平台驱动层中, 我们用osgDB::DatabasePager来完成这一工作, 主要功能实现流程如图3(“页面”指用户视野范围)所示。

3 系统实现

3.1 场景交互、漫游

实现三维场景的交互漫游, 主要就是通过矩阵运算, 在三维空间中实现视点变换、投影变换、视口转换等一系列操作, 调整模型的位置姿态, 最终转换为屏幕像素输出。场景的更新包括人机交互事件的整理与传递、动态数据的加载与管理、用户自定义更新操作的执行等。这些工作通过 osgViewer::ViewBase类来统一调配实现, 根据用户自定义操作的内容不同, 场景更新的复杂程度亦不同。更新显示阶段的主要流程如下: (1)收集来自用户事件队列EventQueue的交互事件, 并进行整理。(2) 将事件传递给节点的时间回调(EventCallback)和视景器的事件处理器队列(EventHandles)。(3)更新动态调度的数据。(4)根据漫游器(MatrixManipulator)位置, 调整场景中的相机。无论是用户视角的变化、基于路径的漫游或者其他用户自定义的操作, 场景的显示漫游过程主要是通过以上四个步骤来实现的。

图2 LOD节点调度流程Fig. 2 The dynamic scheduling of level of details ( LOD) node

图3 数据动态调度实现流程Fig. 3 The dynamic scheduling realization of data

3.2 基础场景三维球体模型建立

基础地球模型的建立是实现宏观海洋环境三维可视化的基础, 而海量海底地形背景场的三维建模是地球模型的重要组成部分。基础地球模型的建立主要是通过VPB来实现的, VisualPlanetBuilder(简称VPB)是一个强大的地形数据生成工具, 可以读入多种类型的地理影像和高程数据, 并构建不同规模的分块分页地形数据库。VPB与OpenSceneGraph紧密结合, 依赖于 Geospatial Data Abstraction Library(GDAL)库和 LibSquish库, 分别实现了地理信息数据的识别和多种图像压缩格式, 它具备TB级别数据的处理能力, 并可以使用分布式文件系统来执行并发的数据处理。

利用 VPB基于栅格高程数据构建三维球体模型,对栅格高程数据和影像数据进行格式化处理, 并自动生成一个球模型。同时, 利用 VPB也可以批量处理多个高程数据或影像数据, 叠加高程模型。模型内部依据不同的分辨率层次进行了金字塔分级, 能够实现不同精度、不同细节层次下模型的快速、分层调度。利用 VPB基于高程数据生成模型, 根据鼠标当前的位置垂直于屏幕发送一条射线与模型进行求交检测, 得到与模型的交点, 读取该点的高程信息,并换算出相应的经纬度, 实现经纬度与高程的实时查询如图4所示。

图4 基于30 m分辨率栅格数据建立球体模型Fig. 4 The globe model based on raster data with a resolution of 30 m

3.3 基于三维球体的风浪流数据显示

在建立的基础场景三维球体模型的基础上, 对大范围的海洋环境数据产品进行显示, 通过研究OSG开源软件OSG Earth中的数据格式, 编辑.earth文件, 实现在三维球体上宏观展示海洋环境信息。以海洋环境温度场信息产品显示为例: 一般情况下,当需要把PNG, JPG等自身不具备坐标信息的产品投影到三维球体上显示, 需要先应用 ARCGIS等专业软件进行坐标转换, 转换成具有相应坐标的GEOTIFF格式后, 再加载到三维球体上进行展示。由于现有的海洋环境信息数据量比较大, 而且具有定时的更新, 如果用专业软件进行转换具有很大的工作量, 考虑到这方面的原因, 我们采用XML语言编辑.earth文件, 对 PNG 数据(已知坐标范围)通过GDAL库在系统后台直接进行转换, 实现对海洋环境产品实时处理, 完成坐标投影转换, 动态在三维球体上进行展示。应用 IDL生成全球的海水温度场数据图, 并通过 GDAL库与 osgearth结合在球体上进行全球海水温度场数据三维展示如图5所示; 对基本earth格式文件的编辑如下:

图5 全球海洋温度场数据图Fig. 5 The temperature chart of the whole globe ocean

3.4 矢量数据分层加载

为在系统中更加全面地展示海洋环境信息, 系统引入了 GIS数据层的概念, 实现在系统中动态连接多种类型的矢量数据, 丰富海洋环境信息的表达,如可根据需要加入海岸线层、海岛名海域注记层等。应用OSG提供的插件osgdb_shp直接读取全球主要铁路干线矢量数据, 并把其作为一个单独的图层加载到三维球体上, 如图6所示。在具体的操作中可以根据需要利用函数 dynamic_cast(getUserData())获取shp文件的属性数据。

图6 加载铁路干网SHP数据Fig. 6 Load with the data of the globe SHP rail track

4 结语

本系统主要研究了利用OSG及相关开发包构建三维球体模型, 并在模型上对海洋环境数据产品进行宏观展示, 对现有的高程、水深、卫星云图等数据进行初步处理, 实现高程模型、云层等效果, 为以后的研究提供大的背景场环境, 为用户提供一个直观、动态、可交互的可视化浏览系统。目前系统还存在一些不足, 有待进一步完善。如海洋环境数据主要是依据观测数据生成的海洋环境产品, 可考虑在以后直接读取观测数据进行处理并在三维球体上动态显示; 在现有系统基础上应用Activex等插件技术, 实现海洋环境可视化系统的网络发布; 针对目前卫星云图只是做了简单的处理, 可以把体积云的概念引入系统提供逼真的效果等。

[1]Flavio L M, Luiz F C, Ferreira S. Cartographical data treatment analysis for real time three-dimensional terrain visualization[J]. VIII Brazilian Symposium on Geo Informatics, 2006, 11: 3-17.

[2]Abdelguerfi M, Wynne C, Cooper E, et al . Representation of 3-D elevation in terrain databases using hierarchical triangulated irrefular networks: a comparative analysis[J]. International Journal of Geographical Information Science, 1998 , 12(8): 853-873.

[3]Kofler M, Gervautz M, Gruber M. The Styria Flyover –LOD management for huge textured terrain models[J].Computer Graphics International Proceedings, 1998, 1:444-454.

[4]刘志军, 金继业, 刘振民, 等. 海洋底质三维可视化模拟初步研究[J]. 测绘科学, 2008, 33(3): 113-115.

[5]肖如林, 苏奋振, 杜云燕, 等. 三维虚拟地球的海洋信息适应性分析及原型研究[J]. 地球信息科学学报,2010, 12(4): 555-560.

[6]刘海行, 于卫东, 周玉斌, 等. 海洋观测航线断面数据的三维可视化实现[J]. 海洋科学进展, 2004, 22(4):493-500.

[7]徐敏, 方朝阳, 朱庆, 等. 海洋大气环境的多维动态可视化系统设计与实现[J]. 武汉大学学报信息科学版, 2009, 1: 57-59.

[8]苏天赟, 刘保华, 翟世奎, 等. “数字海底”数据库: 海底多源综合数据的集成与管理方法研究[J]. 海洋科学进展, 2005, 4: 504-511.

[9]万定生, 徐亮. 基于 OSG的水利工程三维可视化系统研究与应用[J]. 计算机与数字工程, 2009, 4:135-137.

[10]王锐, 钱学雷. OSG三维渲染引擎设计与实现[M].北京: 清华大学出版社, 2009: 300-301.

A three-dimension visualization system of marine environment based on OpenSceneGraph

LI Xin-fang, LIU Hai-xing, ZHOU Lin, JIA Zhen, SONG Zhuan-ling
(First Institute of Oceanography, State Oceanic Administration, Qingdao 266061, China)

Jun., 23, 2011

virtual reality; marine environment; visualization

A study on the use of the virtual reality technology in three-dimension (3D) visualization of marine environment was carried on by analyzing and integrating the data of atmosphere, sea-floor relief, wind, wave and current. Methods, such as scene culling, level of details (LOD) and dispatch of dynamic scene, were used, and the data was processed and analyzed with tools including VisualPlanetBuilder (VPB) and ARCGIS. With Visual C++and OSG 2.8.7 graphics toolkit, a dynamic,interactive and real-time 3D visualized marine environment was constructed, which can be used as a convenient and direct 3D graphic tool for marine science research and engineering.

P76 文献标识码: A 文章编号: 1000-3096(2012)01-0054-05

2011-06-23;

2011-11-15

南海海洋环境数据信息服务平台(2008AA09A401-05)

李新放(1983-), 男, 山东五莲人, 硕士, 研究方向为海洋环境的三维模拟与可视化; 刘海行, 通信作者, 电话: 0532-88967412,E-mail: liuhx@fio.org.cn

刘珊珊)

猜你喜欢
球体高程可视化
基于CiteSpace的足三里穴研究可视化分析
思维可视化
越来越圆的足球
8848.86m珠峰新高程
计算机生成均值随机点推理三、四维球体公式和表面积公式
基于CGAL和OpenGL的海底地形三维可视化
“融评”:党媒评论的可视化创新
广告创意新方法——球体思维两极法
Optimization of rice wine fermentation process based on the simultaneous saccharification and fermentation kinetic model☆
GPS高程拟合算法比较与分析