邱國鵬,陳立龍
(三明學(xué)院 海峽動漫學(xué)院,福建 三明 365004)
現(xiàn)階段,年輕人學(xué)車越來越普遍,駕駛技能儼然已經(jīng)成為了一種必備技能?,F(xiàn)階段的駕考有三個較為凸顯的特點,第一,考驗場數(shù)量有限,一個市轄區(qū)內(nèi),可能只有一個考驗場,因為考驗場是考試場地,所以基本上學(xué)員都要到考驗場練習(xí),也因為考驗場的唯一性,所以對于一些較為偏遠(yuǎn)的而言,提高了他們的學(xué)習(xí)成本,同時也勢必造成考驗場擁堵不堪;第二,隨著駕考改革各項政策的實施,國家對交通安全監(jiān)管力度的加大,考駕照將會越來越難;第三,考驗場本身也處于動態(tài)的建設(shè)與發(fā)展之中?;诖?,對于學(xué)員而言,場地之前的學(xué)習(xí)就顯得尤為重要。
每個駕校都會針對場地考(科二)和道路考(科三)推出了一些教學(xué)資料,但基本上都是靜態(tài)圖片或者360度全景圖,少部分也有動畫、視頻或者單機版的駕考模擬軟件。其中平面圖片具有成本低、查看方便的特點,但是不夠直觀,也不利于后期維護;360度全景度也是只能讓學(xué)員了解到一個大概的地形,也不能與要點進行很好的結(jié)合;動畫、視頻或者單機版的駕考模擬軟件同樣不利于后期維護。為了消除這些不足,本文旨在設(shè)計和研究一個基于osgEarth框架的三維可視化系統(tǒng),該系統(tǒng)直觀高效、可高度自定義。
OpenSceneGraph(簡稱OSG)是一個基于OpenGL技術(shù)開發(fā)的三維場景圖渲染與調(diào)度引擎,是一套基于C++平臺的應(yīng)用程序接口(API),它讓程序員能夠更加快速、便捷地創(chuàng)建高性能、跨平臺的交互式圖形程序。作為中間件為應(yīng)用軟件提供了各種高級渲染特性、IO,以及空間結(jié)構(gòu)組織函數(shù)。
osgEarth又是基于OSG框架開發(fā)的一個專注于數(shù)字地球、具有GIS功能的OSG擴展。具有如下一些特性:實時生成地形(紋理與高程),根據(jù)紋理和高程實時生成;支持矢量圖渲染,靈活繪制矢量圖;支持?jǐn)?shù)字城市開發(fā);支持地形調(diào)度,地形預(yù)生成的功能;提供了豐富的工具,比如緩存、osgEarth-Manipulator等;存儲空間要求較小,因為都存在服務(wù)器。
目前基于osgEarth的應(yīng)用研究也層出不窮,有在軍事上的應(yīng)用,比如構(gòu)建虛擬三維空戰(zhàn)場景[1]和無人直升機任務(wù)規(guī)劃系統(tǒng)[2]等,也有在工程中的應(yīng)用,比如三維輸水管模擬系統(tǒng)[3]、地形建模[4]、燕塞湖水壩風(fēng)險評估[5]、3D城市場景建設(shè)[6-7]以及數(shù)字地球等[8],還有一些導(dǎo)航上的應(yīng)用[9-10]。
根據(jù)給定(選?。┑囊唤M關(guān)鍵坐標(biāo)點(經(jīng)緯度值)所繪制出的平滑曲線(駕考路線圖)。本文的方法為Bezier段之間進行拼接。其算法核心必須計算出Bezier曲線的控制點,實現(xiàn)的方法如下:
設(shè)在平面上已知有 n+1個數(shù)據(jù)點 Pi(xi,yi),i=1,2,…,n。 要求在相鄰的每兩個點 Pi與 Pi+1之間,用一條3次Bezier曲線連接。
3次Bezier由4個點確定:Pi是它的起點,Pi+1是它的終點,在起點和終點之間,另外還有兩個控制點,依次記為Ai和Bi,現(xiàn)在需要確定這兩個控制點。
把過Pi點的切線方向,取為與線段Pi-1Pi+1平行的方向,那么,控制點Ai的坐標(biāo)就可以表示為:
控制點Bi的坐標(biāo)就可以表示為:
其中a,b是兩個可以任意給定的正數(shù),比如說,可以取a=b=1/4,這時,控制點的坐標(biāo)可以用下列公式求出:
例:設(shè)Pi-1,Pi,Pi+1,Pi+2這4點的坐標(biāo)為:
按照上面給出的公式,可以求得控制點Ai的坐標(biāo)為:
控制點Bi的坐標(biāo)為
連接Pi與Pi+1的3次Bezier曲線的參數(shù)方程為:
對這種曲線的最初一段和最后一段,不能用上述公式計算,因為公式中要用到(x-1,y-1)和(xn+1,yn+1),這兩個點其實是不存在的。使用如下處理方法:
用(x0,y0)的值作為(x-1,y-1)的值,用(xn,yn)的值作為(xn+1,yn+1)的值。也就是說,在連接P0與P1的最初一段Bezier曲線中,控制點A0的坐標(biāo)為:
在連接Pn-1與Pn的最后一段Bezier曲線中,控制點Bn-1的坐標(biāo)為:
圖1所示為根據(jù)算法,使用一組模擬點畫出的一條平滑的曲線。
圖1 根據(jù)一組模擬點畫出的平滑曲線
本系統(tǒng)基于WIN7操作系統(tǒng)、NVIDIA顯示卡、Visual Studio 2010集成開發(fā)環(huán)境進行開發(fā)的單文檔應(yīng)用程序,界面采用Visual Studio 2010的Office風(fēng)格。使用osgdem地形生成工具。
系統(tǒng)基于底層的渲染引擎開發(fā),并集成第三方庫文件。數(shù)據(jù)庫包含數(shù)據(jù)傳輸驅(qū)動、數(shù)據(jù)解析驅(qū)動、數(shù)據(jù)存儲驅(qū)動,專業(yè)空間轉(zhuǎn)化庫包含空間坐標(biāo)轉(zhuǎn)換庫、空間數(shù)據(jù)校驗庫等,渲染庫包含了底層的OpenGL渲染庫、平臺相關(guān)的渲染窗口系統(tǒng)庫和跨平臺支持庫。系統(tǒng)架構(gòu)見圖2所示。
圖2 系統(tǒng)體系結(jié)構(gòu)
為了在駕考場地區(qū)域的實際的經(jīng)緯度位置上疊加一塊高精度的影像與高程,需要獲取該區(qū)域的高清影像與高精度高程,并對這些地形數(shù)據(jù)進行預(yù)處理。
從ASTER GDEM下載30 m精度 (一個像素代表30 m*30 m區(qū)域)高程紋理,通過輸入經(jīng)緯度坐標(biāo)的方式指定下載區(qū)域。通過ERDAS IMAGINE 9.2對下載的高程文件進行精度校驗。即便高程不是很精確,最終可以對高程進行插值模擬。
影像紋理的清晰度比高程來得更重要一些,因為紋理的精度,直接決定了最終效果的精細(xì)程度,而且紋理不能進行插值。本文使用arceyes(阿凱日)的谷歌衛(wèi)星地圖下載器下載紋理,支持多級紋理下載,而且在導(dǎo)出拼接時,可自動將低級別的紋理填充到高級別上。
切割:本系統(tǒng)不需要全球高程,所以使用gdalwarp(投影轉(zhuǎn)換與投影設(shè)置工具)進行切割,切割命令如下所示:
gdalwarp-rsc-t srs"+prj=latlong"-te 108 34 109 35 srtm30plus_stripped.tif 10934.tif
紋理坐標(biāo)校正與轉(zhuǎn)換:①如果紋理本身沒有坐標(biāo)系統(tǒng),則需要為紋理加入坐標(biāo)系統(tǒng)。本文使用Global Mapper v12.01進行紋理圖像的地球參考坐標(biāo)設(shè)定(影像校正),只需確定文件四個角點的經(jīng)緯度數(shù)據(jù)。②如果紋理坐標(biāo)系統(tǒng)是UTM平面的坐標(biāo)系統(tǒng),則需要轉(zhuǎn)換為地心坐標(biāo)系統(tǒng)。坐標(biāo)系統(tǒng)的轉(zhuǎn)換和插值可以使用ERDAS IMAGINE 9.2進行重新投影,本文使用立方卷積的方式進行插值。
拼接:本文使用ERDAS IMAGINE的馬賽克工具進行拼接。
osgEarth通過讀取earth文件來識別需要完成的各項功能,文件由一個主標(biāo)簽map,包含highfield高程、image紋理以及定義緩存的cache的3個常用標(biāo)簽及其屬性進行配置。earth文件定義如圖3。
圖3 earth文件編寫
基于osgEarth搭建的數(shù)字地球具有動態(tài)生成、負(fù)擔(dān)大、調(diào)度慢等特性,解決調(diào)度慢的方法是使用緩存機制來解決問題。在服務(wù)器端或者客戶端,使用osgearth_cache工具預(yù)先生成地形緩存,客戶端啟動時加載的速度會有顯著提升。使用的命令為:osgearth_cache--seed china-simple.earth--max-level 3。
地球基礎(chǔ)框架中的影像層級較少,影像比較模糊,使用如下步驟在地球上增補高清影像:①從Google獲取紋理;②使用osgdem進行紋理校正(重投影),生成中間文件(因為從Google導(dǎo)出的紋理的坐標(biāo)不能直接使用);③osgEarth加載中間文件;④使用composite標(biāo)簽進行紋理復(fù)合,因為頂層的image標(biāo)簽數(shù)量有限制,但是composite沒有限制,再者也為了避免直接使用兩個image標(biāo)簽會導(dǎo)致兩張紋理中間有縫隙的問題。
使用PagedLOD來動態(tài)加載地標(biāo),在場景中需要渲染模型時,才進行加載和讀取到程序中來,在不需要顯示時,及時移出內(nèi)存。按需讀取,這樣可以節(jié)省內(nèi)存開銷,而且初始加載時系統(tǒng)性能也不會受到影響。
以三明駕考考驗場為例,共有3個考試場地,包括理論考試區(qū)域(科目一駕駛員理論考試和科目三的安全文明駕駛常識部分)、場地駕駛技能考試(科目二)區(qū)域、道路駕駛技能考試(科目三)區(qū)域,將從考試區(qū)域數(shù)據(jù)庫(見表1)中按照區(qū)域、項目的名稱分別導(dǎo)出成一個ive文件,并輸出到對應(yīng)文件夾。離得近的時候進行動態(tài)地標(biāo)調(diào)度。
表1 地名表Region
shape文件是一種矢量文件,用來顯示公路、邊界區(qū)、建筑物外表等。本文使用ArcView GIS 3.3編輯shape文件。
首先在3ds max中將數(shù)字城市模型(考試樓,標(biāo)識牌等)建好,通過3dvri for max插件導(dǎo)出城市模型,其導(dǎo)出的文件格式為ive。在數(shù)字地球中增加城市,默認(rèn)會在原點,需要將物體移動到地表的對應(yīng)點上(為了能夠把地表覆蓋住,需要將高度設(shè)置高一些),然后處理物體的朝向。
設(shè)置路徑的方式是以經(jīng)緯度、高度的方式設(shè)定,最后再將絕對坐標(biāo)點轉(zhuǎn)換成世界坐標(biāo)點。
路線中關(guān)鍵點信息由坐標(biāo)(經(jīng)度x、緯度y、高度z)與速度(v)兩部分組成,根據(jù)關(guān)鍵點信息獲取到路線,最后設(shè)定跟蹤。表2為考驗場項目數(shù)據(jù)庫表。
關(guān)鍵點數(shù)據(jù)庫表設(shè)計見表3所示。
表2 考驗場項目表Item
表3 考驗場路線關(guān)鍵點Location
路徑漫游中,物體在關(guān)鍵點n處的朝向,根據(jù)的n點和n-1點的連線進行計算。
根據(jù)公式(1)和(2),在Canvas中繪制路線的偽代碼見如下:
Begin
輸入 坐標(biāo)點數(shù)組points
輸入 線條樣式,線條顏色,線條寬度
For i from 0 to point.length step 1
If i==0則 moveTo第0個坐標(biāo)點
否則 輸入points,i-1,得到控制點P
輸入P.pA.x,P.pA.y,P.pB.x,P.pB.y,point[i].x,point[i].y
繪制
End
首次運行需要幾分鐘時間,因為需要根據(jù)影像和高程文件動態(tài)生成地形,并且會在指定路徑下生成緩存文件,后續(xù)打開將會非???。
圖4為增補的高清考驗場地形,增加系列控制點之后,根據(jù)算法所繪制出的模擬的考驗場路線(可視化漫游路徑)圖見圖5所示,生成的平滑的Bezier曲線,達(dá)到了我們預(yù)期的目的。
圖4 增補的高清考驗場地形
圖5 考驗場路線
本文研究與設(shè)計了一個基于osgEarth的三維可視化駕考場地展示系統(tǒng),可自定義矢量信息、提供高度自定義路線曲線種類、路線動態(tài)設(shè)定與調(diào)整,根據(jù)給定的系列控制點繪制出平滑的貝塞爾曲線,用以模擬駕考路線,該系統(tǒng)用能夠既有利于學(xué)員更加直觀地熟悉考試場地,也有利于管理員對系統(tǒng)內(nèi)容的后期維護。系統(tǒng)還處于初步的設(shè)計研發(fā)階段,除了全局鳥瞰模式之外,計劃下一步增加多視角、按照選擇路線自動飛行漫游模式等功能。
參考文獻:
[1]王雷,丁華.基于 OSGEarth 的大型三維空戰(zhàn)場景的搭建[J].軟件,2016,37(1):114-116.
[2]黃福貴,張明,張大高.基于 OSGEarth 的無人直升機任務(wù)規(guī)劃系統(tǒng)開發(fā)[J].直升機技術(shù),2016(1):45-49.
[3]仇文順,劉一宏, 馬翔宇.基于 osgEarth 的三維輸水管網(wǎng)系統(tǒng)設(shè)計與實現(xiàn)[J].河南科技,2014(19):137-139.
[4]李瑋,劉彤.基于 osgEarth 的地形建模仿真[J].數(shù)據(jù)庫技術(shù),2014(1):212.
[5]ZHU J,WANG J H.Interactive virtual globe service system based on OsgEarth[J].AppliedMechanics&Materials, 2013,340:680-684.
[6]WUX D.Construction of urban 3D scene based on OsgEarth[J].Geospatial Information,2013,11(2):107-110..
[7]YU Y C,XU H W,WU X D.Research of the organization and scheduling of feature model of urban three-dimensional based OSGEarth[J].Geomatics& Spatial Information Technology,2014,37(11):63-67..
[8]CHEN B,REN Q, YANG H.Design and realization of 3D platform for digital earth based on OsgEarth [J].Electronic Science & Technology,2015,28(10):65-68..
[9]吳曉雪.基于的校園虛擬漫游及信息顯示系統(tǒng)研究[D].大連:大連海事大學(xué),2013.
[10]王金宏,朱軍,盧秋陽,等.基于 osgEarth 的虛擬校園場景建模研究[J].地理信息世界,2011,9(1):65-71.