郭仁春, 錢子揚(yáng), 玉錦宏, 霍西寶
(沈陽化工大學(xué) 信息工程學(xué)院, 遼寧 沈陽 110142)
AugmentedReality,簡稱AR,即增強(qiáng)現(xiàn)實(shí)技術(shù),是一種實(shí)時計算攝影機(jī)影像的位置及角度并加上相應(yīng)圖像、視頻、3D模型的技術(shù)[1-2].這種技術(shù)可以在屏幕上把虛擬世界套在現(xiàn)實(shí)世界中并進(jìn)行互動[3].
校史館是陳列學(xué)校發(fā)展歷史、展示學(xué)校辦學(xué)過程和不同時代學(xué)校面貌的場館,校史館可以用來對外參觀、對新生進(jìn)行宣傳,是展示校園文化的重要窗口[4-8].
本文使用Unity 3D與Vuforia結(jié)合的方式實(shí)現(xiàn)AR技術(shù)構(gòu)建虛擬校史館[9].當(dāng)人們參觀校史館的時候,只需要拿起手機(jī)掃描一下館內(nèi)的宣傳圖,在手機(jī)屏幕上就可以獲得圖片的三維立體模型,了解建筑物的三維信息[4].通過點(diǎn)擊手機(jī)屏幕的各種功能按鈕,實(shí)現(xiàn)模型的旋轉(zhuǎn)、縮放、復(fù)位等系列操作.給參觀者提供了更好的視覺體驗,使得校史文化更深入人心.
如圖1所示為沈陽化工大學(xué)的校史館,場館中間是沙盤模型,墻壁上是校史介紹文字和校園
風(fēng)光、知名校友照片.風(fēng)光照片包括教學(xué)樓、大門、圖書館等建筑物.但由于墻上所展示的只是建筑物的二維照片,為進(jìn)一步了解該建筑物的整體結(jié)構(gòu),就需要建立建筑物三維模型.
通過3D Max對校園的建筑物進(jìn)行建模,制作完成的模型包括校圖書館、大學(xué)生活動中心以及體育館等,相關(guān)模型如圖2所示.模型建好之后,導(dǎo)出為FBX文件.
打開Unity 3D軟件,將已經(jīng)建好的FBX文件導(dǎo)入到虛擬場景中.
高通公司旗下的Vuforia是一個增強(qiáng)現(xiàn)實(shí)(AR)移動視覺平臺,Vuforia對移動設(shè)備提供AR技術(shù)所需的識別圖的軟件開發(fā)工具包.用戶可以將所需圖片上傳到Vuforia官網(wǎng),通過圖像處理技術(shù)生成一種識別圖.Vuforia對該識別圖進(jìn)行圖像特征提取和存儲,并以數(shù)據(jù)形式提供給客戶.當(dāng)將這些識別圖導(dǎo)入Unity引擎中后,通過一定的編程手段可以生成基于AR技術(shù)的App程序.用戶的手機(jī)運(yùn)行這種App后,可以用手機(jī)掃描現(xiàn)實(shí)場景,當(dāng)現(xiàn)實(shí)場景的圖像與Vuforia識別圖的特征相匹配之后,就可以激活相應(yīng)的虛擬場景,例如,在屏幕上出現(xiàn)虛擬的三維圖書館.
以校史館墻壁上的展圖作為識別圖,圖3是校史館墻上的照片.
將所需要的識別圖上傳至Vuforia官網(wǎng),并下載與其對應(yīng)的unitypackage,這個unitypackage包含識別圖的特征信息數(shù)據(jù).識別圖的實(shí)現(xiàn)過程如下:首先登陸Vuforia官網(wǎng)(http://developer.vuforia.com),并選擇develop中的License Manager,點(diǎn)擊Add License Key,以添加新的工程,拷貝密匙.選擇develop中的Target Manager,創(chuàng)建識別圖數(shù)據(jù)庫.然后添加識別圖,Type選擇Single Image.最后下載網(wǎng)站生成的unitypackage,這個工具包就可以作為特征識別圖來使用.
在校史館中實(shí)現(xiàn)增強(qiáng)現(xiàn)實(shí)技術(shù)的主要任務(wù)是開發(fā)一個可以在手機(jī)上運(yùn)行的App,這個程序運(yùn)行之后,通過手機(jī)上的攝像頭拍攝校史館墻上的照片,然后在手機(jī)屏幕上顯示出來建筑物的三維效果,通過手觸可以實(shí)現(xiàn)三維建筑物的縮放,旋轉(zhuǎn)等全方位觀看.
整個程序的開發(fā)是在Unity 3D游戲引擎中實(shí)現(xiàn)的,采用C#程序作為腳本語言.開發(fā)步驟主要包括模型導(dǎo)入、場景組建、UI界面、圖像識別和觸屏操作等功能.
首先將在3D Max中創(chuàng)建的模型導(dǎo)入到Unity 3D中,完成場景建設(shè).場景建設(shè)步驟:新建Unity 3D工程,導(dǎo)入識別圖的unitypackage,刪除Unity 3D默認(rèn)的Main Camera,添加Vuforia中的AR Camera以及ImageTarget.將之前拷貝的密匙輸入AR Camera中的App License Key中,在DatabaseLoadBehaviour腳本中勾選加載工程,再勾選Active.將導(dǎo)入的建筑物模型放入ImageTarget下.在ImageTarget中的ImageTargetBehaviour腳本中選擇對應(yīng)的識別圖,每個識別圖對應(yīng)不同的建筑物.通過這些步驟無需手工編寫代碼就能自動實(shí)現(xiàn)圖像識別和模型顯示.
程序運(yùn)行后,將攝像頭對準(zhǔn)校史館墻上的展示照片,當(dāng)攝像頭在一定的角度和位置之上,攝像所形成的圖像與程序中的特征識別圖相匹配之后,就可以激活A(yù)pp中的AR Camera,在屏幕上可以看到虛擬的3D建筑物,達(dá)到了虛實(shí)結(jié)合的效果.
為了對建筑物有更多的操作,手機(jī)應(yīng)用程序中添加了對虛擬模型操作的功能.首先設(shè)計一個UI界面,界面上包括幾個按鈕,分別是平移、旋轉(zhuǎn)、復(fù)位、信息顯示等.這些按鈕的功能需要C#程序代碼來實(shí)現(xiàn).例如屏幕上的建筑物可以隨著手指的移動進(jìn)行360度旋轉(zhuǎn).首先記錄手指在屏幕上的初始位置,在手指滑動的過程中記錄新的位置,根據(jù)滑動的距離計算出旋轉(zhuǎn)的角度,然后重新記錄手指在屏幕中的位置,因此畫面要時刻進(jìn)行更新.在Unity3D開發(fā)環(huán)境中,默認(rèn)提供了Update函數(shù),該函數(shù)是在每一幀中運(yùn)行的,將旋轉(zhuǎn)的功能代碼寫在這個Update函數(shù)中,虛擬建筑就會隨著手指的移動進(jìn)行旋轉(zhuǎn)或者平移操作,其中手指進(jìn)行的到底是平移還是旋轉(zhuǎn)動作,由UI操作按鈕決定.
在完成上述步驟后,最后導(dǎo)出安卓apk程序,并在安卓手機(jī)上進(jìn)行安裝.打開所安裝的應(yīng)用,將手機(jī)攝像頭對準(zhǔn)校史館墻壁上的照片,可以看到所實(shí)現(xiàn)的效果,如圖4所示.
通過前期的建模、編程操作以及后期對系統(tǒng)的一系列嚴(yán)格測試,實(shí)現(xiàn)了AR技術(shù)在虛擬校史館建設(shè)的應(yīng)用,為今后學(xué)生對于校史館的參觀提供了方便.用戶可在安卓手機(jī)上很方便地通過掃描識別圖的方法,查看學(xué)校校園建筑的三維信息,還可以了解更多相關(guān)場景的介紹.但該設(shè)計仍有不足之處,如場景細(xì)節(jié)不夠豐富,交互性比較簡單等.豐富場景細(xì)節(jié)使系統(tǒng)交互性更加豐富將是下一步的研究重點(diǎn).同時,也將會進(jìn)一步添加更多校園建筑,以便于開展對學(xué)校的宣傳工作.