李雪艷, 戴 路
(陽光學院人工智能學院, 福建福州 350015)
增強現(xiàn)實技術, 也稱為AR技術(Augmented Reality), 其工作原理是將真實世界信息和虛擬世界信息“無縫”集成, 把現(xiàn)實世界的一定時間空間范圍內(nèi)很難體驗到的實體信息通過電腦等科學技術, 模擬仿真后再疊加, 將虛擬的信息應用到真實世界, 被人類感官所感知, 從而達到超越現(xiàn)實的感官體驗[1].
現(xiàn)階段增強現(xiàn)實的技術一般有三種[2]: (1)基于顯示器的增強現(xiàn)實技術; (2)基于視頻透視式的增強現(xiàn)實技術; (3)光學透視式的增強現(xiàn)實技術. 由于視頻透視式的增強現(xiàn)實技術和光學透視式的增強現(xiàn)實技術需要極強的硬件方面支持, 成本極高, 不宜廣泛推廣[3], 因此, 本設計采用基于顯示屏的增強現(xiàn)實技術進行設計. 該方式能夠采用手機進行增強現(xiàn)實交互, 開發(fā)簡便且便于推廣. 本設計基于高通公司推出的Vuforia SDK.
Unity 3D 是由Unity Technologies公司開發(fā)的能夠?qū)崿F(xiàn)場景可視化以及三位動態(tài)模型等互動的游戲開發(fā)工具, 開發(fā)者能通過Unity 3D輕松開發(fā)出一款視覺交互類的應用[4]. 其采用C#語言, 能在Windows、 Linux和Mac OS等操作系統(tǒng)下開發(fā), 并能將游戲發(fā)布到各種主流的平臺上. 同時, Unity 3D支持各種插件, 可以降低開發(fā)難度[5]. 本文選取Vuforia插件進行增強現(xiàn)實交互的設計.
增強現(xiàn)實技術在開發(fā)過程中需要攻克多個技術難題. Vuforia擴增實境軟件開發(fā)工具包(Vuforia Augmented Reality SDK)的簡介如圖1所示, 它是高通公司推出的針對移動設備擴增實境應用的軟件開發(fā)工具包, 可以明顯降低增強現(xiàn)實交互應用的開發(fā)門檻[6]. 其可以支持Unity3D、 HoloLens、 Android、 iOS、 UWP的等系統(tǒng)[7].
圖1 Vuforia 插件簡介
本設計主要研究在使用Unity3D游戲引擎及Vuforia SDK的基礎上開發(fā)增強現(xiàn)實的應用, 并將其打包成.apk格式的安卓安裝包, 且最終能在安卓手機上運行. 其設計概要流程圖如圖2所示. 首先通過Vuforia官網(wǎng)下載基于Unity 3D的插件, 并通過注冊獲取開發(fā)者身份. 然后將準備好需要進行虛擬交互的圖像通過授權(quán)獲取應用許可及其相關密鑰, 并將需要交互的模型與密鑰一并導入Unity 3D中. 最后通過Vuforia SDK設置及相關腳本編寫最終完成相關增強現(xiàn)實的交互, 并打包為.apk格式的安卓系統(tǒng)的安裝包, 之后通過相關測試并最終完成作品.
圖2 設計概要流程圖
對于Vuforia SDK資源包的創(chuàng)建, 需要用郵箱注冊一個ID賬號登錄, 并激活賬戶進入Vuforia網(wǎng)站, 申請注冊需要的應用, 獲取應用的許可證密匙. 然后進入Downloads選項, 選擇下載add-vuforia-package-8-6-7.unitypackage. 下載完成之后得到一個后綴名為unitypackage的Unity插件包, 之后導入插件包后, Unity3D的菜單欄上會多出一個Vuforia的菜單選項, 通過這個選項能添加Vuforia的相關預置.
在Vuforia官網(wǎng)注冊后進入Develop頁面, 在license Manager選項中創(chuàng)建License Key, License Key是Vuforia公司對Vuforia SDK的許可證密鑰. 其中, 個人版是免費的. 本文使用的License Key截圖見圖3.
圖3 許可證密鑰
同時將Vuforia SDK的許可證密鑰添加到App Lincense Key中, 添加Lincense Key后的效果圖如圖4所示. 應用運行時若無該密鑰將無法運行程序.
圖4 添加Lincense Key后的效果圖
將原場景中的攝像頭Main Camera替換為插件中的AR Camera. 替換選項截圖如圖5所示. 并且在開啟攝像機前需添加自動對焦相關功能, 防止攝像頭在移動過程中由于焦距問題導致無法識別圖的問題.
圖5 替換為AR Camera組件的截圖
在Develop頁面的Target Manager中創(chuàng)建應用中需要用到的識別圖, 通過Add Datebase上傳所需要用到的識別圖. 識別圖使用的形狀包括Single Image、 Cuboid、 Cylinder和3D Object四種模式. 同時系統(tǒng)還能檢測識別圖的被識別度, 識別圖的特殊性越高, 其被識別的準確率就越高. 注冊圖的識別標記如圖6所示. 最后系統(tǒng)將生成UnityPackage的插件包, 可以將該插件導入Image Target Behaviour的選項里.
圖6 注冊圖的識別標記
人物模型的放大、 縮小及旋轉(zhuǎn)可以直接通過觸摸屏的手勢進行操作, 這可以在Unity 3D中通過Finger Gestures插件實現(xiàn). 首先導入Finger Gestures手勢識別的插件包, 將插件包中的預設體Finger Gestures添加到場景, 并添加監(jiān)聽器. 然后在OnPinch事件中能獲取兩個手指張開或收縮時的路徑, 并通過該路徑放大或縮小物體的尺寸. 最后在OnTwist事件中能獲取最近一次角度的變化, 通過該變化調(diào)節(jié)物體的旋轉(zhuǎn)角度. 通常雙指張開代表放大操作, 雙指收縮代表了縮小操作, 拖住移動代表旋轉(zhuǎn)操作.
模型能通過點擊屏幕等方式進行一定的交互, 因此模型需要帶有動作, 若模型不帶有動作則無法進行動作類的交互. 當選擇了一套具有動作的模型后, 配合Unity 3D中自帶的Animatior(動畫系統(tǒng)), 對模型的動作進行管理. Animation是舊版的動畫狀態(tài)機, Animator是新版的動畫狀態(tài)機. Animator是把Animation統(tǒng)一管理和邏輯狀態(tài)管理的組件, 可以更方便進行圖形化狀態(tài)管理. 本系統(tǒng)的動畫狀態(tài)機如圖7所示.
圖7 動畫狀態(tài)機狀態(tài)機
將交互的每一個動作與相關條件進行綁定, 通過編寫腳本就能進行動作交互. 本作品為角色添加兩組動作: stand和attack動作, 并添加一個狀態(tài)變量attack_fal, 其初始值為false, 當系統(tǒng)發(fā)現(xiàn)識別圖時, 角色直接進入stand狀態(tài). 只有當attack_fal值由false變?yōu)閠rue時, 角色動作將由attack轉(zhuǎn)為stand; 當attack_fal值由true變?yōu)閒alse時, 角色動作將由attack狀態(tài)轉(zhuǎn)為stand狀態(tài). 在腳本中設置, 當監(jiān)聽到點擊屏幕事件時, attack_fal=true, 使角色由stand狀態(tài)進入attack狀態(tài). 當運行完attack狀態(tài)后, 腳本設置attack_fal=false, 使角色由attack狀態(tài)轉(zhuǎn)為stand狀態(tài). attack動作圖如圖8所示.
圖8 attack動作圖
當系統(tǒng)所有功能都能實現(xiàn)以后, 進入Preferences的External Tools中, 添加Android的SDK和JDK信息. 然后在Build Settings中選擇需要打包的場景信息, 并在Platform中選擇Android系統(tǒng). 之后在Android API Level 中選擇Android的版本. 最后在player settings中設置Company Name、 Product Name與Bundle Identifier之后確認, 并創(chuàng)建apk安裝包.
在Android手機端安裝打包好的命名為AR_TEST.APK的安裝包, 安裝完后打開該應用, 將攝像頭對準識別圖, 識別圖上將出現(xiàn)設置好的虛擬人物模型. 然后對該虛擬人物進行縮放、 旋轉(zhuǎn)、 點擊等操作, 都能實現(xiàn)相應的功能.
選擇時下比較主流的基于安卓系統(tǒng)手機品牌, 包括華為、 小米、 三星和魅族進行測試. 測試包括: 是否能正常進入應用; 打開AR攝像頭, 是否會閃退; 是否能對圖片進行識別、 交互功能是否能夠?qū)崿F(xiàn); 是否能夠?qū)崿F(xiàn)縮放、 旋轉(zhuǎn)、 交互等功能. 測試結(jié)果如表1所示.
表1 Vuforia應用系統(tǒng)測試一覽表
本設計通過Unity 3D游戲引擎配合高通Vuforia插件, 采用C#編寫應用腳本, 設計并實現(xiàn)了一個能夠識別特定識別圖, 并出現(xiàn)相應的角色模型的增強現(xiàn)實效果的系統(tǒng). 其使用Finger Gestures插件實現(xiàn)相應角色的放大、 縮小、 旋轉(zhuǎn)等功能, 可以通過Unity 3D自帶的動畫狀態(tài)機實現(xiàn)角色的簡單控制, 并在基于安卓系統(tǒng)的多個手機操作系統(tǒng)下測試成功. 由于研究時間和現(xiàn)階段技術問題應用還存在以下缺陷: 由于系統(tǒng)需要與Vuforia服務端進行連接, 因此需要進行聯(lián)網(wǎng), 在沒有網(wǎng)絡的情況下無法實現(xiàn)增強現(xiàn)實的實現(xiàn)過程.
基于手機端的AR技術攜帶便利, 研發(fā)成本不高, 實現(xiàn)起來較為簡便, 相對于眼鏡設備來講更容易普及. 隨著技術的提升, 近年來也出現(xiàn)了一些熱門的AR應用, 如Pokémon Go、 Zoo Kazam、 Google Translate等. 除了高通的Vuforia平臺, 其他各大平臺也不斷推出了各自的AR方面的SDK, 如Google公司的ARCore、 蘋果公司的ARKit、 國內(nèi)的視+AR開放平臺. 隨著科技的發(fā)展, 增強現(xiàn)實技術在未來會應用到更多領域.