曹 柱, 苏天赟, 王国宇
(1.中国海洋大学信息科学与工程学院,山东 青岛 266100; 2.国家海洋局第一海洋研究所,山东 青岛266061)
研究简报
大规模海洋水文环境多维可视化技术研究*
曹 柱1, 苏天赟2, 王国宇1
(1.中国海洋大学信息科学与工程学院,山东 青岛 266100; 2.国家海洋局第一海洋研究所,山东 青岛266061)
随着三维可视化技术在海洋环境仿真和信息表达方面的研究不断深入,在应用领域对海洋数据可视化结果的真实感、可视化过程中的实时交互性要求越来越高。基于GPU技术和OSG(Open Scene Graph)三维渲染引擎,研究OSG三维交互关键技术和体绘制渲染技术,开发一套面向大规模海洋水文环境数据的可视化软件,实现海洋要素场填色图、等值线绘制、等值面绘制、要素场体绘制和海流场动态模拟。为了更好的表达海量海洋水文环境数据的空间特性和实时性,在场景中建立节点对几何对象进行管理,引入回调机制实现动态渲染,加入CUDA(Computing Unified Device Architecture)并行计算提高计算速率,采用NetCDF(Network Common Data Form)文件格式对数据进行存取,应用GPU编程技术实现海洋水体环境要素快速体绘制。通过实践,开发实现的海洋水文环境可视化软件能够对海洋水体环境要素的属性和变化过程进行高效、直观的模拟和显示。
海洋环境; GPU; OSG; NetCDF; 多维可视化
如今海洋与人们的生活息息相关,随着海洋资源不断的开发利用,针对海洋的科研活动日益增多,海洋环境信息迅猛增加,海洋信息的可视化研究扮演着越来越重要的角色。同时,伴随海洋信息技术的发展,大规模海洋水文环境数据的多维动态可视化成为海洋研究的热点,主要体现在对海温、海流、盐度、海水密度等水体环境要素信息的模拟和仿真。其中,Thomas Butkiewicz和Colin Ware对海洋流模型的多点触控3D探索性分析[1]。Yinlong Sun、Erich Ess等通过Streamline Splatting算法可视化洋流和大气流[2]。何亚文[3]等实现了海洋环境数据时空特性的可视化分析。为了适应海洋科研和开发需求,海洋环境可视化系统相继开发并应用。Google Ocean可以针对全球海底地形实现三维展现,但在海洋水体要素的三维可视化方面有所欠缺;IDV针对海洋水体要素的处理,主要是通过二维平面、截面和剖面显示价值信息;美国大气气象局的Vapor虽然对海洋水体环境实现了三维显示,但针对海量数据的渲染效率和渲染质量有待提高;国家海洋信息中心开发的中国数字海洋系统,实现了中国海域海底、水体等多种海洋自然要素、海洋现象及其变化过程的数字化重现和立体展示[4],但其主要是依赖于数字球体平台对海洋环境信息进行2维或2.5维展示,缺少在立体环境下对海洋水文环境要素的分析和展示。
本文针对基于大规模海洋水文环境数据的特点,通过点模式、线模式、面模式、体模式分析,对等值线追踪、等值面生成、剖面绘制、体绘制等关键技术进行研究。同时,在应用OSG渲染引擎的基础上,基于GPU技术和NetCDF数据存储技术,实现大规模的海洋水文环境数据的三维仿真,并提高其绘制效率。
系统框架主要由数据管理、数据渲染、应用显示三部分组成,系统框架见图1。
数据管理模块主要应用NetCDF数据存取方式实现多维海洋水文环境数据的解读、存取及管理。NetCDF作为一种通用的数据存取方式,可对网格数据进行高效地存储、管理、获取和分发等操作,由于其存储量小、读取速度快、自描述及读取方式灵活等优点,被广泛用作大气科学、水文、海洋学等领域的数据存储标准[5]。NetCDF为应用提供了公用的C接口并且支持基本的数据类型,主要包括:byte、char、short、long、float和double[6]。针对于海洋数据的动态、多维、海量等数据特点,应用NetCDF数据格式存储,可以根据海洋三维场景渲染的需要,方便、快速地获取目标数据。NetCDF应用变量、维数、属性构成数据存储,并且提供查询功能,因此能够较好的实现海洋数据的统一管理与共享,实现海洋水体要素数据的动态表达与分析。
数据渲染模块采用多线程,集成MFC和OSG完成多维海洋水体要素数据的可视化渲染与分析。OSG三维渲染引擎由一系列图形学相关的模块组成,主要为图形图像应用程序的开发提供场景管理和图形渲染优化的功能,并且使用已成为工业标准的OpenGL底层渲染的API[7-8]。为方便实现数据库的组织和管理、对场景图形的操作以及对外部数据库的导入提供接口,OSG三维引擎利用树状结构对场景数据进行组织管理,采用节点访问、回调机制、场景交互控制等关键技术为使用者提供一个实时、动态、可交互的三维环境。
应用显示主要是响应用户不同操作,结合数据渲染模块实现自由交互并展示可视化结果。
2.1 Delaunay绘制技术
针对海洋水文环境数据的二维填充图的绘制,主要应用OSG的几何体绘制[9]技术和Delaunay算法相结合来实现。通过NetCDF文件操作获取相应的数据值(环境要素值即顶点高程值),应用Delaunay算法,获得的三角形数组并遍历优化去掉无效三角形。OSG绘制使用顶点索引机制来高效的对数据解析,使用绘图基元构建三角面对象(GL_TRIANGLES类型)。三角形顶点的颜色根据高程值及分层色带进行内插计算,用户可通过界面设置分层色带。实现流程见图2。
绘制效果见图3。
2.2 等值线绘制
在基于Delaunay构建海洋水文环境数据网格的基础上,针对高程值进行等值线的绘制能提高绘制效率和应用的便捷性。海洋水体环境等值线绘制流程如下:首先在上文中Delaunay绘制的基础上获取建立的TIN三角网模型及其邻接关系。其TIN数据结构如下所示:
(a)三角形数组int **m_Tri; //存储三角形顶点编号,m_Tri[i][j]中i表示三角形编号,j值0、1、2表示对应顶点的编号,j值4、5、6表示三个邻接三角形编号。
(b)数据点数组double **m_Points;//m_Points[i][j]中i表示顶点序号,j取值0、1、2,表示顶点的x、y、z(可以用高程值代替)值。
(c)三角形标识位数组bool *pTinMark;// pTinMark[i]中i表示对应的三角形标识。
根据三角形的数据结构和要素顶点的高程值计算出等值线。实现流程如图4。
由于构建等值线的相关算法已经比较成熟,本文主要针对提高等值线的绘制效果进行阐述,包括奇异点的处理、等值线圆滑、等值线抗锯齿等方面。针对等值线奇异点的处理,对于有奇异的三角网特征值加上(或减去)一个微小正数β>0,β的数量级根据要素的含量值确定,这样可以极大提高光滑曲线与等值线的拟合程度,并且在编程实现过程中方便快捷。通过线性内插方法保证等值线的光滑[10]。针对在三维场景中出现的等值线锯齿现象通过OSG中的像素采样率设置和osg::Multisample类应用实现抗锯齿效果。像素采样率有2、4、8、16不同的级数,用户可以根据自己的绘制需求选择不同的数值。绘制效果见图5。
2.3 等值面的绘制
等值面绘制的相关算法应用较多,其中针对大规模数据的等值面提取算法有“需要时细分”的八叉树组织方法(Branch-On-Need Octree, BONO)和近似最优等值面提取算法(Near-Optimal Isosurface Extraction, NOISE)等[6]。本文主要是在MC(Marching Cubes)[11]算法的基础上,应用OSG技术,针对提高对等值面的绘制效率和绘制质量问题进行阐述。由于海洋和陆地相互交叉,采集的海洋水文环境的规则数据中存在大量无效值。对于绘制效率问题,主要是改进MC算法,通过标识位剔除含有无效数据的三角网格,绘制方式通过设置顶点坐标数组、颜色数组、法线数组、绑定方式和数据解析改善帧速[7]。为提高绘制质量,则基于梯度法向量的估计方法获得等值面中的三角网格的顶点法向量,实现等值面的光滑。等值点的法向量计算公式如下:
(Ⅰ)体素顶点(i,j,k)上的灰度梯度
(1)
(Ⅱ)等值面的法向量计算
(2)
其中:v0代表等值点法向量;v1、v2代表2个端点的法向量;g1、g2代表2个端点的灰度值;isovalue代表阈值。
最后等值面采用颜色映射可视化方法对阀值变量进行着色。绘制效果见图6。
2.4 流场绘制
海洋流场的实时绘制的主要问题在于提高海量数据流场矢量的计算和绘制速度。由于OSG主要依据场景图来管理场景中的每个节点,这对于固定不变的节点来说是高效的,但是,对于像海流场中的海流随时间变化的动态节点来说,计算和绘制每个节点所花费的时间较长,成为流场实时绘制的主要问题。绘制动态海流有2种不同技术。一种是通过OSG叶节点建立几何节点,使用VBO的绘制方式,并应用节点回调实现动态显示。在其自定义画法中,指定绘图基元为LINES。箭头绘制的大小、方向依据格点海流的经纬度矢量值来确定;另一种通过使用OSG的第三方库osgCompute[12]和CUDA[13]并行计算来实现,实现流程如图7。
场景中添加计算节点(Computation node)作为模块(My module)和资源(My resource)的容器,应用模块进行并行计算,通过map()函数把顶点数组资源映射到设备内存。在Launch()中调用cudaMemcpy(),通过cudaMemcpy HostToDevice的方式把海流数据传输到GPU进行并行计算,更新映射顶点数组。
实验对比两种方法的绘制效率如表1所示,结果表明第二种方法明显优于第一种。
绘制效果如图8所示。
2.5 体绘制
体绘制一直是三维仿真领域的研究前沿,本文应用光线投射算法[10](Ray Casting),结合GPGPU技术,实现在海洋水文环境大规模数据的体绘制。使用光线投射算法主要有三点考虑:其一,该算法在解决方案上基于射线扫描过程,符合人类生活常识,容易理解;其二,该算法可以达到最高的绘制精度和最好的图像质量[14];其三,该算法可以较为轻松的移植到GPU上进行实现,可以达到快速实时绘制的要求。基于GPU的光线投射体绘制在OSG场景中实现方法的流程图如图9所示。
绘制过程主要分三部分:(1)OSG的三维体纹理和空间体模型(规则的立方体)相互结合,确定立方体8个顶点的体纹理坐标;(2)利用OSG的FBO背向深度渲染场景到二维纹理,二维纹理上的每个像素的颜色值都代表“某个方向上离视点最远的点的距离”;(3)在主渲染场景中的片段着色器中实现光线投射算法[15-16],主要包括透明度合成和沿射线进行采样。透明物体的渲染,本质上是将透明物体的颜色和其后物体的颜色进行混合,这被称为alpha混合(Alpha blending)技术。Alpha混合技术的公式如下所示:
c0=ascs+(1-cs)cd,
(3)
其中:as表示透明物体的透明度;cs表示透明物体的原本颜色;cd表示目标物体的原本颜色;c0则是通过透明物体观察目标物体所得到的颜色值。
在光线投射算法中,射线穿越体纹理的同时也就是透明度的排序过程。所以这里存在一个合成的顺序问题。也可以将射线穿越纹理的过程作为采样合成过程,本文采用从前面到背面进行排序。排序公式如下:
(4)
(5)
t=tstart+d×delta,
(6)
其中:tstart表示立方体表面被投射点的体纹理坐标;d表示投射方向;delta表示采样间隔;t为求得的采样纹理坐标。
为了达到更好的绘制效果,纹理的滤波方式设置为GL_LINEAR,无效数据点则通过添加判断标识设置其透明度为0。为了实现动态渲染,可对三维纹理里的数据实时更新。通过实验应用上述方法进行体绘制。可以在不影响绘制效率的情况下实现千万级数据的绘制。绘制效果如图10所示。
同时,为了获取更精确的数据体内部信息,用户可以通过设置体绘制参数绘制体的内部剖面图。绘制效果如图11。
3.1 开发平台
海洋水文环境多维动态可视化软件采用Visual Studio 2008开发环境和Open Scene Graph 3.0[7]三维渲染引擎进行开发。
3.2 软件功能
海洋水文环境多维动态可视化软件主要包括数据初始化、二维标量、二维矢量、三维标量、其它选项等,如图12所示。
数据初始化主要完成绘制海洋水文环境数据的选择;要素显示主要完成海洋水体温度、海洋水体盐度、海洋水体涡度、海流等显示:其中,标量绘制主要完成二维下的深度平面、经纬度剖面、水平剖面颜色填充色设置、水平剖面等值线设置、经向垂直剖面的可见性设置、纬向垂直剖面的可见性设置,三维下的等值面绘制、体绘制;矢量绘制主要完成二维下的海流等矢量的动态显示;视频输出主要完成窗口内的三维场景内容输出到静态图像文件以及AVI动画文件中,包括保存图像、录制开始、录制暂停、录制停止等操作;其它选项主要包括背景色设置、工具栏控制、窗口控制功能、坐标系建立、图例显示等。界面采用Office2007样式。开发实现的系统主界面如图13所示,图14~16是系统参数初始化和动态交互的部分界面。
海洋水文环境多维动态可视化软件的实现为用户提供了一个实时、动态、可交互的海洋水文环境的三维可视化仿真工具,能够针对大规模海洋水体环境数据实现高效的数据几何分析和动态绘制,直观地展现海洋水体环境特征和动态过程,具有较好的应用前景。
[1] Butkiewicz T, Ware C. Multi-touch 3D exploratory analysis of ocean flow models[C]//. Oceans. IEEE, 2011: 1-10.
[2] Sun Y, Ess E, Sapirstein D, et al. Visualizing Oceanic and atmospheric flows with streamline splatting[C]//. Electronic Imaging 2006. International Society for Optics and Photonics, 2006: 2-12.
[3] He Y W, Su F Z, Du Y Y, et al. Web-based spatiotemporal visualization of marine environment data[J]. Chinese Journal of Oceanology and Limnology, 2010, 28(5): 1086-1094.
[4] 国家海洋信息中心. iOcean 中国数字海洋公众版[EB/OL]. [2013-12-18](2014-11-12). http://www.iocean.net.cn/.
[5] 王红想, 刘纪平, 等. 基于 NetCDF 数据模型的海洋环境数据三维可视化研究[J]. 测绘科学, 2013, 38(2): 5-10. Wang X H, Liu J P, Xu S, et al. Visualization of marine environment data based on NetCDF data model[J]. Science of Surveying & Mapping, 2013, 38(2):5-10.
[6] 李思坤, 蔡勋, 王文柯. 大规模流场科学计算可视化[M]. 北京: 国防工业出版社, 2013: 102-144. Li S K, Cai X, Wang W K. Large-Scale Flow Field Scientific Visualization[M]. Beijing: National Defense Industry Press, 2013: 102-144.
[7] OpenSceneGraph 官方网站[EB/OL].[2013-12-16](2014-11-12). http://www.openscenegraph.org.
[8] OpenSceneGraph 中国官方网站[EB/OL].[2014-3-16](2014-11-12). http://www.osgchina.org.
[9] 肖鹏, 刘更代, 徐明亮. OpenSceneGraph三维渲染引擎编程指南[M].北京: 清华大学出版社, 2010. Xiao P, Liu G D, Xu M L. OpenSceneGraph 3D Rendering Engine Programming Guide[M]. Beijing: Tsinghua University Press, 2010.
[10] 胡德鹏, 黄晓萍, 任年海. 基于不规则三角网(TIN)的追踪等值线算法及对等值线光滑算法的研究[J]. 计算机与信息技术, 2006(3): 27-32. Hu D P, Huang X P, Ren N H. Research on the algorithm of tracing contours based on Irregular Triangulation Network(TIN) and contours smoothing algorithm[J]. Computer and Information Technology, 2006(3): 27-32.
[11] Lorensen B W, Cline H. Marching Cubes: A High Resolution-3D Surface Reconstruction Algorithm[J]. Computer Graphics, 1987, 21(4): 5-20.
[12] osgCompute 官方网站[EB/OL]. [2014-3-5](2014-11-10). http://www.basementmaik.com/doc/ osgcom-pute/html/
[13] 仇德元. GPGPU编程技术-从GLSL、CUDA到OpenCL[M]. 北京: 机械工业出版社, 2011: 156-170. Qiu D Y. GPGPU Programming Technology-From GLSL,CUDA And OpenGL[M]. Beijing: China Machine Press, 2011: 156-170.
[14] Levoy M. Display of surfaces from volume data[J]. IEEE Computer Graphics Application, 1988, 8(3): 29-37.
[15] Noon C J. A Volume Rendering Engine for Desktops, Laptops, Mobile Devices and Immersive Virtual Reality Systems using GPU-Based Volume Raycasting[D]: Iowa: Iowa State University, 2012: 23-55.
[16] Hadwiger M, Ljung P, Salama C R, et al. Advanced illumination techniques for GPU volume raycasting[C]. Singapore: ACM SIGGRAPH ASIA 2008 courses. ACM, 2008: 36-45.
责任编辑 陈呈超
Multidimensional Visualization Technology Research About the Large-Scale Oceanographic Environment
CAO Zhu1, SU Tian-Yun2, WANG Guo-Yu1
(1.College of Information Science and Engineering, Ocean University of China, Qingdao 266100, China; 2.The First Institute of Oceanography, SOA, Qingdao 266061, China)
Currently, ocean has been closely linked with the life of people. With the rapid development and utilization of marine resources, the research on visualization of marine information plays a more and more important role, which is very helpful for displaying internal laws and different relationships in the data. The features of marine environment can be reflected from many kinds of factors such as sea temperature, sea salinity, sea density, ocean current and so on. These data are time series, multi-dimensional, heterogeneous in structure and huge amount. The complexity of marine data and the requirements of scientific research necessitate a specific tool that can provide dynamic visualization and analysis of marine information interactively and intuitively in 3D environment. It should be generic for marine data sets and have high efficiency for mass data. So, multi-dimensional dynamic visualization of large-scale marine hydrological environmental data has become a hot topic of ocean research with the development of marine information technology. This paper tackle the challenge of key technology of three-dimensional interaction and volume rendering technology based on GPU technology, develops large scale marine hydrological environmental data-oriented visualization software and realizes oceanographic planar graph, contour line rendering, isosurface rendering, factor field volume rendering and dynamic simulation of current field. To express the spatial characteristics and real-time update of massive marine hydrological environmental data better, this study establishes nodes in the scene for the management of geometric objects to realize high-performance dynamic rendering. The system employs CUDA (Computing United Device Architecture) parallel computing for the improvement of computation rate, uses NetCDF (Network Common Data Form) le format for data access and applies GPU programming technology to realize fast volume rendering of marine water environmental factors. The interactive framework of the system can allow users to realize stereo real-time dynamic observation of marine water information through plane, contour line, isosurface and volume information, display single spatial point of ocean consecutively and realize stereo display of spatial scope region extended from single spatial point or section line of ocean. It provides intuitive and comprehensive for the research on marine water environment.
marine environment; OSG; GPU; NetCDF; multidimensional visualization
中央级公益性科研院所基本科研业务费专项(2015P12);中央级公益性科研院所基本科研业务费专项(2015G18)资助
2014-09-15;
2015-08-21
曹 柱(1988-),男,硕士生。E-mail:sutiany@fio.org.cn
P714.+2;P715
A
1672-5174(2017)04-132-07
10.16441/j.cnki.hdxb.20140312
曹柱, 苏天赟, 王国宇. 大规模海洋水文环境多维可视化技术研究[J]. 中国海洋大学学报(自然科学版), 2017, 47(4): 132-138.
CAO Zhu, SU Tian-Yun, WANG Guo-Yu. Multidimensional visualization technology research about the large-scale oceanographic environment[J]. Periodical of Ocean University of China, 2017, 47(4): 132-138.
Supported by Basic Scientific Fund for National Public Research Institutes of China(2015P12);Basic Scientific Fund for National Public Research Institutes of China(2015G18)