黃 敏,蘭 紅
(江西理工大學(xué)信息工程學(xué)院,江西 贛州 341000)
增強現(xiàn)實(Augmented Reality,AR),也稱為混合現(xiàn)實,是將現(xiàn)實世界的一定時間空間范圍內(nèi)很難體驗到的實體信息(視覺信息、聲音、味道、觸覺等),通過科學(xué)技術(shù)模擬仿真后再疊加到現(xiàn)實世界被人類感官所感知,從而達到超越現(xiàn)實的感官體驗[1]。與傳統(tǒng)虛擬現(xiàn)實所要達到的完全沉浸的效果不同,增強現(xiàn)實技術(shù)致力于將計算機生成的信息同真實世界中的場景結(jié)合起來,它可以為醫(yī)療和工程領(lǐng)域用戶提供準(zhǔn)確、高效的輔助操作界面,也能夠為教育或娛樂程序構(gòu)造引人入勝的交互環(huán)境[2]。
AR技術(shù)始于20世紀(jì)60年代,美國哈佛大學(xué) Ivan Sutherland教授發(fā)明了光學(xué)透明頭盔顯示器(See-through Head-mounted Display,STHMD)顯示計算機生成的3D圖形[3]。20世紀(jì)80年代到90年代,AR的發(fā)展較為成熟,一些公司和高校不斷研制出完善的AR系統(tǒng),其中比較好的有:1986年,F(xiàn)urness研制的vCAss系統(tǒng)采用頭盔顯示器將射程、射擊目標(biāo)等作戰(zhàn)信息顯示在飛行員的視野上;1986年,美國北卡大學(xué)(LJNCatChaPelHill)研制出用于實現(xiàn)生物化學(xué)和建筑可視化的STHMD系統(tǒng);1993年,美國哥倫比亞大學(xué)的Feine教授等人設(shè)計了一個基于知識的AR系統(tǒng)。該系統(tǒng)用于指導(dǎo)機械維修,可以將有關(guān)技術(shù)說明疊加在激光打印機上,輔助技術(shù)人員完成維修工作,這樣,技術(shù)人員再也不用帶著大量笨重的資料邊維修邊查閱資料,一旦出現(xiàn)難題、緊急情況,就不會不知所措了。20世紀(jì)90年代初期,波音公司的Tom Caudell和他的同事在他們設(shè)計的一個輔助布線系統(tǒng)中提出了“增強現(xiàn)實”這個名詞[4]。
本文采用Unity3D開發(fā)引擎[5]和Vuforia擴增實境軟件開發(fā)工具[6]相結(jié)合,以Unity3D開發(fā)經(jīng)驗建造場景,編寫一系列C#[7]腳本代碼,完成相應(yīng)功能后導(dǎo)出移動設(shè)備可運行的軟件格式,再利用移動設(shè)備通過移動網(wǎng)絡(luò)將云端數(shù)據(jù)視頻實時獲取在本地移動設(shè)備上,通過Vuforia工具的虛擬Camera呈現(xiàn)出虛實疊加的視覺效果,使用戶享受到一種新穎的學(xué)習(xí)方法和不同的交互體驗,彌補傳統(tǒng)紙質(zhì)教材的枯燥乏味的缺點,同時也解決現(xiàn)在學(xué)生獲取教材視頻困難的問題。
Unity3D是由Unity Technologies開發(fā)的以交互式圖型化方式作為開發(fā)環(huán)境的增強現(xiàn)實設(shè)計引擎,提供場景模型的創(chuàng)建和渲染,支持導(dǎo)入Vuforia SDK擴展工具包并在其對應(yīng)的接口下進行跟蹤和檢測,實現(xiàn)虛實疊加、人機交互的AR應(yīng)用程序。Unity3D可將.FBX或.OBJ等格式的3D模型導(dǎo)入到場景和環(huán)境中,并且可以向虛擬場景添加霧效、風(fēng)、雨、地面、天空、太陽光、水等物理材質(zhì)和環(huán)境音效以及視頻動畫等,同時支持即時瀏覽、測試和編輯3D應(yīng)用場景。它是一款跨平臺的開發(fā)工具,可以把產(chǎn)品直接發(fā)布到所需要的平臺,如Android, IOS, Windows等[8-10]。
Vuforia擴增實境軟件開發(fā)工具包(Vuforia Augmented Reality SDK),是高通公司推出的針對移動設(shè)備擴增實境應(yīng)用的軟件開發(fā)工具包,利用計算機視覺技術(shù)實時識別和捕捉平面圖像或簡單的三維物體,允許開發(fā)者通過照相機取景器放置虛擬物體并調(diào)整物體在鏡頭前實體背景上的位置[11-12]。Vuforia SDK的數(shù)據(jù)流包括4個模塊[13-14]:
1)輸入轉(zhuǎn)換模塊。相機Camera獲取當(dāng)前真實場景每一幀的圖像,通過圖像轉(zhuǎn)換器(Image Converter)將其轉(zhuǎn)換得到轉(zhuǎn)換后的圖像格式。
2)數(shù)據(jù)庫模塊。指數(shù)據(jù)存儲形式,包括本地設(shè)備存儲(Device Databases)和云存儲(Cloud Databases)。
3)追蹤檢測模塊。主要實現(xiàn)目標(biāo)跟蹤,由Tracker, User-defined Targets和Word Targets等構(gòu)成。
4)渲染輸入模塊。包括視頻背景渲染(video background renderer)和應(yīng)用程序編碼(application code)等。
這4個模塊緊密結(jié)合,相互傳輸數(shù)據(jù)和反饋問題,使得Vuforia SDK在Unity3D中發(fā)揮良好的適配作用,結(jié)合Unity3D自身強大的引擎功能,開發(fā)人員能夠通過簡單設(shè)計開發(fā)出效果優(yōu)秀的增強現(xiàn)實交互應(yīng)用。
《大學(xué)英語視聽說》中每個單元的Speaking out部分會出現(xiàn)3個Model(場景對話),每個Model對應(yīng)一個插圖,每個插圖對應(yīng)一段場景對話視頻。VBook設(shè)計的目標(biāo)就是通過移動設(shè)備掃描教材中的圖片實時追蹤與云端數(shù)據(jù)庫識別圖匹配,若匹配成功則將插圖對應(yīng)的視頻無縫疊加地顯示在教材的插圖上,并通過腳本代碼實現(xiàn)視頻播放、暫停、全屏顯示等功能,使得用戶在體驗增強現(xiàn)實交互的同時,滿足軟件易使用性特點。
傳統(tǒng)的增強現(xiàn)實技術(shù)使用ARToolKit工具[15]或基于跟蹤器和視覺的三維注冊技術(shù)實現(xiàn)標(biāo)識物識別及虛實疊加,不足之處是識別度較低且局限于對純黑或純白的二維圖像的識別[16-17]?;赨nity3D和Vuforia SDK工具開發(fā)使得增強現(xiàn)實技術(shù)有了更加廣闊的應(yīng)用舞臺,其標(biāo)識物采用特征點檢測方式[11],不僅可以識別二維彩色圖像也可以識別三維立體模型,具有很強的實時跟蹤效果。英語視聽說教材的插圖以彩色圖像為主,適合采用Unity3D集成Vuforia SDK工具包進行開發(fā),且Unity3D引擎能夠自動生成適用于移動設(shè)備的終端應(yīng)用,便于用戶使用。
根據(jù)設(shè)計目標(biāo)和需求,本著簡單高效、便于用戶使用的設(shè)計原則,VBook的設(shè)計分為3大核心模塊,如圖1所示。
圖1 VBook核心功能設(shè)計
1)圖像預(yù)處理和存儲。將拍攝好的教材插圖裁剪為大小一致并且按照一定規(guī)則命名,利用Vuforia SDK工具進行預(yù)處理,將圖片處理為可識別圖并保存到云端。
2)視頻預(yù)處理和存儲。從光盤獲取視頻資料,按照對應(yīng)圖片名字進行命名,然后保存到本地服務(wù)器。
3)數(shù)據(jù)匹配與處理。包含AR設(shè)計和用戶使用。其中虛線的矩形框部分為AR設(shè)計,虛線框外為用戶使用過程的數(shù)據(jù)匹配:用戶掃描插圖,與保存在云端的識別圖進行匹配,利用腳本代碼訪問并獲取相對應(yīng)的視頻,將視頻展示給用戶。
系統(tǒng)設(shè)計基于Unity3D開發(fā)工具和Vuforia SDK擴增實境軟件開發(fā)工具包實現(xiàn)。采用Unity3D自帶的MVC框架設(shè)計,模型M包含對組件、數(shù)據(jù)文件、渲染器、攝像機等對象的訪問;視圖V呈現(xiàn)模型并管理Unity3D的引擎渲染;控制器C接收用戶輸入并調(diào)用模型對象的事件方法。主要實現(xiàn)數(shù)據(jù)匹配和AR場景設(shè)計。
1)識別圖創(chuàng)建。選取教材中的插圖進行拍攝,將圖片剪切后有規(guī)則命名,利用Vuforia SDK處理生成識別圖,構(gòu)建識別圖數(shù)據(jù)庫保存到云端,生成2個訪問云端數(shù)據(jù)的秘鑰:Access Key和Secret Key。用戶使用移動設(shè)備的Camera掃描時,通過秘鑰訪問云端數(shù)據(jù)庫。
2)特征點識別。原圖經(jīng)處理后生成的識別圖為灰度圖,利用特征點進行匹配,Vuforia提供了匹配度的星級評定標(biāo)準(zhǔn)。如表1所示,表中經(jīng)處理生成的識別圖中出現(xiàn)的加號為圖片的識別特征點,可以看出,圖片的特征點越多,識別圖星級評定的星數(shù)越多,滿星為5顆。星數(shù)越多的識別圖,掃描匹配的成功率就越高,掃描識別時間也就越短,因此對圖片進行預(yù)處理時盡可能使圖片星級達到較高星級。
表1 原圖與識別圖對比及評星表
教材原圖經(jīng)處理生成的識別圖識別圖星級評定
將教材贈送的光盤里的所有場景對話視頻拷出并按相對應(yīng)的插圖名字命名,再將已命名好的視頻文件上傳到本地可訪問的服務(wù)器,確保任意一臺移動終端能夠訪問這些視頻資料,但是訪問用戶不能更改視頻資料,保證數(shù)據(jù)的完整性和一致性。
下載Vuforia SDK工具包vuforia-unity.unitypack集成到Unity3D中。新建Unity3D項目場景,分別添加Vuforia SDK的ARCamera, ImageTarget和Video對象到場景中,如圖2所示,其層次視圖(Hierarchy)如圖3所示。其中底層ImageTarget對象為識別圖載體,用于ARCamera獲取的圖片與識別圖進行匹配,當(dāng)匹配成功時會顯示出上層Video對象,該Video對象為視頻載體,以自定義的虛擬播放按鈕圖片形式展現(xiàn),通過按鈕可以控制視頻播放。
實際設(shè)計中是將Video對象作為ImageTarget的子對象覆蓋在ImageTarget對象上,這樣就可實現(xiàn)視頻一直貼著插圖顯示的效果。
圖2 Unity3D場景圖
圖3 Hierarchy視圖
圖2中Video對象控制視頻播放功能是通過編寫腳本代碼實現(xiàn),Vuforia SDK中提供了TargetFinder類用來判斷ARCamera獲取的圖片與識別圖數(shù)據(jù)庫數(shù)據(jù)是否匹配,匹配成功后的圖片信息保存到TargetFinder.TargetSearchResult中。
首先根據(jù)圖片名稱獲取視頻路徑:
video.m_path="視頻存放服務(wù)器網(wǎng)址目錄路徑"+
targetSearchResult.TargetName+".3g2";
腳本實現(xiàn)視頻加載和播放、暫停以及全屏功能的核心代碼如下:
1)視頻加載和播放。
video.VideoPlayer.Load(video.m_path,video.MediaType,false,0);
video.VideoPlayer.Play(true,0);
2)視頻暫停。
If(video.CurrentState==VideoPlayerHelper.MediaState.PLAYING)
{video.VideoPlayer.Pause();}
3)視頻全屏。
PlayFullscreenVideoAtEndOfFrame(VideoPlaybackBehaviour video)
Unity3D可直接將應(yīng)用發(fā)布到不同平臺,這里選擇Android平臺生成VBook.apk安裝包文件,將此安裝包文件發(fā)送到安卓手機上即可直接安裝運行。
運行安裝好的VBook軟件,直接調(diào)用移動設(shè)備攝像頭,若沒有直接開啟攝像頭權(quán)限,VBook會請求機主給予授權(quán),將移動設(shè)備攝像頭對準(zhǔn)教材插圖即可出現(xiàn)相應(yīng)視頻。具體測試結(jié)果如圖4~圖8所示。
圖4為相機掃描教材插圖后的顯示效果,圖中方框標(biāo)示的區(qū)域表示與云端識別圖相匹配的識別特征點,當(dāng)掃描圖片與云端數(shù)據(jù)識別圖一致時,在被掃描圖片上出現(xiàn)虛擬播放按鈕,該按鈕圖片與插圖無縫疊加,如圖5所示;點擊按鈕進入圖6所示的視頻播放界面,播放與圖片相對應(yīng)的視頻,播放過程中單擊視頻會暫停播放、雙擊為全屏播放,分別如圖7和圖8所示。VBook的設(shè)計使用戶在體驗增強現(xiàn)實交互的同時,也滿足了軟件的易使用性特點。
圖4 掃描識別
圖5 匹配成功
圖7 視頻暫停
圖8 全屏播放
依托Unity3D強大的渲染引擎及可視化操作功能界面,再加上Vuforia工具包及其強大的增強現(xiàn)實效果,使得開發(fā)者能夠在很短的時間入門。VBook主要是利用增強現(xiàn)實技術(shù)將學(xué)習(xí)視頻生動地呈現(xiàn)在用戶面前,讓用戶感受到與傳統(tǒng)學(xué)習(xí)方法不一樣的交互體驗,即解決了學(xué)生獲取教材視頻困難的問題,同時也激發(fā)了學(xué)生的學(xué)習(xí)興趣。當(dāng)然,增強現(xiàn)實的應(yīng)用不僅如此,還有相當(dāng)多的地方需要用到,今后將更深入地研究增強現(xiàn)實技術(shù),增強現(xiàn)實一定會普及中國。
[1] Bajura M, Henry F, Ohbuchi R. Merging virtual reality with the real world[J]. Computer Graphics, 1992,26(2):203-210.
[2] 朱淼良,姚遠,蔣云良. 增強現(xiàn)實綜述[J]. 中國圖象圖形學(xué)報, 2004,9(7):767-774.
[3] 新浪公司. 虛擬現(xiàn)實之父[EB/OL]. http://blog.sina.com.cn/s/blog_6627ced101013u8n.html, 2012-07-08.
[4] Tomcaudell. AR at Boeing[EB/OL]. http://www.ipo.tue.nl/homepages/mrauterb/presentations/HCI-history/tsld096, 2012-02-06.
[5] Unity Technologies. Unity3D[EB/OL]. http://unity3d.com, 2017-03-01.
[6] Vuforia Developer Portal. Vuforia[EB/OL]. http://developer.Vuforia.com, 2017-12-19.
[7] Joseph Hocking. Unity5實戰(zhàn)使用C#和Unity開發(fā)多平臺游戲[M]. 北京:清華大學(xué)出版社, 2016.
[8] Mossel A, Schonauer C, Gerstweiler G, et al. ARTiFICe-augmented reality framework for distributed collaboration[J]. International Journal of Virtual Reality, 2012,11(3):1-7.
[9] Antoni S F. Location Based Augmented Reality Application on Unity3D[D]. Universitat Politeècnica De Catalunya, 2013.
[10] 羅永東,張淑軍. 一種基于Unity3D的移動增強現(xiàn)實自動導(dǎo)覽方法[J]. 計算機與數(shù)字工程, 2015(11):2024-2028.
[11] Lee Y, Choi J. Texture extraction from video and image warping for AR coloring book[J]. Lecture Notes in Electrical Engineering, 2014,330:361-366.
[12] Jevremovic V, Petrovski S. MUZZEUM augmented reality and QR codes enabled mobile platform with digital library, used to guerrilla open the national museum of serbia[C]// 2012 18th International Conference on Virtual Systems and Multimedia (VSMM). 2012:561-564.
[13] Tsai C H, Yen Jungchuan. The augmented reality application of multimedia technology in aquatic organisms instruction[J]. Journal of Software Engineering and Applications, 2014,7(9):745-755.
[14] Wumpini Alhassan Hussein. Augmented Reality Capture the Flag[R]. Ashesi University College, 2014.
[15] 黃有群,姬永成,李丹. 基于ARToolKit工具的增強現(xiàn)實交互操作研究[J]. 計算機與現(xiàn)代化, 2008(9):97-100.
[16] 黃業(yè)桃,劉越,翁冬冬,等. 基于隨動控制的數(shù)字圓明園增強現(xiàn)實系統(tǒng)注冊方法[J]. 計算機研究與發(fā)展, 2010,47(6):1005-1012.
[17] Vista I, Felipe P, Deok J L, et al. Remote activation and confidence factor setting of ARToolKit with data association for tracking multiple markers[J]. International Journal of Control and Automation, 2013,6(6):243-252.