姚丹丹 ,苗 放,陳 軍,盧涵宇
(1.成都理工大學(xué)地球探測與信息技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室, 四川成都610059;2.成都信息工程大學(xué)資源與環(huán)境學(xué)院, 四川成都610225;3.貴州大學(xué)大數(shù)據(jù)與信息工程學(xué)院, 貴州貴陽550025;4.北京大學(xué)遙感與地理信息系統(tǒng)研究所, 北京100871)
?
基于OpenGL的ArcGIS Globe動(dòng)態(tài)三維符號(hào)渲染可視化研究
姚丹丹1,苗放1,陳軍2,盧涵宇3,4
(1.成都理工大學(xué)地球探測與信息技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室, 四川成都610059;2.成都信息工程大學(xué)資源與環(huán)境學(xué)院, 四川成都610225;3.貴州大學(xué)大數(shù)據(jù)與信息工程學(xué)院, 貴州貴陽550025;4.北京大學(xué)遙感與地理信息系統(tǒng)研究所, 北京100871)
摘要:針對ArcGIS Globe中3D圖形動(dòng)態(tài)三維符號(hào)渲染受限的問題,提出一種在ArcGIS Globe中嵌入OpenGL的解決方法。利用OpenGL解析3D模型文件,實(shí)現(xiàn)模型的渲染與定向,并配合光照技術(shù)完成Globe 3D模型繪制;在此基礎(chǔ)上,使用單獨(dú)的線程監(jiān)視三維場景新增的數(shù)據(jù),并將三維符號(hào)的地心數(shù)據(jù)及其狀態(tài)保存在內(nèi)存之中,以提升動(dòng)態(tài)渲染的效率。實(shí)驗(yàn)表明:本方法利用OpenGL改善了ArcGIS Globe的三維符號(hào)動(dòng)態(tài)可視化效果和性能,具有一定的理論意義和實(shí)踐價(jià)值。
關(guān)鍵詞:OpenGL;ArcGIS Globe;3D;動(dòng)態(tài)三維渲染;優(yōu)化
隨著計(jì)算機(jī)大容量存儲(chǔ)介質(zhì)、多媒體技術(shù)和可視化技術(shù)的發(fā)展,GIS 也發(fā)生了新的變化。地理信息表達(dá)形式由傳統(tǒng)紙質(zhì)地圖發(fā)展到虛擬地理環(huán)境,維度從二維平面發(fā)展到三維立體[1-3]。其中三維GIS是當(dāng)今GIS發(fā)展的一個(gè)新趨勢,具有可視化展現(xiàn)、立體表現(xiàn)效果,對客觀世界的表達(dá)給人更真實(shí)、直觀的感受。目前三維空間信息需求日益增長,三維GIS在現(xiàn)代新興技術(shù)驅(qū)動(dòng)下穩(wěn)步發(fā)展[4-5]。
目前三維GIS軟件如MultiGen Creator、3ds Max、Maya、SketchUp等三維可視化能力較強(qiáng),但是空間分析能力相對較弱[6-7]。ArcGIS Globe具有強(qiáng)大的空間分析能力,高性能的3D 可視化能力,可以全球三維可視化展示。但是由于ArcGIS Globe沒有3D分析工具條,不能支持動(dòng)態(tài)山影效果、復(fù)雜的三維符號(hào)和沿路徑移動(dòng)的圖層。當(dāng)特定場景中需要繪制動(dòng)態(tài)三維符號(hào)時(shí),如在三維場景中繪制傳感器錐和軌跡線時(shí),ArcGIS Globe則無法實(shí)現(xiàn)動(dòng)態(tài)三維效果,需要借助其他軟件實(shí)現(xiàn)。ArcGIS提供了OpenGL無縫集成到ArcGIS Globe的環(huán)境[8-12]。本文利用OpenGL實(shí)現(xiàn)Globe動(dòng)態(tài)三維符號(hào)的擴(kuò)展渲染,通過使用自定義的OpenGL渲染,可動(dòng)態(tài)繪制高度專業(yè)化的3D復(fù)雜圖形對象,增強(qiáng)用戶的體驗(yàn)感,擴(kuò)展了Globe三維效果,具有十分重要的研究意義。
1OpenGL 3D嵌入ArcGIS Globe的基本方法
1.1ArcGlobe嵌入OpenGL方法
ArcGlobe用于展示大數(shù)據(jù)量的場景,支持對柵格和矢量數(shù)據(jù)無縫的顯示。它使用GIS數(shù)據(jù)層,顯示geodatabase和所有支持的GIS數(shù)據(jù)格式中的信息,圖層放在一個(gè)單獨(dú)的內(nèi)容表中,將所有的GIS數(shù)據(jù)源整合到一個(gè)通用的全球的框架中。
ArcGlobe三維渲染使用了OpenGL繪圖環(huán)境,這為在ArcGlobe中嵌入OpenGL代碼提供了前提條件。OpenGL代碼一般放在GlobeControl的BeforeDraw、AfterDraw事件中。
ArcGlobe通過OpenGL繪圖的一般流程:①繪制圖形并上色。使用命令GL.glBegin()和GL.glEnd()進(jìn)行開始、結(jié)束繪制。根據(jù)條件使用glColor3f(r,g,b)進(jìn)行上色。通過簡單的OpenGL算法就能繪制基本圖形到Globe中。②繪制圖形紋理。先繪制位圖,根據(jù)紋理圖像創(chuàng)建OpenGL幾何要素,旋轉(zhuǎn)、縮放并繪制在正確的地理位置。然后編譯顯示列表,最后結(jié)合OpenGL繪制幾何紋理,應(yīng)用程序中通過幾何顯示列表和圖像紋理來繪制紋理元素。
1.2ArcGlobe的空間坐標(biāo)系統(tǒng)
ArcGlobe使用一個(gè)地心空間直角坐標(biāo)系將所有數(shù)據(jù)投影到球形表面,該坐標(biāo)系定義為原點(diǎn)O與地球質(zhì)心重合,Z軸指向地球北極,X軸指向格林尼治子午面與地球赤道的交點(diǎn),Y軸垂直于XOZ平面構(gòu)成右手坐標(biāo)系。已添加到ArcGlobe 文檔中的所有數(shù)據(jù)都會(huì)被動(dòng)態(tài)投影到該坐標(biāo)系中。OpenGL繪制的模型要正確疊放至地球表面對應(yīng)位置,需要將物體的空間坐標(biāo)系轉(zhuǎn)換至ArcGlobe地心空間直角坐標(biāo)系中。大地經(jīng)緯度坐標(biāo)(緯度φ,經(jīng)度λ)可以用地心直角坐標(biāo)X、Y、Z表示。
本文設(shè)定坐標(biāo)系的零經(jīng)線為格林威治子午線,如果定義不一致,在使用各公式前首先將零經(jīng)線轉(zhuǎn)換到格林威治子午線。設(shè)橢球長半軸為a,短半軸為b,扁率倒數(shù)為1/f,那么:

(1)
式(1)中:ν為緯度φ處的卯酉圈曲率半徑,如式(2)所示:

(2)
φ和λ分別為坐標(biāo)點(diǎn)的緯度和經(jīng)度,h為相對橢球面的高度,e為橢球第一偏心率,如式(3)所示:

(3)
反之,X、Y、Z地心直角坐標(biāo)也可以轉(zhuǎn)換成經(jīng)緯度大地坐標(biāo),如式(4)所示:

(4)
通過迭代計(jì)算,則:

(5)
h=Xsecλsecφ-v,
(6)
式(5)與式(6)中λ從格林威治本初子午線起算。
1.3Globe中模型的渲染與定向
繪制3D模型前除了需要獲取3D模型的地心坐標(biāo)外,還需對模型進(jìn)行渲染定向。顯示列表是一個(gè)緩存OpenGL幾何圖像優(yōu)化的渲染技術(shù),多次重繪同一圖形需要多次調(diào)用用于更改狀態(tài)的函數(shù)。由于顯示列表本身也有一定的開銷,顯示列表必須首先被編譯。編譯顯示列表時(shí),它的幾何形狀必須完全指定。對OpenGL在Globe繪圖優(yōu)化使用顯示列表如下:
m_intDispListNo = Gl.glGenLists(1);
Gl.glNewList(m_intDispListNo, Gl.GL_COMPILE);

圖1 定向示意圖Fig.1 Directional diagram
Render();
Gl.glEndList();
首次繪制模型時(shí),模型以三角形網(wǎng)格呈現(xiàn)在顯示列表中。三角網(wǎng)格通過面集合三重頂點(diǎn)繪制而成。當(dāng)渲染顯示列表中的一個(gè)圖形,該圖形應(yīng)該是定向的方式,渲染時(shí)模型的Y軸應(yīng)與在Globe表面處的法向量對準(zhǔn)。在Globe處X的向量可由Globe原點(diǎn)與給定X坐標(biāo)歸一化求得。從所得的Globe處的x分量可用于構(gòu)建一個(gè)繞X軸的旋轉(zhuǎn)矩陣,而z分量也可用于構(gòu)造一個(gè)繞Z軸的旋轉(zhuǎn)矩陣。
這些旋轉(zhuǎn)矩陣可以調(diào)用Gl.glMultMatrix獲得,如圖1定向示意圖顯示Θ和Φ為模型Y軸與Globe表面上法向量的選擇角度,如果圖形需要被排列在一個(gè)特定的方向(0°~359°),這樣就可以使用Gl.glRotated和繞Y軸(矢量)旋轉(zhuǎn)。
2ArcGIS Globe動(dòng)態(tài)三維符號(hào)展現(xiàn)的總體框架
ArcGlobe借助動(dòng)畫,可以對視角的變化、文檔屬性的變更和地理移動(dòng)進(jìn)行可視化處理;同時(shí)還可以通過簡單的3D符號(hào)化渲染出逼真的 3D 世界。在ArcGlobe內(nèi)部渲染中實(shí)現(xiàn)基于OpenGL的ArcGIS Globe三維空間數(shù)據(jù)展示,必須在ArcGlobe的AfterDraw事件創(chuàng)建一個(gè)事件處理。基于OpenGL的ArcGIS Globe三維數(shù)據(jù)展示分為3D模型繪制與動(dòng)態(tài)圖形繪制,對3D模型的繪制主要分為格式解析、渲染效果和數(shù)據(jù)檢索等操作;對于動(dòng)態(tài)圖形繪制主要分為地心計(jì)算、圖形繪制、添加紋理和性能優(yōu)化操作。總體框架示意圖如圖2所示:

圖2 總體框架示意圖
3ArcGIS Globe動(dòng)態(tài)三維符號(hào)展現(xiàn)的關(guān)鍵技術(shù)
3.1解析和渲染3D模型文件
①OBJ文件格式
OBJ文件是Alias|Wavefront公司為它的一套基于工作站的3D建模和動(dòng)畫軟件“Advanced Visualizer”開發(fā)的一種標(biāo)準(zhǔn)3D模型文件格式。它是一種文本文件,可以直接用寫字板打開進(jìn)行查看和編輯修改;不需要任何種文件頭(File Header),由一行行文本組成,注釋行以符號(hào)“#”為開頭,有字的行都由關(guān)鍵字(Keyword)開頭。基本結(jié)構(gòu)如表1所示。
②MTL文件格式
MTL為Matrix Template Library的簡寫,中文為矩陣模板庫,屬于C++語言機(jī)制下的科學(xué)與工程計(jì)算的數(shù)學(xué)函數(shù)庫,專注于線性代數(shù)方向。由于其采用了多種最新的編程技術(shù),所以程序執(zhí)行效率很高,可與Fortran媲美。MTL格式如表2所示。

表1 OBJ格式

表2 MTL格式
3.2Globe中模型的渲染效果
①Globe模型光照效果
ArcGlobe中模型的材質(zhì)與光照效果如何更好的展示是需要解決的重要問題之一。模型的材質(zhì)與光效效果由OpenGLRender方法控制,該方法是調(diào)用AfterDraw上的GlobeDisplay事件。調(diào)用glIsEnabled渲染用戶自定義的ArcGlobe。為了確保在所繪制的圖形上使用一個(gè)標(biāo)準(zhǔn)的局部照明效果,需在Globe環(huán)境光照效果關(guān)閉后對圖形進(jìn)行渲染。
②Globe模型材質(zhì)效果
默認(rèn)情況下,ArcGlobe中使用的材料的著色模式GL_COLOR_MATERIAL。這是一個(gè)在需要繪制較多數(shù)目幾何頂點(diǎn)時(shí)僅用單一材料參數(shù)的性能成本最小化的技術(shù)。當(dāng)超過一個(gè)單一的材料參數(shù)需要改變時(shí)調(diào)用glMaterialf*,因此必須將GL_COLOR_MATERIAL禁用。

圖3光照效果
Fig.3Lighting effect

圖4材質(zhì)效果
Fig.4Material effect
3.3OpenGL動(dòng)態(tài)繪圖數(shù)據(jù)的檢索
使用OpenGL繪制圖形時(shí),除了用戶直接通過算法繪制圖形外,還可根據(jù)已有的繪圖數(shù)據(jù)進(jìn)行繪制。在一般情況下,Globe在繪制事件中無限循環(huán)使用OpenGL應(yīng)用程序繪制圖形場景,從而體現(xiàn)Globe中圖形的改變以及某些事件發(fā)生后場景內(nèi)的動(dòng)態(tài)繪制。GlobeControl為了達(dá)到用戶交互功能,使用GlobeDisplay。ActiveViewer的ReDraw事件也可達(dá)到繪制效果。如果要呈現(xiàn)的數(shù)據(jù)需要每次AfterDraw事件被觸發(fā)檢索,應(yīng)用程序性能上面臨相當(dāng)大的壓力。為了避免這個(gè)問題,在第一次繪圖時(shí)檢索一個(gè)完整的數(shù)據(jù)集,然后使用單獨(dú)的線程來監(jiān)視,當(dāng)附加的數(shù)據(jù),額外的數(shù)據(jù)點(diǎn)(例如巡航點(diǎn))需要繪制時(shí),由該線程檢索數(shù)據(jù)源數(shù)據(jù)插入巡航點(diǎn),更新繪制的數(shù)據(jù)結(jié)構(gòu)。下一次Globe重繪時(shí),數(shù)據(jù)結(jié)構(gòu)中額外插入的數(shù)據(jù)點(diǎn)也進(jìn)行繪制,因此不會(huì)消耗較多的時(shí)間處理檢索數(shù)據(jù)。
3.4繪制圖形優(yōu)化
根據(jù)繪制條件有時(shí)一個(gè)對象可能在一個(gè)繪制周期中需要重畫多次,如果每一次都去計(jì)算地心坐標(biāo)和方向?qū)?huì)影響效率。因此當(dāng)對某一個(gè)對象進(jìn)行更新時(shí),將其地心坐標(biāo)和方向保存。使它能夠調(diào)用內(nèi)部的DrawImmediate方法,從而提升繪制效率。
本文以雷達(dá)模型動(dòng)態(tài)繪制為例進(jìn)行測試,一個(gè)雷達(dá)模型主要由長方體、圓柱、立方體、圓錐曲面、球體等立體圖形構(gòu)成,共有3 216個(gè)三角形。雷達(dá)模型復(fù)雜,在場景中,雷達(dá)是動(dòng)態(tài)變化的,需要多次繪制雷達(dá)模型,如圖5所示。運(yùn)用OpenGL繪制算法,對不同規(guī)模數(shù)量的三維圖形,采用直接繪制和優(yōu)化繪制兩種方法進(jìn)行繪制對比。表3為兩種繪制方式繪制時(shí)間的測試結(jié)果(本文以繪制圖形數(shù)量和耗時(shí)為對比條件)。

表3 三維圖形繪制時(shí)間測試對照表
由表3可得到結(jié)論:①對相同規(guī)模數(shù)量的三維數(shù)據(jù)繪制,優(yōu)化繪制耗時(shí)少于直接繪制,說明通過保存需要多次繪制圖形的地心與方向一定程度上可以優(yōu)化繪制效率。②優(yōu)化繪制方法隨著規(guī)模數(shù)量增加耗時(shí)增加緩慢,直接繪制耗時(shí)與優(yōu)化耗時(shí)比值增大,說明優(yōu)化算法對繪制大規(guī)模圖形是不錯(cuò)的解決方案。

圖5 動(dòng)態(tài)繪圖示意圖
4結(jié)語
ArcGIS Globe顯示三維事物更加逼真,但是缺乏動(dòng)態(tài)繪制三維模型能力,通過嵌入OpenGL可擴(kuò)展其三維功能,繪制渲染復(fù)雜的動(dòng)態(tài)3D圖形。OpenGL 3D模型繪制時(shí),保存繪制對象的地心坐標(biāo)和方向,可優(yōu)化繪制效率,減少了動(dòng)態(tài)繪制3D模型數(shù)據(jù)加載時(shí)間,增強(qiáng)了圖形繪制的連貫性,彌補(bǔ)了ArcGIS Globe動(dòng)態(tài)三維渲染的不足,提高了Globe中顯示三維模型的性能。
參考文獻(xiàn):
[1]陶瓊,朱大明.三維GIS的發(fā)展趨勢與建模分析[J]. 地礦測繪,2008,24(4):35-37.
[2]冷小鵬,苗放,楊文暉,等.基于G/S模式的三維GIS監(jiān)測系統(tǒng)研究[J]. 廣西大學(xué)學(xué)報(bào)(自然科學(xué)版),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 三維圖形系統(tǒng)開發(fā)與實(shí)用(實(shí)用技術(shù)篇)[M]. 北京:清華大學(xué)出版社,2003.
[5]吳岱衡.基于OpenGL開發(fā)的無序透明渲染[D]. 廣州:華南理工大學(xué),2012.
[6]李世娟.3DMAX在三維GIS建模中的應(yīng)用與研究[C]//中國計(jì)量協(xié)會(huì)冶金分會(huì)2012年會(huì)論文集,貴陽:冶金自動(dòng)化,2012(S2):371-373.
[7]賴冬林,張豐,杜震洪,等.基于遠(yuǎn)程渲染的移動(dòng)三維GIS構(gòu)建方法[J]. 計(jì)算機(jī)應(yīng)用與軟件,2015,32(7):196-199.
[8]楊鍵,陳利學(xué),龔捷.基于OpenGL 的三維圖形繪制和3D建模[J]. 軟件導(dǎo)刊,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 中的導(dǎo)入與處理[J]. 科技信息,2013,5(7):94-95,124.
[11]李凌.基于OpenGL的遙感圖像三維可視化重建[D]. 南京:南京郵電大學(xué),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.
(責(zé)任編輯梁碧芬)
收稿日期:2015-10-26;
修訂日期:2016-01-16
基金項(xiàng)目:國家自然科學(xué)基金資助項(xiàng)目(61071121);中國博士后科學(xué)基金資助項(xiàng)目(2014M562511XB);貴州省科技廳基金資助項(xiàng)目(黔科合2014[7633])
通訊作者:苗放(1958—),男,北京人,成都理工大學(xué)教授,博士生導(dǎo)師;E-mail:mf@cdut.edu.cn。
doi:10.13624/j.cnki.issn.1001-7445.2016.0816
中圖分類號(hào):TP391
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):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動(dòng)態(tài)三維符號(hào)渲染可視化研究[J].廣西大學(xué)學(xué)報(bào)(自然科學(xué)版),2016,41(3):816-821.