Unity Vuforia 圖片辨識內容製作



這次來到 AR 最重要的一部份 - 圖片辨識!不知道大家有沒有玩過 App 裡面可以掃描圖片或東西,之後會跑出 3D 模型等等的經驗?如果有興趣,請繼續看下去!
適用對象:想開發 AR 的開發者

註冊


先到 Vuforia 註冊帳號,Company 的部分可以填入 None 即可


最下面兩個方框記得勾起來,Create account 才可以點



設定圖片辨識資料庫


登入後,點 Target Manager


Add Database


輸入 Database 名稱後,按 Create (Type 的話,這邊我是選擇 Device,其他可能要研究下)


點剛剛新增的 Database


找到 Add Target 新增辨識目標


Type 我們這邊照預設的辨識圖片就好,有需要其他的再自行選擇
File 選擇要作為辨識的圖片(圖片要 8bit 的灰階或 24bit 的 RGB 檔案),圖片最好對比度要高會比較好辨識,像是路上的標誌等等。
Width 設定為 1。這部份可能要確認,目前實作的經驗是設成 1 讓他維持原來的長寬
Name 的部分之後會出現在 Unity 的選項裡面,自己知道是哪個就好
都填好後按 Add


設定完後,按 Download Database


選 Unity Editor 後,按 Download


匯入專案

開啟要使用的專案,在 Assets 右鍵 > Import Package > Custom Package... 匯入剛剛下載的 Package


選好檔案後,會跳出匯入檔案清單,按下 Import 吧!

實作

在 Hierarchy 中找到 Create > Vuforia Engine > AR Camera


可能會跳出需要 Import Vuforia 的東西


匯入完後,我們也是在 Hierarchy > Create > Vuforia Engine > Image 


新增完後,點剛剛新增的物件,會發現顯示黃色驚嘆號,這時我們就要去 Player Settings 勾選一些項目

我們點擊 File > Build Settings...


Player Settings


往下捲動到 XR Settings 點開並勾起 Vuforia Augmented Reality


Accept

由於出現黃色驚嘆號,因此我們需要做以下設定

往上滑將 Run In Background 取消


點第二個 iOS 圖示


下拉到 Other Settings
將 Camera Usage Description 打上 Need to use camera (這邊應該只要有輸入就好)
Target minimum iOS Version 設成 11.0


往上滑點第三個 Android 圖示

在 Other Settings 找到 Android TV Compatibility 取消它


這邊還有顯示 Vuforia requires the WSA Capability 'WebCam' to be set. Please set this capability in the Player Settings 不過這邊使用不到我就不設定了。需要設定的請將 Platform  轉到 Universal Windows Platform,再到 Player Settings > Publishing Settings > Capabilities > WebCam 選擇 InternetClient

播放後會發現出現一個紅色 error,說沒有 License 因此我們到 Vuforia 官網一趟吧!


點 Get Development Key


輸入名稱、勾選同意後,按 Confirm


點剛剛新建的 License



點一下一長串的數字會自動複製



回到 Unity > Window > Vuforia Configuration


貼到 App License Key 上


再按 Play 掃描我們設定的圖片會發現什麼都沒有 XD

我們在 Image Target 下加一個 Cube 再 Play 試試


掃描圖片後,Cube 就出現了!這樣就成功了


我們這樣就完成了一個 AR 掃描的程式了!之後想要做掃描東西觸發任何事情,放在 ImageTaget 底下就好,不過這邊要注意,如果程式放在 Start 他是會直接執行的,即使沒有掃到,我們之前的做法是在 DefaultTrackableEventHandler 裡面加入一個 bool,並在 OnTrackingFound 設定 bool 為 True、OnTrackingLost 設定 bool 為 False 。在用另外一個程式監控現在哪個圖片被偵測到,再將程式 Enable 來施行。希望能幫助到大家。

延伸閱讀


留言