梁青青 張剛要
摘 要:增強(qiáng)現(xiàn)實(shí)通過計算機(jī)生成的三維圖形或2D文本與真實(shí)視圖合并,能夠幫助用戶學(xué)習(xí)和感知在現(xiàn)實(shí)世界中無法看到的更多信息。文章在增強(qiáng)現(xiàn)實(shí)技術(shù)的基礎(chǔ)上,結(jié)合LBS服務(wù)設(shè)計并實(shí)現(xiàn)了實(shí)景導(dǎo)航系統(tǒng)。該系統(tǒng)在移動通信網(wǎng)絡(luò)的支持下,利用GPS定位技術(shù),通過移動終端的傳感設(shè)備獲取方位角,將用戶輸入的目標(biāo)地點(diǎn)轉(zhuǎn)化為虛擬信息與真實(shí)世界疊加,最終以關(guān)鍵字標(biāo)簽的形式體現(xiàn)在設(shè)備屏幕上。
關(guān)鍵詞:增強(qiáng)現(xiàn)實(shí);實(shí)景導(dǎo)航;定位服務(wù)
增強(qiáng)現(xiàn)實(shí)(Augmented Reality,AR)是一種將虛擬信息疊加到真實(shí)世界中的技術(shù)。它是一門十分復(fù)雜的學(xué)科,涉及諸如計算機(jī)圖形學(xué)、機(jī)器視覺、傳感器、三維注冊、信息可視化等多種技術(shù)[1]??梢哉f,AR技術(shù)是隨著時代發(fā)展而產(chǎn)生的一項(xiàng)獨(dú)特的科學(xué)技術(shù)。計算機(jī)圖形、人工智能技術(shù)、計算機(jī)顯示技術(shù)等的發(fā)展,為AR的迅猛發(fā)展帶來了可能。隨著AR技術(shù)的發(fā)展,通過AR的軟件開發(fā)工具包(Software Development Kit,SDK)就可以開發(fā)出簡單的AR軟件,而不需要去編寫底層的復(fù)雜代碼,減少了開發(fā)的周期和開發(fā)的難度。本文的AR系統(tǒng)是在移動通信網(wǎng)絡(luò)的支持下,利用GPS定位技術(shù),通過移動終端的傳感設(shè)備獲取方位角,將用戶輸入的目標(biāo)地點(diǎn)轉(zhuǎn)化為虛擬信息與真實(shí)世界疊加,最終以關(guān)鍵字標(biāo)簽的形式體現(xiàn)在設(shè)備屏幕上。
1 相關(guān)理論與技術(shù)
1.1 AR關(guān)鍵技術(shù)
AR技術(shù)仍然處于初級階段。但是未來基于AR技術(shù)推出的應(yīng)用將會是永無止境的。在AR技術(shù)上的研究將會更多地去考慮通過信息的交互來實(shí)現(xiàn)更加真實(shí)的虛實(shí)結(jié)合??梢灶A(yù)見,未來AR在制造業(yè)、工業(yè)、服務(wù)業(yè)等眾多場所都會有長足的進(jìn)步。
AR系統(tǒng)的體系結(jié)構(gòu)可以以AR系統(tǒng)執(zhí)行的4個任務(wù)進(jìn)行分類:場景捕捉、場景識別、選擇精確信息的增強(qiáng)場景、場景的增強(qiáng)處理和可視化。
(1)場景捕捉利用AR的物理組件捕捉現(xiàn)實(shí)實(shí)景。
(2)場景識別被認(rèn)為是在現(xiàn)實(shí)增強(qiáng)中采取的主要行為之一。主要有兩種基本類型的場景識別技術(shù):基于標(biāo)記的方法和非標(biāo)記的方法[2]。
(3)在注冊技術(shù)的支持下,根據(jù)攝像機(jī)的內(nèi)外參數(shù)計算真實(shí)空間中的特定標(biāo)記點(diǎn)后,系統(tǒng)針對3D中的每個標(biāo)記尋找相應(yīng)的虛擬模型。
(4)最后,該系統(tǒng)產(chǎn)生投影的模型對象和真實(shí)空間的圖像,并在使用標(biāo)記和當(dāng)前數(shù)字信息的情況下,使用識別技術(shù)的非標(biāo)記場景來混合真實(shí)和虛擬的場景圖像。
在AR應(yīng)用中,如果選擇自己從頭到尾來開發(fā)的話,需要使用OpenGL(是一個跨編程語言、跨平臺的編程接口規(guī)格的專業(yè)的圖形應(yīng)用程序編程接口)這個比較底層的圖形程序接口,而且將需要消耗大量的時間來編寫底層代碼,十分復(fù)雜,并且耗時耗力。但現(xiàn)在出現(xiàn)了許多AR相關(guān)的SDK,比較知名的有Vuforia(高通),Easy AR,ARToolkit等。它們具有較高的識別穩(wěn)定性,功能也十分完善,能夠很好地給軟件開發(fā)者提供開發(fā)所需的工具包,有利于加快開發(fā)的速度和效率。借助這些AR SDK開發(fā)應(yīng)用,開發(fā)者不需要自己去編寫底層的復(fù)雜代碼,有助于減少開發(fā)周期和開發(fā)的難度,本文利用第三方組件(EasyAR SDK)提供的AR基本功能程序庫來實(shí)現(xiàn)基于非標(biāo)記的場景識別功能。
1.2 LBS關(guān)鍵技術(shù)
基于位置的服務(wù)(Location Based Service,LBS)是網(wǎng)絡(luò)通信技術(shù)、空間定位技術(shù)、信息采集技術(shù)、移動終端技術(shù)等多種技術(shù)融合發(fā)展的產(chǎn)物,圖1給出了位置服務(wù)的關(guān)鍵技術(shù)。目前位置服務(wù)主要的定位技術(shù)就是GPS和基站定位[3]。
圖1 LBS關(guān)鍵技術(shù)
本系統(tǒng)中主要利用高德地圖API,通過調(diào)用API接口初始化定位并設(shè)置回調(diào)監(jiān)聽獲取用戶的當(dāng)前定位結(jié)果,實(shí)現(xiàn)Android端的定位功能。
2 系統(tǒng)設(shè)計與實(shí)現(xiàn)
IOS端和Android端在設(shè)計方法上和平臺選擇上有一些區(qū)別,本系統(tǒng)是在Android移動手機(jī)中實(shí)現(xiàn)的?;赨nity平臺首先實(shí)現(xiàn)Android端的定位功能,在輸入需要搜索的附近POI點(diǎn),通過Android端向服務(wù)器發(fā)送數(shù)據(jù),返回包含各種信息的數(shù)據(jù)內(nèi)容,在解析之后將附件信息渲染為直觀的文本圖片內(nèi)容,疊加在手機(jī)相機(jī)獲取的視頻流界面上。
2.1 系統(tǒng)設(shè)計流程
本系統(tǒng)主要實(shí)現(xiàn)用戶定位、搜索附近POI點(diǎn)、疊加顯示內(nèi)容3個功能。設(shè)計流程與功能如圖2所示。
2.2 定位功能的實(shí)現(xiàn)
由于unity平臺并沒有提供高德定位的接口,所以需要先在Android端實(shí)現(xiàn)定位功能再打包成jar文件。將編譯好的jar文件與AndroidManifest文件導(dǎo)入Unity工程中,并修改相關(guān)參數(shù)。如圖3所示,創(chuàng)建腳本將Activity中的方法繼承給UnityPlayerActivity方法,調(diào)用高德定位功能,并輸出相應(yīng)信息。定位的功能實(shí)現(xiàn)后,需要基于定位信息搜索附近POI點(diǎn)。我們通過高德SDK定位獲取位置坐標(biāo),在利用反地理編碼獲取地址信息將搜索到的數(shù)據(jù)內(nèi)容輸出給移動終端。
2.3 AR功能的實(shí)現(xiàn)
利用EasyAR SDK,導(dǎo)入Unity工程中,刪除默認(rèn)的攝像機(jī),把“EasyAE_Startup”預(yù)制件放入場景中。同時在inspector面板中填入之前在EasyAR官網(wǎng)中申請的Key。并將GyroDroid插件包中的“MinimalSensorCamera”腳本掛載到攝像機(jī)上,以便讓AR攝像機(jī)的鏡頭隨著手機(jī)的旋轉(zhuǎn)而旋轉(zhuǎn)。EasyAR在這里的主要作用就是通過初始化AR模塊開啟攝像頭采集攝像頭拍攝到的原始圖像數(shù)據(jù)信息。
3 結(jié)語
本文在AR技術(shù)的基礎(chǔ)上,結(jié)合LBS服務(wù)設(shè)計并實(shí)現(xiàn)了實(shí)景導(dǎo)航系統(tǒng)。AR技術(shù)與LBS服務(wù)的結(jié)合,使得信息的搜索不再僅限于簡單的2D文本內(nèi)容的呈現(xiàn),更重要的是,該系統(tǒng)可以根據(jù)輸入的關(guān)鍵字信息進(jìn)行定位搜索,以關(guān)鍵字標(biāo)簽的形式在移動終端上顯示出立體的效果,使獲取的信息更加方便、快捷和直觀。
[參考文獻(xiàn)]
[1]張衛(wèi)良.3D游戲引擎中基于ARToolkit增強(qiáng)現(xiàn)實(shí)技術(shù)的設(shè)計與研究[D].武漢:湖北工業(yè)大學(xué),2016.
[2]陳向東,曹楊璐.移動增強(qiáng)現(xiàn)實(shí)教育游戲的開發(fā)—以“快樂尋寶”為例[J].現(xiàn)代教育技術(shù),2015(4):101-107.
[3]王萍.基于位置服務(wù)的移動學(xué)習(xí)研究[J].中國電化教育,2011(12):114-119.