APP下载

基于OpenGL的ArcGIS Globe动态三维符号渲染可视化研究

2016-07-28姚丹丹卢涵宇

关键词:绘制可视化动态

姚丹丹 ,苗 放,陈 军,卢涵宇

(1.成都理工大学地球探测与信息技术教育部重点实验室, 四川成都610059;2.成都信息工程大学资源与环境学院, 四川成都610225;3.贵州大学大数据与信息工程学院, 贵州贵阳550025;4.北京大学遥感与地理信息系统研究所, 北京100871)



基于OpenGL的ArcGIS Globe动态三维符号渲染可视化研究

姚丹丹1,苗放1,陈军2,卢涵宇3,4

(1.成都理工大学地球探测与信息技术教育部重点实验室, 四川成都610059;2.成都信息工程大学资源与环境学院, 四川成都610225;3.贵州大学大数据与信息工程学院, 贵州贵阳550025;4.北京大学遥感与地理信息系统研究所, 北京100871)

摘要:针对ArcGIS Globe中3D图形动态三维符号渲染受限的问题,提出一种在ArcGIS Globe中嵌入OpenGL的解决方法。利用OpenGL解析3D模型文件,实现模型的渲染与定向,并配合光照技术完成Globe 3D模型绘制;在此基础上,使用单独的线程监视三维场景新增的数据,并将三维符号的地心数据及其状态保存在内存之中,以提升动态渲染的效率。实验表明:本方法利用OpenGL改善了ArcGIS Globe的三维符号动态可视化效果和性能,具有一定的理论意义和实践价值。

关键词:OpenGL;ArcGIS Globe;3D;动态三维渲染;优化

随着计算机大容量存储介质、多媒体技术和可视化技术的发展,GIS 也发生了新的变化。地理信息表达形式由传统纸质地图发展到虚拟地理环境,维度从二维平面发展到三维立体[1-3]。其中三维GIS是当今GIS发展的一个新趋势,具有可视化展现、立体表现效果,对客观世界的表达给人更真实、直观的感受。目前三维空间信息需求日益增长,三维GIS在现代新兴技术驱动下稳步发展[4-5]。

目前三维GIS软件如MultiGen Creator、3ds Max、Maya、SketchUp等三维可视化能力较强,但是空间分析能力相对较弱[6-7]。ArcGIS Globe具有强大的空间分析能力,高性能的3D 可视化能力,可以全球三维可视化展示。但是由于ArcGIS Globe没有3D分析工具条,不能支持动态山影效果、复杂的三维符号和沿路径移动的图层。当特定场景中需要绘制动态三维符号时,如在三维场景中绘制传感器锥和轨迹线时,ArcGIS Globe则无法实现动态三维效果,需要借助其他软件实现。ArcGIS提供了OpenGL无缝集成到ArcGIS Globe的环境[8-12]。本文利用OpenGL实现Globe动态三维符号的扩展渲染,通过使用自定义的OpenGL渲染,可动态绘制高度专业化的3D复杂图形对象,增强用户的体验感,扩展了Globe三维效果,具有十分重要的研究意义。

1OpenGL 3D嵌入ArcGIS Globe的基本方法

1.1ArcGlobe嵌入OpenGL方法

ArcGlobe用于展示大数据量的场景,支持对栅格和矢量数据无缝的显示。它使用GIS数据层,显示geodatabase和所有支持的GIS数据格式中的信息,图层放在一个单独的内容表中,将所有的GIS数据源整合到一个通用的全球的框架中。

ArcGlobe三维渲染使用了OpenGL绘图环境,这为在ArcGlobe中嵌入OpenGL代码提供了前提条件。OpenGL代码一般放在GlobeControl的BeforeDraw、AfterDraw事件中。

ArcGlobe通过OpenGL绘图的一般流程:①绘制图形并上色。使用命令GL.glBegin()和GL.glEnd()进行开始、结束绘制。根据条件使用glColor3f(r,g,b)进行上色。通过简单的OpenGL算法就能绘制基本图形到Globe中。②绘制图形纹理。先绘制位图,根据纹理图像创建OpenGL几何要素,旋转、缩放并绘制在正确的地理位置。然后编译显示列表,最后结合OpenGL绘制几何纹理,应用程序中通过几何显示列表和图像纹理来绘制纹理元素。

1.2ArcGlobe的空间坐标系统

ArcGlobe使用一个地心空间直角坐标系将所有数据投影到球形表面,该坐标系定义为原点O与地球质心重合,Z轴指向地球北极,X轴指向格林尼治子午面与地球赤道的交点,Y轴垂直于XOZ平面构成右手坐标系。已添加到ArcGlobe 文档中的所有数据都会被动态投影到该坐标系中。OpenGL绘制的模型要正确叠放至地球表面对应位置,需要将物体的空间坐标系转换至ArcGlobe地心空间直角坐标系中。大地经纬度坐标(纬度φ,经度λ)可以用地心直角坐标X、Y、Z表示。

本文设定坐标系的零经线为格林威治子午线,如果定义不一致,在使用各公式前首先将零经线转换到格林威治子午线。设椭球长半轴为a,短半轴为b,扁率倒数为1/f,那么:

(1)

式(1)中:ν为纬度φ处的卯酉圈曲率半径,如式(2)所示:

(2)

φ和λ分别为坐标点的纬度和经度,h为相对椭球面的高度,e为椭球第一偏心率,如式(3)所示:

(3)

反之,X、Y、Z地心直角坐标也可以转换成经纬度大地坐标,如式(4)所示:

(4)

通过迭代计算,则:

(5)

h=Xsecλsecφ-v,

(6)

式(5)与式(6)中λ从格林威治本初子午线起算。

1.3Globe中模型的渲染与定向

绘制3D模型前除了需要获取3D模型的地心坐标外,还需对模型进行渲染定向。显示列表是一个缓存OpenGL几何图像优化的渲染技术,多次重绘同一图形需要多次调用用于更改状态的函数。由于显示列表本身也有一定的开销,显示列表必须首先被编译。编译显示列表时,它的几何形状必须完全指定。对OpenGL在Globe绘图优化使用显示列表如下:

m_intDispListNo = Gl.glGenLists(1);

Gl.glNewList(m_intDispListNo, Gl.GL_COMPILE);

图1 定向示意图Fig.1 Directional diagram

Render();

Gl.glEndList();

首次绘制模型时,模型以三角形网格呈现在显示列表中。三角网格通过面集合三重顶点绘制而成。当渲染显示列表中的一个图形,该图形应该是定向的方式,渲染时模型的Y轴应与在Globe表面处的法向量对准。在Globe处X的向量可由Globe原点与给定X坐标归一化求得。从所得的Globe处的x分量可用于构建一个绕X轴的旋转矩阵,而z分量也可用于构造一个绕Z轴的旋转矩阵。

这些旋转矩阵可以调用Gl.glMultMatrix获得,如图1定向示意图显示Θ和Φ为模型Y轴与Globe表面上法向量的选择角度,如果图形需要被排列在一个特定的方向(0°~359°),这样就可以使用Gl.glRotated和绕Y轴(矢量)旋转。

2ArcGIS Globe动态三维符号展现的总体框架

ArcGlobe借助动画,可以对视角的变化、文档属性的变更和地理移动进行可视化处理;同时还可以通过简单的3D符号化渲染出逼真的 3D 世界。在ArcGlobe内部渲染中实现基于OpenGL的ArcGIS Globe三维空间数据展示,必须在ArcGlobe的AfterDraw事件创建一个事件处理。基于OpenGL的ArcGIS Globe三维数据展示分为3D模型绘制与动态图形绘制,对3D模型的绘制主要分为格式解析、渲染效果和数据检索等操作;对于动态图形绘制主要分为地心计算、图形绘制、添加纹理和性能优化操作。总体框架示意图如图2所示:

图2 总体框架示意图

3ArcGIS Globe动态三维符号展现的关键技术

3.1解析和渲染3D模型文件

①OBJ文件格式

OBJ文件是Alias|Wavefront公司为它的一套基于工作站的3D建模和动画软件“Advanced Visualizer”开发的一种标准3D模型文件格式。它是一种文本文件,可以直接用写字板打开进行查看和编辑修改;不需要任何种文件头(File Header),由一行行文本组成,注释行以符号“#”为开头,有字的行都由关键字(Keyword)开头。基本结构如表1所示。

②MTL文件格式

MTL为Matrix Template Library的简写,中文为矩阵模板库,属于C++语言机制下的科学与工程计算的数学函数库,专注于线性代数方向。由于其采用了多种最新的编程技术,所以程序执行效率很高,可与Fortran媲美。MTL格式如表2所示。

表1 OBJ格式

表2 MTL格式

3.2Globe中模型的渲染效果

①Globe模型光照效果

ArcGlobe中模型的材质与光照效果如何更好的展示是需要解决的重要问题之一。模型的材质与光效效果由OpenGLRender方法控制,该方法是调用AfterDraw上的GlobeDisplay事件。调用glIsEnabled渲染用户自定义的ArcGlobe。为了确保在所绘制的图形上使用一个标准的局部照明效果,需在Globe环境光照效果关闭后对图形进行渲染。

②Globe模型材质效果

默认情况下,ArcGlobe中使用的材料的着色模式GL_COLOR_MATERIAL。这是一个在需要绘制较多数目几何顶点时仅用单一材料参数的性能成本最小化的技术。当超过一个单一的材料参数需要改变时调用glMaterialf*,因此必须将GL_COLOR_MATERIAL禁用。

图3光照效果

Fig.3Lighting effect

图4材质效果

Fig.4Material effect

3.3OpenGL动态绘图数据的检索

使用OpenGL绘制图形时,除了用户直接通过算法绘制图形外,还可根据已有的绘图数据进行绘制。在一般情况下,Globe在绘制事件中无限循环使用OpenGL应用程序绘制图形场景,从而体现Globe中图形的改变以及某些事件发生后场景内的动态绘制。GlobeControl为了达到用户交互功能,使用GlobeDisplay。ActiveViewer的ReDraw事件也可达到绘制效果。如果要呈现的数据需要每次AfterDraw事件被触发检索,应用程序性能上面临相当大的压力。为了避免这个问题,在第一次绘图时检索一个完整的数据集,然后使用单独的线程来监视,当附加的数据,额外的数据点(例如巡航点)需要绘制时,由该线程检索数据源数据插入巡航点,更新绘制的数据结构。下一次Globe重绘时,数据结构中额外插入的数据点也进行绘制,因此不会消耗较多的时间处理检索数据。

3.4绘制图形优化

根据绘制条件有时一个对象可能在一个绘制周期中需要重画多次,如果每一次都去计算地心坐标和方向将会影响效率。因此当对某一个对象进行更新时,将其地心坐标和方向保存。使它能够调用内部的DrawImmediate方法,从而提升绘制效率。

本文以雷达模型动态绘制为例进行测试,一个雷达模型主要由长方体、圆柱、立方体、圆锥曲面、球体等立体图形构成,共有3 216个三角形。雷达模型复杂,在场景中,雷达是动态变化的,需要多次绘制雷达模型,如图5所示。运用OpenGL绘制算法,对不同规模数量的三维图形,采用直接绘制和优化绘制两种方法进行绘制对比。表3为两种绘制方式绘制时间的测试结果(本文以绘制图形数量和耗时为对比条件)。

表3 三维图形绘制时间测试对照表

由表3可得到结论:①对相同规模数量的三维数据绘制,优化绘制耗时少于直接绘制,说明通过保存需要多次绘制图形的地心与方向一定程度上可以优化绘制效率。②优化绘制方法随着规模数量增加耗时增加缓慢,直接绘制耗时与优化耗时比值增大,说明优化算法对绘制大规模图形是不错的解决方案。

图5 动态绘图示意图

4结语

ArcGIS Globe显示三维事物更加逼真,但是缺乏动态绘制三维模型能力,通过嵌入OpenGL可扩展其三维功能,绘制渲染复杂的动态3D图形。OpenGL 3D模型绘制时,保存绘制对象的地心坐标和方向,可优化绘制效率,减少了动态绘制3D模型数据加载时间,增强了图形绘制的连贯性,弥补了ArcGIS Globe动态三维渲染的不足,提高了Globe中显示三维模型的性能。

参考文献:

[1]陶琼,朱大明.三维GIS的发展趋势与建模分析[J]. 地矿测绘,2008,24(4):35-37.

[2]冷小鹏,苗放,杨文晖,等.基于G/S模式的三维GIS监测系统研究[J]. 广西大学学报(自然科学版),2012,37(2):317-322.

[3]MONTGOMERY M.Developing 3-D analyst enhancements using openGL[OB/EL].(2004-06-21)[2015-10-11]. http://proceedings.esri.com/library/userconf/proc04/docs/pap1614.

[4]和平鸽工作室.OpenGL 三维图形系统开发与实用(实用技术篇)[M]. 北京:清华大学出版社,2003.

[5]吴岱衡.基于OpenGL开发的无序透明渲染[D]. 广州:华南理工大学,2012.

[6]李世娟.3DMAX在三维GIS建模中的应用与研究[C]//中国计量协会冶金分会2012年会论文集,贵阳:冶金自动化,2012(S2):371-373.

[7]赖冬林,张丰,杜震洪,等.基于远程渲染的移动三维GIS构建方法[J]. 计算机应用与软件,2015,32(7):196-199.

[8]杨键,陈利学,龚捷.基于OpenGL 的三维图形绘制和3D建模[J]. 软件导刊,2009,8(9):168-170.

[9]JAMES D.M, PHIL A.A GIS-based borehole data management and 3d visualization system[J]. Computers & Geosciences, 2006,32(10):1699-1708.

[10]鲁志伟.OBJ 模型文件在 OpenGL 中的导入与处理[J]. 科技信息,2013,5(7):94-95,124.

[11]李凌.基于OpenGL的遥感图像三维可视化重建[D]. 南京:南京邮电大学,2013.

[12]YUAN G J, ZHANG J J.According to OpenGL of 3D earth’s surface model research with realization[J]. Editorial Office of Journal of Liaoning Technical University (Natural Science Edition), 2005,24(Z1):17-19.

(责任编辑梁碧芬)

收稿日期:2015-10-26;

修订日期:2016-01-16

基金项目:国家自然科学基金资助项目(61071121);中国博士后科学基金资助项目(2014M562511XB);贵州省科技厅基金资助项目(黔科合2014[7633])

通讯作者:苗放(1958—),男,北京人,成都理工大学教授,博士生导师;E-mail:mf@cdut.edu.cn。

doi:10.13624/j.cnki.issn.1001-7445.2016.0816

中图分类号:TP391

文献标识码:A

文章编号:1001-7445(2016)03-0816-06

Research on visualization of dynamic 3D symbol rendering by OpenGL embedded in ArcGIS Globe

YAO Dan-dan1, MIAO Fang1, CHEN Jun2, LU Han-yu3,4

(1.Key Lab of Earth Exploration and Information Techniques of Ministry of Education,Chengdu University of Technology, Chengdu 610059, China; 2.Institute of Resources and Environment, Chengdu University of Information Technology, Chengdu 610225, China;3.College of Big Data and Information Engineering, Guizhou University, Guiyang 550025, China;4.Institute of Remote Sensing and Geographical Information System, Peking University, Beijing 100871,China)

Abstract:Aiming at the problem that dynamic three-dimensional symbol rendering of 3D graphics is restricted in ArcGIS Globe, a solution that embeds OpenGL in ArcGIS Globe is proposed. OpenGL is used for parsing a 3D model file, realizing rendering and orientation of the model and drawing the Globe 3D model with lighting technology. A separate thread is in charge of monitoring the added data in 3D scene and storing the geocentric data and states of 3D symbol into memory, so as to promote efficiency of dynamic rendering. The given experiments show that the presented method can improve the dynamic visualization effect and performance of 3D symbol in ArcGIS Globe with OpenGL, and have certain theoretical significance and practical value.

Key words:OpenGL;ArcGIS Globe;3D;dynamic three-dimensional render;optimize

引文格式: 姚丹丹,苗放,陈军,等.基于OpenGL的ArcGIS Globe动态三维符号渲染可视化研究[J].广西大学学报(自然科学版),2016,41(3):816-821.

猜你喜欢

绘制可视化动态
国内动态
基于CiteSpace的足三里穴研究可视化分析
国内动态
思维可视化
国内动态
基于CGAL和OpenGL的海底地形三维可视化
动态
“融评”:党媒评论的可视化创新
超萌小鹿课程表
放学后