田江鵬,游 雄,賈奮勵(lì),夏 青
(信息工程大學(xué)地理空間信息學(xué)院,河南 鄭州 450052)
?
移動(dòng)室內(nèi)地圖圖形引擎的設(shè)計(jì)與關(guān)鍵技術(shù)
田江鵬,游雄,賈奮勵(lì),夏青
(信息工程大學(xué)地理空間信息學(xué)院,河南 鄭州 450052)
移動(dòng)室內(nèi)地圖正處于快速發(fā)展時(shí)期,良好的圖形引擎是優(yōu)質(zhì)室內(nèi)地圖系統(tǒng)的必要基礎(chǔ)。本文在分析移動(dòng)室內(nèi)地圖系統(tǒng)的技術(shù)需求的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了一種跨平臺(tái)、二三維統(tǒng)一、具有多交互技術(shù)的輕量級(jí)圖形引擎。重點(diǎn)分析了基于Skia的二維圖形內(nèi)核和基于OpenGL ES的三維圖形內(nèi)核;設(shè)計(jì)了一種“場(chǎng)景樹→繪制堆棧”的圖形加速方案,以提高引擎的繪圖效率;提出并實(shí)現(xiàn)了一種二三維統(tǒng)一的圖形交互方案,以及繪圖區(qū)的雙緩存設(shè)計(jì),優(yōu)化了圖形引擎的用戶體驗(yàn)。
圖形引擎;移動(dòng)室內(nèi)地圖;跨平臺(tái);二三維一體化
室內(nèi)地圖一般指大型建筑的內(nèi)部地圖,與室外地圖相比,其關(guān)注的是小區(qū)域、大比例尺、高精度和精細(xì)化的內(nèi)部元素展現(xiàn)[1]。室內(nèi)地圖并不是一個(gè)新興的事物,其常見的形式是張貼在建筑物出入口、通道等顯著位置的,用于描述室內(nèi)建筑格局和室內(nèi)要素分布的地圖。隨著智能移動(dòng)終端的普及、移動(dòng)物聯(lián)網(wǎng)的發(fā)展,以智能手機(jī)為代表的移動(dòng)終端大有取代傳統(tǒng)電腦終端的趨勢(shì),桌面應(yīng)用開始更多地向移動(dòng)終端領(lǐng)域轉(zhuǎn)移。移動(dòng)浪潮[2]的到來(lái),逐漸改變著人們的生活方式,地圖也正在發(fā)生著深刻的變化,位置服務(wù)及位置地圖[3]將成為室內(nèi)地圖乃至傳統(tǒng)地圖學(xué)進(jìn)一步發(fā)展的主陣地。
技術(shù)的發(fā)展賦予了室內(nèi)地圖全新的生命力,室內(nèi)地圖逐漸以一種位置地圖的形式走入大眾的眼前。關(guān)于移動(dòng)室內(nèi)地圖的研究,學(xué)術(shù)界側(cè)重于其概念的探討[4-5]、認(rèn)知特點(diǎn)的分析[1,6-7]、室內(nèi)地圖的設(shè)計(jì)[8-9]、室內(nèi)位置地圖服務(wù)[10]等方面。而在商業(yè)開發(fā)與應(yīng)用角度,2011年11月,谷歌地圖6.0發(fā)布并推出了室內(nèi)地圖服務(wù)[11]。隨后出現(xiàn)了專注于商場(chǎng)購(gòu)物服務(wù)的Aisle411、FastMall和Meridian等,專注于機(jī)場(chǎng)服務(wù)并已涵蓋全球重要機(jī)場(chǎng)的PointInside應(yīng)用等。國(guó)內(nèi),典型的室內(nèi)地圖應(yīng)用包括百度室內(nèi)地圖、高德室內(nèi)地圖、點(diǎn)道室內(nèi)地圖等,還有一些與室內(nèi)地圖相關(guān)的服務(wù)商和應(yīng)用,如圖淵、尋鹿、積米等??梢钥闯觯S著位置服務(wù)和移動(dòng)計(jì)算的成熟,各大地圖廠商爭(zhēng)先搶占移動(dòng)室內(nèi)地圖這一發(fā)展先機(jī)。
雖然技術(shù)和市場(chǎng)的巨大推動(dòng)力使得室內(nèi)地圖應(yīng)用服務(wù)得到了快速發(fā)展,但仍需從理論和技術(shù)層面,對(duì)移動(dòng)室內(nèi)地圖進(jìn)行更為深入的、系統(tǒng)化的探討。特別是對(duì)于移動(dòng)室內(nèi)地圖的圖形引擎而言,相關(guān)探討的文獻(xiàn)十分有限[12-13]。而圖形引擎又是一個(gè)電子地圖系統(tǒng)必須考慮的重要基礎(chǔ)組件之一,負(fù)責(zé)場(chǎng)景數(shù)據(jù)的組織、圖形快速繪制、交互行為的響應(yīng)等,其設(shè)計(jì)優(yōu)劣直接影響著整個(gè)地圖系統(tǒng)的運(yùn)行效率和用戶體驗(yàn)。因此,本文以移動(dòng)終端環(huán)境下、面向移動(dòng)室內(nèi)地圖制圖的、跨平臺(tái)輕量級(jí)圖形引擎為研究對(duì)象,探討移動(dòng)地圖圖形引擎的設(shè)計(jì)及相關(guān)關(guān)鍵技術(shù)。
1. 移動(dòng)室內(nèi)地圖的技術(shù)需求
1) 跨平臺(tái)。由于移動(dòng)終端使用的操作系統(tǒng)具有多樣化特征,主流的iOS、Android、WinPhone等開發(fā)環(huán)境和開發(fā)語(yǔ)言不盡相同,通常導(dǎo)致了同一個(gè)地圖應(yīng)用需開發(fā)不同源碼版本,造成研發(fā)資源浪費(fèi)。因此,需采用跨平臺(tái)技術(shù),封裝操作系統(tǒng)的特殊性,并采用跨平臺(tái)的語(yǔ)言編寫系統(tǒng)的數(shù)據(jù)處理和圖形渲染的主體邏輯。
2) 輕量級(jí)和快速渲染。由于移動(dòng)終端處理器速度和計(jì)算能力較弱,因此移動(dòng)端地圖系統(tǒng)一般都具有輕量級(jí)特征,這也導(dǎo)致了圖形引擎必須是輕量級(jí)的,以實(shí)現(xiàn)快速渲染為目的。因此,使用QT[14]或OSG[15]等圖形庫(kù),通常需要進(jìn)行功能的縮減,以節(jié)約有限的移動(dòng)端處理器計(jì)算資源。
3) 多交互技術(shù)。移動(dòng)終端主要是基于多點(diǎn)觸控屏進(jìn)行交互的,因此交互方式和方法有別于PC端的鼠標(biāo)和鍵盤。同時(shí),移動(dòng)地圖是以用圖者為中心的,用戶通常希望能夠?qū)⒌貓D“倒下”或與當(dāng)前視線方向保持一致,這就要求圖形引擎能適應(yīng)多種交互方式。
4) 二三維一體化。二維地圖通常表達(dá)抽象的現(xiàn)實(shí)世界,而三維地圖通常更為形象直觀,二三維室內(nèi)地圖表達(dá)相結(jié)合,能充分發(fā)揮各自的優(yōu)點(diǎn)。因此,室內(nèi)地圖及其圖形引擎設(shè)計(jì)需顧及二三維一體化特征。
2. 跨平臺(tái)開發(fā)路線
根據(jù)技術(shù)需求,采用基于標(biāo)準(zhǔn)C++語(yǔ)言的開發(fā)路線。即盡可能地采用平臺(tái)無(wú)關(guān)的代碼編寫軟件模塊,同時(shí)限定與操作系統(tǒng)平臺(tái)相關(guān)的代碼規(guī)模至最小,保證同一套核心邏輯的源碼在不同平臺(tái)上編譯后運(yùn)行。通過(guò)分析Windows下的*.vcxproj工程文件、Android下的*.mk工程文件和iOS下的*.xcodeproj等工程文件的相似性,構(gòu)建了不同操作系統(tǒng)下的統(tǒng)一工程開發(fā)的模式,實(shí)現(xiàn)了同一套源代碼在不同操作系統(tǒng)環(huán)境下的軟件編譯和開發(fā)。
以*.mk工程組織模式為例,工程和代碼的組織邏輯結(jié)構(gòu)如圖1所示。通過(guò)MK文件的級(jí)聯(lián)管理,使得每一個(gè)對(duì)象模塊均組織在同一個(gè)工程文件夾下,在同一個(gè)工程中實(shí)現(xiàn)對(duì)各個(gè)模塊的編譯和聯(lián)調(diào)聯(lián)試、共享和編輯同一套源碼文件。
3. 圖形引擎架構(gòu)
通過(guò)分析主流二維和三維圖形引擎的設(shè)計(jì),本文采用“視圖→場(chǎng)景→繪制體→圖形屬性”4個(gè)層次為設(shè)計(jì)原則,構(gòu)建移動(dòng)室內(nèi)地圖圖形引擎。
(1) 視圖(View)
圖形引擎的頂層管理者,負(fù)責(zé)以下內(nèi)容:①視圖的創(chuàng)建與管理;②不同操作系統(tǒng)平臺(tái)的圖形設(shè)備(Device Context)封裝;③二三維攝像機(jī)(Camera)和視圖操縱器(Manipulator)的關(guān)聯(lián);④人機(jī)交互界面的設(shè)計(jì)與交互處理;⑤外部輸入交互消息的處理及圖形引擎內(nèi)部消息(Message)循環(huán);⑥圖形渲染緩存區(qū)(DrawBuffer)的交換機(jī)制;⑦繪制線程管理和線程池的維護(hù)。
(2) 場(chǎng)景圖(Scene Graph)
為地圖場(chǎng)景數(shù)據(jù)的有效組織和管理提供接口,主要包括組節(jié)點(diǎn)(GroupNode)、圖形操作節(jié)點(diǎn)(OperaNode)、對(duì)象節(jié)點(diǎn)(ObjectNode),負(fù)責(zé)以下內(nèi)容:①不同類型場(chǎng)景節(jié)點(diǎn)的創(chuàng)建與維護(hù);②節(jié)點(diǎn)的遍歷與訪問(wèn)方法;③場(chǎng)景樹的更新與維護(hù)。
(3) 繪制對(duì)象
提供不同類型的圖形繪制對(duì)象,如幾何體(點(diǎn)、線段、弧線、路徑等)、圖像、文本等。
(4) 圖形屬性
為繪制體提供了顏色、粗細(xì)、反走樣、特效等狀態(tài)屬性信息的描述。
圖形引擎的架構(gòu)如圖2所示,主要由兩個(gè)層次組成。組件層次通過(guò)組件注冊(cè)的方式,提供二維(ComDrawEngine)或三維(ComRenderEngine)的圖形繪制服務(wù)組件。內(nèi)核層次主要包括二維繪圖內(nèi)核(DrawCore)和三維渲染內(nèi)核(RenderCore),圖形引擎分別采取Skia作為二維圖形繪圖驅(qū)動(dòng)、OpenGL ES作為三維圖形渲染驅(qū)動(dòng);同時(shí),圖形引擎采用統(tǒng)一的交互操縱方式,即通過(guò)統(tǒng)一的操縱器(Manipulator)產(chǎn)生模型視圖矩陣,并提交二三維各自的相機(jī)(Camera)進(jìn)行處理,實(shí)現(xiàn)二三維統(tǒng)一的圖形操縱。
圖2 移動(dòng)室內(nèi)地圖圖形引擎的架構(gòu)
1. 基于Skia的二維圖形繪圖內(nèi)核
Skia是一個(gè)二維向量圖形處理的圖形驅(qū)動(dòng),用于谷歌瀏覽器、Android圖形驅(qū)動(dòng)等,具有適用移動(dòng)端、功能豐富、基于OpenGL的加速等特征?;赟kia的二維圖形繪圖內(nèi)核接口模型的UML設(shè)計(jì)如圖3所示,主要包括5個(gè)部分:基本屬性接口部分、高級(jí)特效接口部分、繪圖對(duì)象接口部分、圖形節(jié)點(diǎn)組織接口部分及視圖部分。繪圖對(duì)象和基本屬性接口能夠用于構(gòu)建任意地圖制圖需求的圖形及其繪制形式。高級(jí)特效提供了繪圖對(duì)象影音、光照、模糊等特殊效果形式,特效繪制方法特別適用于室內(nèi)地圖制圖。圖形節(jié)點(diǎn)通過(guò)圖形對(duì)象節(jié)點(diǎn)(ObjectNode)和組節(jié)點(diǎn)(GroupNode),能夠?qū)⑺枰L制的地圖數(shù)據(jù)按照一棵“場(chǎng)景樹[15]”的形式進(jìn)行組織。場(chǎng)景圖組織圖形數(shù)據(jù)的設(shè)計(jì),常見于三維圖形引擎設(shè)計(jì)。本文使用場(chǎng)景圖技術(shù)組織二維圖形數(shù)據(jù),不僅有利于二三維圖形內(nèi)核的統(tǒng)一,也為后續(xù)的制圖引擎效率優(yōu)化提供了基礎(chǔ)。
圖3 基于Skia的二維圖形繪圖內(nèi)核接口模型
2. 基于OpenGL ES的三維圖形渲染內(nèi)核
三維圖形引擎方面,主要借鑒OSG設(shè)計(jì)的核心思想,基于OpenGL ES三維圖形驅(qū)動(dòng),設(shè)計(jì)了三維圖形渲染內(nèi)核,其設(shè)計(jì)如圖4所示。主要包括以下4個(gè)部分:
1) 狀態(tài)集(StateSet):封裝OpenGL ES的狀態(tài)及OpenGL狀態(tài)機(jī)。
2) 可繪制體(Drawable):封裝了OpenGL ES可繪制幾何類型,主要為矢量數(shù)據(jù)類型、像素?cái)?shù)據(jù)類型、文字?jǐn)?shù)據(jù)類型,以及三者的組合。
3) 圖形節(jié)點(diǎn)(Node):移植了OSG的基本設(shè)計(jì),負(fù)責(zé)三維繪制數(shù)據(jù)的組織。三維圖形內(nèi)核和二維圖形內(nèi)核在圖形節(jié)點(diǎn)組織方面,公用一套接口,內(nèi)部實(shí)現(xiàn)不同;這一設(shè)計(jì)有利于上層制圖系統(tǒng)中圖形組織的統(tǒng)一。
4) 視景(Viewer):封裝了繪圖所需的視圖。
在移動(dòng)終端上,OpenGL ES分為兩個(gè)版本,其主要差別在于使用GLSL著色語(yǔ)言版本的不同,三維圖形渲染內(nèi)核采用了更為快速的GLES2版本驅(qū)動(dòng)。
圖4 基于OpenGL ES的三維圖形渲染設(shè)計(jì)
3. “場(chǎng)景樹→繪制堆棧”的圖形引擎加速
為了加速圖形繪圖速度,圖形引擎內(nèi)部對(duì)繪制數(shù)據(jù)進(jìn)行了優(yōu)化設(shè)計(jì),圖形引擎的加速繪制設(shè)計(jì)如圖5所示。
圖5 多線程“場(chǎng)景圖→繪制堆?!眻D形加速技術(shù)
1) 使用多線程技術(shù),使得Skia/OpenGL ES的圖形接口被封裝在一個(gè)繪制管線中,此時(shí)對(duì)于基于“場(chǎng)景圖”組織的繪圖數(shù)據(jù),可以在渲染管線中進(jìn)行批量繪圖處理,從而加速繪圖效率。
2) 使用了“場(chǎng)景圖→繪制堆?!钡霓D(zhuǎn)換機(jī)制,節(jié)點(diǎn)排序回調(diào)能夠根據(jù)節(jié)點(diǎn)的繪圖對(duì)象及其屬性信息,對(duì)繪圖數(shù)據(jù)進(jìn)行分類和排序,形成繪制數(shù)據(jù)堆棧。繪制堆棧在每一幀的刷新過(guò)程中提交繪制管線的繪制器進(jìn)行圖形繪圖。
3) 使用了多線程技術(shù),將節(jié)點(diǎn)排序回調(diào)、繪制數(shù)據(jù)堆棧及繪制管線分別封裝在獨(dú)立的線程中,并通過(guò)有效的線程互斥和線程安全保護(hù),實(shí)現(xiàn)移動(dòng)端處理器計(jì)算資源的有效利用,提高了室內(nèi)地圖圖形引擎的效率。
4. 統(tǒng)一的圖形操縱與實(shí)現(xiàn)
Skia提供了繪圖時(shí)進(jìn)行矩陣變換的接口,使得對(duì)二維圖形的操作可以與OpenGL ES的操作方式進(jìn)行統(tǒng)一。假設(shè)有世界坐標(biāo)系下的坐標(biāo)Cworld,如為經(jīng)緯度坐標(biāo)(L,B,H);定義矩陣Mview表示攝像機(jī)的觀察矩陣(view matrix),即把對(duì)象從世界坐標(biāo)系變換到攝像機(jī)坐標(biāo)系;則觀察矩陣可以將世界坐標(biāo)系坐標(biāo)Cworld變換為攝像機(jī)相對(duì)坐標(biāo)系坐標(biāo)Clocal
Clocal=Cworld×Mview
定義投影矩陣Mproj(project matrix),用于設(shè)置攝像機(jī)的拍攝參數(shù),即創(chuàng)建了一個(gè)視錐體(Frustum),并將包含在其中的場(chǎng)景對(duì)象投影到鏡頭平面上來(lái)。用Cproj表示投影后的坐標(biāo),則
Cproj=Clocal×Mproj
定義視口矩陣Mwnd(window matrix),其主要功能是把投影坐標(biāo)變換到指定的二維視口中去,則最終的窗口坐標(biāo)Cwnd為
Cwnd=Cproj×Mwnd
因此,定義Mvpw=Mview×Mproj×Mwnd,則一個(gè)世界坐標(biāo)系下的坐標(biāo)與其在屏幕上的坐標(biāo)就可以通過(guò)以下公式進(jìn)行可逆計(jì)算
根據(jù)上述原理,本文設(shè)計(jì)了圖形操作機(jī)制,如圖6所示。在圖形引擎中,攝像機(jī)Camera負(fù)責(zé)維護(hù)3個(gè)矩陣:wndMatrix記錄了視口變化的數(shù)值;projMatrix記錄了Camera投影參數(shù)的數(shù)據(jù);viewMatrix為視圖矩陣,記錄了用戶對(duì)Camera視點(diǎn)操作的數(shù)據(jù)。
用戶交互事件產(chǎn)生的平移、旋轉(zhuǎn)等參數(shù),通過(guò)Manipulator轉(zhuǎn)換為一個(gè)臨時(shí)的視圖矩陣,并通過(guò)該矩陣級(jí)聯(lián)至viewMatrix并修正。操縱器Manipulator通過(guò)回調(diào)接口的方式向用戶提供響應(yīng)的方式,用戶只需重載回調(diào)函數(shù)即可完成交互事件的響應(yīng)。如此,就可以用統(tǒng)一接口接收多點(diǎn)觸控手勢(shì)、筆、屏幕鍵盤等交互方式的交互事件。
5. 繪圖數(shù)據(jù)的雙緩存設(shè)計(jì)
雙緩存設(shè)計(jì)主要用于改善二維圖形繪圖內(nèi)核的用戶感受效果。由于繪圖數(shù)據(jù)量、是否開啟特效、是否開啟反走樣、移動(dòng)端在線等待數(shù)據(jù)下載等多種因素約束,直接繪制在設(shè)備緩存區(qū)的方法會(huì)導(dǎo)致地圖“卡頓”的現(xiàn)象,嚴(yán)重影響室內(nèi)地圖的使用體驗(yàn)效果。針對(duì)這一問(wèn)題,本文設(shè)計(jì)了一種繪圖數(shù)據(jù)的雙緩存技術(shù),其基本原理如圖7所示。
圖7 繪圖數(shù)據(jù)的雙緩存原理
根據(jù)顯示設(shè)備緩存的基本參數(shù),構(gòu)建了FrontBuffer和BackBuffer兩個(gè)像素緩存區(qū)。其中,BackBuffer位于繪制管線線程中,為繪制器提供一個(gè)畫板,將繪制數(shù)據(jù)堆棧中的數(shù)據(jù)渲染在該緩存上。FrontBuffer緩存區(qū)位于繪制管線線程外,負(fù)責(zé)緩存已經(jīng)繪制完整的地圖幀。在緩存交換控制下,只有BackBuffer繪制工作完成后,繪制管線線程解除鎖定,前后緩存交換。由于FrontBuffer緩存了已經(jīng)繪制好的地圖幀,使得用戶與制圖系統(tǒng)實(shí)時(shí)交互時(shí),設(shè)備屏幕上顯示的地圖只需從FrontBuffer直接拷貝,極大地提高了地圖顯示的效率,避免了地圖顯示時(shí)的“卡頓”現(xiàn)象。同時(shí),由于雙緩存機(jī)制是圖形引擎內(nèi)部實(shí)現(xiàn)的,與顯卡和硬件無(wú)關(guān),這一特點(diǎn)對(duì)于型號(hào)多樣化的嵌入式平臺(tái)和移動(dòng)終端而言,具有一定的硬件無(wú)關(guān)性優(yōu)勢(shì)。
本文設(shè)計(jì)的移動(dòng)室內(nèi)地圖圖形引擎,已經(jīng)在主流的移動(dòng)操作系統(tǒng)(已經(jīng)測(cè)試的有Android4.2、iOS7和WindowsPhone8)及PC操作系統(tǒng)(Windows7、Ubantu12和MacOSX10)上進(jìn)行了室內(nèi)地圖制圖應(yīng)用。圖8顯示了在Android系統(tǒng)上的二三維室內(nèi)制圖效果圖,該圖也展現(xiàn)了在統(tǒng)一的操縱器控制下,二三維室內(nèi)地圖交互和表達(dá)的統(tǒng)一。
圖9顯示了使用本文圖形引擎得到的不同室內(nèi)地圖的制圖效果,包括二三維單樓層的表達(dá)效果和多樓層的表達(dá)效果。通過(guò)統(tǒng)一的圖形操縱器,能夠?qū)崿F(xiàn)二維室內(nèi)地圖的偽三維表達(dá),這一特點(diǎn)在室內(nèi)地圖多樓層切換、多樓層疊加統(tǒng)一表達(dá)方面具有顯著的優(yōu)勢(shì)。
圖8 圖形引擎在Android系統(tǒng)上的二三維應(yīng)用效果
圖9 圖形引擎在室內(nèi)地圖表達(dá)中的綜合應(yīng)用
目前,移動(dòng)室內(nèi)地圖正處于快速發(fā)展時(shí)期,良好的圖形引擎是優(yōu)質(zhì)室內(nèi)地圖系統(tǒng)的重要基礎(chǔ),因此圖形引擎的研究具有重要意義。本文分析了室內(nèi)地圖圖形引擎構(gòu)建的技術(shù)需求,設(shè)計(jì)了具有跨平臺(tái)特征、二三維統(tǒng)一、具有多交互技術(shù)的輕量級(jí)圖形引擎;分析了基于Skia的二維圖形內(nèi)核和基于OpenGLES的三維圖形內(nèi)核;設(shè)計(jì)了一種“場(chǎng)景樹→繪制堆?!钡膱D形加速方案,以提高引擎的繪圖效率;通過(guò)統(tǒng)一的圖形交互設(shè)計(jì),以及繪圖區(qū)的雙緩存設(shè)計(jì),優(yōu)化了圖形引擎的用戶體驗(yàn)。圖形引擎的繪制效率和用戶交互體驗(yàn),是有待于進(jìn)一步研究并提高的問(wèn)題。
[1]張?zhí)m. 室內(nèi)地圖的空間認(rèn)知與表達(dá)模板研究[D].鄭州:信息工程大學(xué),2014.
[2]邁克爾·塞勒. 移動(dòng)浪潮:移動(dòng)智能如何改變世界[M]. 鄒韜,譯. 北京:中信出版社,2013.
[3]周成虎,朱欣焰,王蒙,等. 全息位置地圖研究[J]. 地理科學(xué)進(jìn)展,2011,30(11):1331-1335.
[4]GOTLIBD,MARCINIAKJ.CartographicalAspectsintheDesignofIndoorNavigationSystems[J].AnnualofNavigation,2012,19(1).DOI: 10.2478/v10367-012- 0004-x.
[5]GOTLIBD,GNATM.SpatialDatabaseModelingforIndoorNavigationSystems[J].ReportsonGeodesyandGeoinformatics,2013,95(1):49-63.DOI: 10.2478/rgg-2013-0012.
[6]FRANKENSTEINJ,BRüSSOWS,RUZZOLIF,etal.TheLanguageofLandmarks:TheRoleofBackgroundKnowledgeinIndoorWayfinding[J].CognProcess.DOI:10.1007/s10339-012-0482-8.
[7]H?LSCHERC,MEILINGERT,VRACHLIOTISG,etal.UptheDownStaircase:WayfindingStrategiesinMulti-levelBuildings[J].JournalofEnvironmentalPsychology, 2006, 26(4): 284-299.
[8]NOSSUMAS.IndoorTubesaNovelDesignforIndoorMaps[J].CartographyandGeographicInformationScience, 2011, 38(2): 192-200.
[9]鄧晨. 基于空間認(rèn)知的移動(dòng)室內(nèi)地圖設(shè)計(jì)新模式[J]. 系統(tǒng)仿真學(xué)報(bào),2014,26(9):2097-2103.
[10]朱欣焰,周成虎,咼維,等. 全息位置地圖概念內(nèi)涵及其關(guān)鍵技術(shù)初探[J]. 武漢大學(xué)學(xué)報(bào)(信息科學(xué)版),2015, 40(3): 285-296.
[11]NOSSUMAS.IndoorTubes:ANovelDesignforIndoorMaps[J].CartographyandGeographicInformationScience, 2011, 38(2): 193-201.[12]劉愛龍,張東,陳濤,等. 跨平臺(tái)嵌入式數(shù)字地圖可視化中間件設(shè)計(jì)與應(yīng)用[J]. 地球信息科學(xué)學(xué)報(bào),2015, 17(6): 675-681.
[13]劉小林,華一新,葛文,等. 嵌入式GIS 圖形中間件的設(shè)計(jì)與實(shí)現(xiàn)[J]. 測(cè)繪通報(bào),2010(11):58-61.
[14]BLANCHETTE J, SUMMERFIELD M. C++ GUI Programming with Qt4[M]. 閆鋒欣, 曾泉人, 張志強(qiáng),譯.2版.北京:電子工業(yè)出版社,2008:1-10.
[15]王銳,錢學(xué)雷. OpenSceneGraph三維渲染引擎設(shè)計(jì)與實(shí)踐[M]. 北京:清華大學(xué)出版社,2009.
Graphics Engine of Indoor Mobile Map: Design and Key Technologies
TIAN Jiangpeng,YOU Xiong,JIA Fenli,XIA Qing
田江鵬,游雄,賈奮勵(lì),等.移動(dòng)室內(nèi)地圖圖形引擎的設(shè)計(jì)與關(guān)鍵技術(shù)[J].測(cè)繪通報(bào),2016(10):45-50.DOI:10.13474/j.cnki.11-2246.2016.0326.
2015-12-10
國(guó)家863計(jì)劃(2013AA12A202);國(guó)家自然科學(xué)基金(41271393;41371382)
田江鵬(1987—),男,博士生,研究方向?yàn)榈貓D制圖學(xué)與地理信息工程。E-mail:tjpeng2011@163.com
P208
B
0494-0911(2016)10-0045-06