Unity2020中使用Vuforia開發擴增實境AR APP教學

幾年前小樽曾寫過一篇《Unity 2017.2的Vuforia擴增實境AR教學,含發布成Android App》(以下簡稱“教學文一”)的教學,隨著Unity3D軟體的迭代,一些步驟上有了新的變化,因此有了此篇新教學。

本教學介紹了三個簡單AR APP的Unity製作:使用辨識 Target Image 呈現3D模型,使用辨識 Target Image 播放影片,使用 Ground Plane 在真實空間中AR展示3D模型。

1. Vuforia官網註冊賬號取得授權並建立建立辨識特徵圖片用的資料庫

在Vuforia官網操作的部分仍舊跟以前一樣,可以參考教學文一。在這個過程中,關鍵的兩點是取得授權Lisence Key和下載辨識特徵圖片的 assets unity package。

2. 在Unity3D中引入Vuforia Package

自2020年一月後,即Unity3D 2019.3及之後的版本中將不再內建有Vuforia,因此我們需要手動import vuforia的包,以下方法擇一即可

2.1 從Unity3D 的package manager 中添加Vuforia Package

這裡下載add-vuforia-package-9-4-6.unitypackage,並導入。

2.2 手動添加Vuforia Package

這裡下載Vuforia Package,然後複製到項目中的Packages文件夾中。

2.3 從Asset Store的 Core Samples中導入Vuforia Package (不推薦)

添加Vuforia Core Samples Assets到項目中,然後刪除或直接不導入項目不需要的assets文件等。

3. 應用一:辨識2D圖片特徵呈現3D模型 AR APP

小雪在這裡做的是識別動物森友會中的K.K圖片,然後AR Pop up 一個3D的吉他在上面。

3.1 添加Vuforia AR Camera,移除Main Camera

3.2 導入Vuforia 圖片辨識資料庫package

將步驟1中下載好的圖片辨識資料庫package導入到項目中,小雪設置的資料庫名為TutorialDemo

3.3 打開Vuforia Configuration Inspector進行設置

打開 Assets/Resources/VuforiaConfiguration.asset 填寫步驟1中申請到的授權碼,激活圖片辨識資料庫。

3.4 添加 Image Target 到 Scene 中

在Scene中添加Image Target,並把Type設置為 From Database,Database選擇步驟3.2導入的那個TutorialDemo,Image Target選擇K.K圖片,小雪命名為tokakeke

3.5 添加要擴增的物件到 Scene 中

小雪在這裡添加的是一個吉他,把物件拖到Scene中,選擇合適的位置,縮放物件至合適的大小。注意物件層級在 Image Target 下。

若要做SLAM的效果,即出現擴增物件後,即使移除辨識物,擴增物件仍放置在原位置上,則記得確認將Image Target 啟用 Extended Tracked

3.6 Build and Run Android APK

3.6.1 設置SDK、NDK

在菜單中選擇 Edit -> Preferences,然後在 External Tools 中對Android的SDK、NDK等進行設置,如果在unity安裝的時候就已經安裝了安卓包,那麼直接都打上勾就好了,無需手動指定位置。

3.6.2 build and run 到手機

首先將手機接上電腦,在build setting中,選上剛才做好的scene,選擇Android,點擊Switch Platform按鈕。然後在Run Device中選擇你連接的手機,如果沒看到相對應的手機選項,點擊旁邊的Refresh按鈕。

3.6.3 Android Run 成功!

3.7 Build and Run iOS on iPhone

3.7.1 填寫申請Camera使用權限的描述

Vuforia需要使用iPhone的相機,根據蘋果公司的政策,需要填寫向用戶申請相機權限時的描述。

打開 Player Settings,選擇 iOS,找到 Other Settings選項卡,填寫Camera Usage Description。必填。內容任意。

3.7.2 Build 到指定文件夾

在Build Settings中,Switch Platform 到 iOS(因為小雪這個只是小demo,所以選擇了Debug模式,Development Build)。然後直接點擊Build按鈕,選擇指定文件夾路徑即可。

3.7.3 在Xcode中Build and Run

將剛才Build出來的整個文件夾傳送到Mac電腦中(U Disk、 Cloud Disk隨意),在Xcode中打開項目。

首先要設置正確的簽名。

然後就可以Build and Run啦。Build過程中如果出現以下彈窗,選擇Perform Changes。

3.7.4 iPhone Run 成功!

4. 應用二:辨識2D圖片特徵播放影片AR APP

前面的步驟同應用一的3.1~3.4,這裡就不複述了。

4.1 添加Plane到Scene中

在 Image Target 下添加 Plane 物件,縮放調整 Plane 的位置和大小。

4.2 添加影片播放器到 Plane

打開 Plane 物件的 Inspector,點擊“Add Component”按鈕,在彈出的選項中選擇“Video Player”。

4.3 添加影片並設置Video Player

將Assets中添加好的影片附加至 Video Player。因為需要在辨識到 Target Image 的時候才播放影片,所以剔除 Play On Awake 的選擇。如果你需要循環播放影片的話,可以勾選 Loop。

4.4 設置播放影片、停止播放影片

打開 Image Target 物件的 Inspector ,展開 Default Trackable Event Handler(Script)選項卡。在On Target Found 事件中添加Plane的VideoPlayer.Play動作。在On Target Lost事件中添加Plane的VideoPlayer.Stop動作。完成後如下圖所示。

如此這般,就完成了,後續各平台Build動作同應用一的3.6和3.7。

5. 應用三:放置擴增物件至水平面 AR APP

在這個應用,我們不再需要圖片辨識資料庫,不需要設置指定的圖片用來辨識,我們使用的是Vuforia 的 Ground Plane Detection 。

Vuforia Ground Plane Detection 只支持在部分手機上運行,官方推薦的機型列表見這裡,受支持的設備見這裡

5.1 添加ARCamera

操作如3.1。

5.2 添加 Ground Plane Stage 到 Scene 中

5.3 添加 Plane Finder 到 Scene 中

5.4 配置 Plane Finder

打開前一步驟中添加好的 Plane Finder Inspector,展開 Content Positioning Behaviour (Script) 選項卡,將 Anchor Stage 設置為 Scene中剛添加好的 Ground Plane Stage。如果你希望環境中你所擴增的物件保持唯一,記得將選項 Duplicate Stage 剔除(uncheck)。

5.5 添加要擴增物件到 Scene中

將要擴增的物件放置到 Ground Plane Stage 層級下,縮放移動調整好位置。

最後,各平台Build動作同應用一的3.6和3.7。

最後build出來運行的結果。