李春林+魏廣群+蔣利利+粟藝峰
【摘 要】隨著數(shù)字地球的發(fā)展,LOD技術(shù)在場(chǎng)景展示中的作用愈加凸顯。本文通過對(duì)可視化技術(shù)的研究,以O(shè)SG為基礎(chǔ)渲染引擎,通過OSGEarth完成基礎(chǔ)平臺(tái)搭建,構(gòu)建出虛擬三維可視化系統(tǒng)平臺(tái)。該平臺(tái)完成了對(duì)基礎(chǔ)數(shù)據(jù)的添加,包括矢量數(shù)據(jù),影像數(shù)據(jù),數(shù)字高程模型數(shù)據(jù)。然后基于LOD技術(shù)實(shí)現(xiàn)矢量點(diǎn)標(biāo)注信息的添加,可以根據(jù)視點(diǎn)位置的不同瀏覽相應(yīng)視域內(nèi)的矢量點(diǎn)信息。
【關(guān)鍵詞】OSGEarth;LOD;Sqlite數(shù)據(jù)庫(kù)
中圖分類號(hào): TP311.52 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 2095-2457(2017)23-0001-003
【Abstract】With the development of digital earth,the role of LOD in scene display becomes more and more prominent. In this paper,through the research of visualization technology, based on OSG rendering engine,OSGarth completed the basic platform to build a virtual three-dimensional visualization system platform.The platform completed the basic data to add,including vector data,image data,digital elevation model data.Then based on the LOD technology to achieve the addition of vector point annotation information,you can view the corresponding point of view of the vector point information according to the different point of view.
【Key words】OSGEarth;LOD;Sqlite database
0 引言
二十世紀(jì)九十年代后期,“數(shù)字地球”開始進(jìn)入人們的視野。數(shù)字地球的核心內(nèi)容是采用虛擬的三維場(chǎng)景模擬真實(shí)的地球,并通過加載影像,地形以及多種模型數(shù)據(jù)進(jìn)行現(xiàn)實(shí)世界的仿真。在虛擬的三維地球中將所有信息數(shù)字化,實(shí)現(xiàn)人與數(shù)字地球的交互,使人們能夠快速獲取地球任意位置的有用信息[1]?;跀?shù)字地球人們不僅可以對(duì)地球有限的資源進(jìn)行合理利用,還能對(duì)環(huán)境進(jìn)行多方面保護(hù),對(duì)人們的工作生活提供諸多便利。
1 OSG及OSGEarth簡(jiǎn)介
1.1 OSG簡(jiǎn)介
OpenSceneGraph (簡(jiǎn)稱OSG)是一款開源的三維渲染引擎,其核心功能主要分為場(chǎng)景管理和圖形渲染兩大類[2]。因其強(qiáng)大的圖形渲染性能,OSG在虛擬現(xiàn)實(shí),仿真,三維可視化等方面得到較為廣泛的應(yīng)用。它使用C++編寫,封裝了OpenGL API,因此具有較強(qiáng)的跨平臺(tái)性,可運(yùn)行于Windows、UNIX 、Linux等操作系統(tǒng)之上。OSG之所以被程序開發(fā)者普遍看好,不僅源于它強(qiáng)大的性能支撐,更源于它的開源性。程序開發(fā)者可以修改OSG源代碼,實(shí)現(xiàn)自己所需要的功能。
OSG將場(chǎng)景渲染抽象出來(lái),提出了場(chǎng)景樹和渲染樹的概念。場(chǎng)景樹,顧名思義即采用樹形結(jié)構(gòu)來(lái)組織場(chǎng)景中的地物。與傳統(tǒng)的四叉樹數(shù)據(jù)結(jié)構(gòu)類似,場(chǎng)景樹同樣包含一個(gè)根節(jié)點(diǎn),不同的是,場(chǎng)景樹中節(jié)點(diǎn)的子節(jié)點(diǎn)不再四分,而是可以包含任意個(gè)數(shù)的子節(jié)點(diǎn),提高了加載調(diào)度效率。渲染樹由狀態(tài)集(StateSet)和渲染葉(RenderLeaf)節(jié)點(diǎn)組成。OSG可以同時(shí)渲染StateSet相同的RenderLeaf并可以在不同的StateSet之間任意切換。
1.2 OSGEarth簡(jiǎn)介
OSGEarth是基于OSG三維渲染引擎開發(fā)的一款開源地形、模型數(shù)據(jù)加載渲染的軟件開發(fā)包(Software Development Kits,簡(jiǎn)稱SDK)。它可以從網(wǎng)絡(luò)或者本地獲取地形數(shù)據(jù)和影像數(shù)據(jù),并實(shí)時(shí)地進(jìn)行優(yōu)化、構(gòu)建和顯示,支持多數(shù)據(jù)源的加載和管理[3]。OSG Earth使用基于XML格式的配置文件,可以從系統(tǒng)外部讀取本地文本文件加載地球數(shù)據(jù),開發(fā)人員可以手動(dòng)配置文本文件加載自己所需要的數(shù)據(jù),具有較強(qiáng)的靈活性。通過不同的場(chǎng)景圖層加載調(diào)度用戶所添加的數(shù)據(jù),便于數(shù)據(jù)管理。OSG Earth提供數(shù)據(jù)緩存機(jī)制,可以將第一次加載的數(shù)據(jù)以緩存的形式保存到本地,第二次加載時(shí)先讀取緩存數(shù)據(jù),提高了數(shù)據(jù)加載的效率。
OSGEarth加載數(shù)據(jù)源的方式是通過加載不同的數(shù)據(jù)源驅(qū)動(dòng)來(lái)完成的。比如,通過調(diào)用GDAL驅(qū)動(dòng)加載影像和DEM數(shù)據(jù);調(diào)用TMS服務(wù),加載基于 TMS 協(xié)議的瓦片數(shù)據(jù);調(diào)用ArcGIS驅(qū)動(dòng)器,加載顯示ArcGIS Server所發(fā)布的數(shù)據(jù)。此外,OSGEarth具有較強(qiáng)的擴(kuò)展性,用戶可以基于OSGEarth編寫自己的數(shù)據(jù)源驅(qū)動(dòng)加載相應(yīng)的數(shù)據(jù),比如編寫WMTS驅(qū)動(dòng),加載天地圖服務(wù)數(shù)據(jù)。
2 Sqlite數(shù)據(jù)庫(kù)
SQLite是一款輕型的數(shù)據(jù)庫(kù),是遵守ACID的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它包含在一個(gè)較小的C庫(kù)中。它是D.RichardHipp建立的公有領(lǐng)域項(xiàng)目。以嵌入式作為其設(shè)計(jì)目標(biāo),現(xiàn)在已經(jīng)有很多不同的嵌入式軟件產(chǎn)品,占用資源很少,在嵌入式設(shè)備中,大概只占用幾百kb的內(nèi)存即可。它對(duì)主流的操作系統(tǒng),比如Linux、Unix、Windows等,都能夠很好的支持。同時(shí)還能夠和Tcl、Java、PHP、C#等很多程序語(yǔ)言相結(jié)合。而且和MySQL、PostgreSQL這兩款世界領(lǐng)先的開源軟件相對(duì)比來(lái)看,它的處理速度明顯較快。endprint
3 LOD算法
在大部分的GIS項(xiàng)目中,加載海量的地形數(shù)據(jù),模型數(shù)據(jù)等是必不可少的。但是受電腦性能和內(nèi)存的限制,對(duì)于海量數(shù)據(jù),無(wú)法一次性加入內(nèi)存。即便實(shí)現(xiàn)了加載海量數(shù)據(jù),在場(chǎng)景瀏覽時(shí)也會(huì)出現(xiàn)卡頓現(xiàn)象。層次細(xì)節(jié)技術(shù)(Level of Detail,簡(jiǎn)稱LOD)對(duì)于加快模型顯示速度,及降低場(chǎng)景復(fù)雜度非常有效[4]。在場(chǎng)景中的各個(gè)不同部分或一個(gè)整體場(chǎng)景中獲得一組由具有不同細(xì)節(jié)的描述方法而得到的一組模型,用于在場(chǎng)景繪制時(shí)以供選擇使用,即層次細(xì)節(jié)模型。對(duì)于同一事物,由于受到人眼的視覺特征的影響,位于遠(yuǎn)近不同位置的物體,目視所能夠看到的物體的細(xì)節(jié)程度是完全不一樣的。根據(jù)人眼視覺差異的這一特點(diǎn),對(duì)于場(chǎng)景中同一物體,LOD技術(shù)便會(huì)依據(jù)詳細(xì)程度的不同創(chuàng)建一組幾何模型。在場(chǎng)景渲染的過程當(dāng)中,根據(jù)物體所在的位置選擇相應(yīng)詳細(xì)程度的模型載入場(chǎng)景。即當(dāng)視點(diǎn)距離物體較近時(shí)載入在視口內(nèi)的較精細(xì)的模型部分,反之,當(dāng)視點(diǎn)距離物體較遠(yuǎn)時(shí)載入在視口內(nèi)的較粗糙的模型部分。在快速繪制復(fù)雜3D場(chǎng)景、模擬飛行器、VR、3D 動(dòng)畫和交互可視化等領(lǐng)域,LOD模型技術(shù)得到廣泛且深入的應(yīng)用。
在三維場(chǎng)景中由網(wǎng)格生成的細(xì)節(jié)層次模型 LOD,理論上一般分為靜態(tài)和動(dòng)態(tài)這兩類層次細(xì)節(jié)模型。靜態(tài)層次細(xì)節(jié)模型將模型網(wǎng)格結(jié)構(gòu)的構(gòu)建和繪制兩個(gè)板塊分開,在模型的預(yù)處理階段劃分模型數(shù)據(jù),并為各個(gè)模型塊構(gòu)建相對(duì)應(yīng)的不同細(xì)節(jié)層次的模型存儲(chǔ)在計(jì)算機(jī)的外部存儲(chǔ)空間供渲染時(shí)使用。根據(jù)視點(diǎn)的位置信息和視角方向,在模型繪制階段進(jìn)行細(xì)節(jié)層次的調(diào)度。而動(dòng)態(tài)細(xì)節(jié)層次模型依據(jù)視點(diǎn)的坐標(biāo)以及其他信息,在繪制階段實(shí)時(shí)生成細(xì)節(jié)層次相異的模型網(wǎng)格,保證了不同層次結(jié)構(gòu)模型之間的連續(xù)性,也叫做連續(xù)的層次細(xì)節(jié)模型。
3.1 靜態(tài)層次細(xì)節(jié)模型
LOD技術(shù)發(fā)展初期,靜態(tài)層次細(xì)節(jié)模型被廣泛應(yīng)用[5]。在應(yīng)用程序運(yùn)行之前,以一定步驟的化簡(jiǎn)方式,從最初的高精度模型開始,逐步生成一系列越來(lái)越粗糙的模型,并在外部存儲(chǔ)設(shè)備當(dāng)中保存下來(lái)。在應(yīng)用程序運(yùn)行過程當(dāng)中,程序根據(jù)屏幕視點(diǎn)與場(chǎng)景中模型的距離,動(dòng)態(tài)判斷選擇一個(gè)合適的細(xì)節(jié)精細(xì)程度的模型,然后加載到場(chǎng)景當(dāng)中以用于顯示。由于所加載的模型都是預(yù)先生成到本地的,所以加載速度較快保證了渲染的流暢性。但是有利便會(huì)有弊,隨之而來(lái)的便是靜態(tài)層次細(xì)節(jié)模型的兩個(gè)較大缺點(diǎn),一是,靜態(tài)LOD需要存儲(chǔ)多個(gè)獨(dú)立的簡(jiǎn)化模型,數(shù)量龐大的地形模型數(shù)據(jù)的存儲(chǔ)對(duì)計(jì)算機(jī)硬件標(biāo)準(zhǔn)的要求很高。二是,原始模型是按不同級(jí)別生成的簡(jiǎn)模,不同級(jí)別的模型在場(chǎng)景當(dāng)中切換時(shí)可能會(huì)出現(xiàn)跳動(dòng)的現(xiàn)象,即瀏覽模型時(shí)不平滑。
3.2 動(dòng)態(tài)層次細(xì)節(jié)模型
Lindstorm 提出的視點(diǎn)相關(guān)的動(dòng)態(tài)層次細(xì)節(jié)模型,對(duì)于提高層次細(xì)節(jié)模型的應(yīng)用范圍具有重大意義。模型數(shù)據(jù)存儲(chǔ)使用特定的數(shù)據(jù)結(jié)構(gòu),并且不生成可顯示的細(xì)節(jié)模型,此為動(dòng)態(tài)LOD模型和靜態(tài)細(xì)節(jié)層次模型的一大區(qū)別。在應(yīng)用程序運(yùn)行階段,讓不同精細(xì)程度的層次細(xì)節(jié)模型匹配不同位置視點(diǎn),實(shí)現(xiàn)自動(dòng)實(shí)時(shí)構(gòu)建。通過動(dòng)態(tài) LOD 建立的模型數(shù)據(jù)冗余小,并且更符合人類的視覺感官特性,也就是所觀察到的不同精細(xì)程度的模型是連續(xù)變化的,避免了畫面跳躍感和幾何數(shù)據(jù)的不一致。但是不同分辨率的模型需要在繪制階段實(shí)時(shí)計(jì)算生成和更新,消耗了額外的時(shí)間,并且算法也相對(duì)復(fù)雜,導(dǎo)致了可視化的速度下降。如何選擇適當(dāng)?shù)膬?yōu)化算法,使得畫面效果和繪制速度之間達(dá)到一個(gè)平衡點(diǎn),是很多研究者努力的方向。
層次表示法、漸近網(wǎng)格表示法這兩類算法,是目前動(dòng)態(tài)LOD模型的主要生成算法。
層次表示法是指依據(jù)模型的精細(xì)程度,將精細(xì)模型均勻地化簡(jiǎn)為幾個(gè)特征較為明顯的簡(jiǎn)模,并一次性的存儲(chǔ)到內(nèi)存當(dāng)中。在計(jì)算機(jī)的逐幀場(chǎng)景渲染過程中,從存儲(chǔ)簡(jiǎn)化模型的內(nèi)存中得到一個(gè)所需的細(xì)節(jié)精度稍高的模型,依據(jù)重要程度把內(nèi)存里的的三角形面模型逐個(gè)刪除,直到達(dá)到所需的細(xì)節(jié)層次。這種動(dòng)態(tài)化簡(jiǎn)方法,其實(shí)質(zhì)也即一種靜態(tài)化簡(jiǎn)法。在預(yù)處理的關(guān)鍵幀模型生成階段,所有的計(jì)算都在此時(shí)進(jìn)行,以至實(shí)時(shí)化簡(jiǎn)的計(jì)算量極大降低,實(shí)現(xiàn)了動(dòng)態(tài)化簡(jiǎn)的功能[6]。
在眾多的模型實(shí)時(shí)化簡(jiǎn)技術(shù)中,能夠被大范圍使用的是來(lái)自于Microsoft公司的Hoppe提出的漸進(jìn)網(wǎng)格(PM)算法,基于點(diǎn)的剖分操作與邊的折疊操作是其內(nèi)在的核心思想。由于缺乏必要的數(shù)據(jù)結(jié)構(gòu),原來(lái)的PM算法,對(duì)一個(gè)整體場(chǎng)景包含的不同精細(xì)程度的細(xì)節(jié)層次模型無(wú)法提供有效的支持。隨著對(duì)傳統(tǒng)PM算法的改進(jìn)以及相關(guān)技術(shù)的進(jìn)步,在實(shí)時(shí)地形的生成上,獲得人們大量認(rèn)可度的關(guān)于視點(diǎn)的漸進(jìn)網(wǎng)格(VDPM)算法,得到了廣泛應(yīng)用。
漸進(jìn)網(wǎng)格算法首先使用邊折疊的模型化簡(jiǎn)方法,以一個(gè)全局能量函數(shù)作為依據(jù),從原始模型開始逐步簡(jiǎn)化,生成一系列不同精細(xì)程度的模型,最終得到一個(gè)最低精細(xì)程度的模型。在精細(xì)化場(chǎng)景模型時(shí),將其過程反轉(zhuǎn),作為簡(jiǎn)化過程的逆操作并記錄下來(lái)。最終的PM的數(shù)據(jù)結(jié)構(gòu)里僅保存化簡(jiǎn)得到的最簡(jiǎn)單的、程度最低的場(chǎng)景模型以及生成的一系列有序的逆操作。任意所需精細(xì)程度的簡(jiǎn)化模型都可以利用點(diǎn)的剖分操作獲得。
通過對(duì)靜態(tài)LOD算法和動(dòng)態(tài)LOD算法的比較,決定采用動(dòng)態(tài)LOD算法用于虛擬場(chǎng)景構(gòu)建過程中城市地名標(biāo)注的加載調(diào)度。
4 關(guān)鍵技術(shù)實(shí)現(xiàn)
在SQLite數(shù)據(jù)庫(kù)中創(chuàng)建省區(qū)注記表及市區(qū)注記表,用來(lái)存儲(chǔ)相關(guān)名稱和經(jīng)緯度坐標(biāo),表結(jié)構(gòu)設(shè)計(jì)如下
表1 省區(qū)注記表
表2 市區(qū)注記表
然后在Google地球上提取中國(guó)各省市的經(jīng)緯度坐標(biāo)并分別存在省區(qū)數(shù)據(jù)表和市區(qū)數(shù)據(jù)表當(dāng)中。
5 效果展示
基于LOD實(shí)現(xiàn)的全國(guó)省市行政區(qū)劃名稱顯示如圖3、圖4所示,當(dāng)鏡頭距離較遠(yuǎn)時(shí),只顯示全國(guó)部分省級(jí)行政區(qū)劃的名稱,且省級(jí)行政區(qū)劃圖標(biāo)在屏幕上基本不會(huì)重疊。當(dāng)鏡頭距離較近是顯示市級(jí)行政區(qū)劃圖標(biāo)。
6 總結(jié)
本文基于LOD技術(shù)實(shí)現(xiàn)了城市地名標(biāo)注的添加。使在場(chǎng)景瀏覽時(shí)避免加載冗余數(shù)據(jù),提高加載渲染效率。對(duì)于城市地名標(biāo)注,只在Google地球上提取了我國(guó)省級(jí)行政中心以及各省各個(gè)市中心的地理坐標(biāo),未提取縣級(jí)和鄉(xiāng)/鎮(zhèn)級(jí)的地理坐標(biāo)。當(dāng)用戶進(jìn)行場(chǎng)景漫游時(shí),無(wú)法瀏覽到低級(jí)別的行政區(qū)劃。
【參考文獻(xiàn)】
[1]董波.數(shù)字礦山三維地質(zhì)建模及可視化研究[D].中國(guó)地質(zhì)大學(xué)(北京),2013.
[2]張昊.基于OSG的道路三維實(shí)時(shí)交互式可視化技術(shù)研究[D].中南大學(xué),2010.
[3]王新宇.OpenSceneGraphEarth平臺(tái)下KML語(yǔ)言機(jī)制的分析和改進(jìn)[D].西安電子科技大學(xué),2014.
[4]李長(zhǎng)春,何榮,王寶山.LOD在大范圍復(fù)雜場(chǎng)景簡(jiǎn)化中的應(yīng)用[J].河南理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2007(02):181-186.
[5]閆軍,陳震,危水根.基于LOD算法的大規(guī)模地形實(shí)時(shí)渲染技術(shù)優(yōu)化[J].電子元器件應(yīng)用,2010(06):86-88.
[6]楊崇源,張繼賢,林宗堅(jiān).虛擬地形場(chǎng)景繪制中的實(shí)時(shí)LOD算法[J].測(cè)繪學(xué)報(bào),2001,(02):133-139.endprint