基於Unity的AR開發初探:第一個AR應用程式
記得2014年曾經寫過一個Unity3D的遊戲開發初探系列,收穫了很多好評和鼓勵,不過自那之後再也沒有用過Unity,因為沒有相關的需求讓我能用到。目前公司有一個App開發的需求,想要融合一下AR到App中以便為客戶提供更好的體驗,因此我開始了一些調研和學習,會依次總結一些文章出來與各位分享。此外,也希望能給更多的.NET&.NET Core開發者看到用C#語言開發AR應用的場景,有更多的人使用C#開發應用程式。
一、理清VR、AR與MR的概念
1.1 VR
所謂VR,就是Virtual Reality,虛擬現實,就是把虛擬世界的東西呈現到你的面前,讓你以為是真實的。其實,遊戲世界就是典型的虛擬現實。
電影頭號玩家 — 裡面全是VR世界
1.2 AR
所謂AR,即Augmented Reality,增強現實,是指將虛擬世界的東西疊加到現實世界裡。2018年任天堂公司推出了一款Pokemon Go的遊戲,運用了AR技術,玩家可以通過手機螢幕在現實世界中發現精靈,然後進行捕捉或戰鬥。
Pokemon Go — 一款AR手機遊戲
1.3 MR
所謂MR,即Mixed Reality,混合現實,與AR相反,MR是指將真實世界的東西疊加到虛擬世界裡。
舉個栗子, 對於修汽車,有些老師身懷絕技且經驗豐富,但人數有限,而汽車故障可以發生在任何地方,無法保證每個修車店都有優秀的技師。如果有了MR工具,現場的技師就能把車況排成三維的虛擬影象傳給你老師傅,老師傅則可以根據眼前看到的非常真實的現場情況給出修理建議,而且還能夠在三維的虛擬實體上把每一步都指點出來,現場的技師只要照著做就可以保證修理質量了。
MR混合現實—將真實世界疊加到虛擬世界
1.4 More AR?
目前VR已經很成熟,AR正在廣泛地應用之中,而MR還在研究階段,這裡我主要關注AR。
(1)AR的行業應用及發展趨勢
AR目前主要應用在幼教、遊戲及大屏互動之中。AR遊戲目前處於不斷試水階段,大屏互動已經廣泛地應用在了博物館、商場及廣告屏等公共場所。
(2)AR的主流應用玩法
- Scan It — 根據識別圖出發AR操作
- Place It — 由使用者根據需要將虛擬物體拖動到真實環境的某個區域之中
- Find It — 將虛擬物體直接初始化在真實環境中的某個區域(就像它本來就真實存在一樣)引導使用者去尋找得到快感
(3)如何製作AR?
不同的專案和開發人員會有不同的選擇,這裡介紹一種常見的工具技術棧:
- 引擎:Unity
- AR開發工具包:EasyAR(中國出品)、Vuforia(高通出品)、ARKit(蘋果出品)、ARCore(谷歌出品)
Note: 如果將Unity比作廚房,各種資源是料理用的食材,那麼製作AR的SDK就是菜品的配方。
- 3D美術工具:AutoDesk MAYA
- 平面美術工具:Photoshop
二、Unity與EasyAR環境準備
2.1 Unity與EasyAR版本
這裡Unity選擇版本為5.5.2,因為跟隨了我參考的書籍《UnityAR增強現實完全自學教程》的版本,避免我在學習初期就碰到很多坑,降低學習的挫折感。
這裡AR SDK選擇EasyAR,版本為1.3.1,因為也是跟隨參考書籍,實際開發中還可以考慮蘋果公司的ARKit以及高通公司的Vuforia。
2.2 安裝Unity
由於我們下載的是歷史舊版本,因此到 archive 中找到5.5.2,並下載它:
開啟Unity5.5.2f1.exe開始安裝:
在選擇Unity元件時,勾選“Android Build Support”,如果是Mac主機,還可以勾選“iOS Build Support”:
然後就是一路的Next了,再然後就耐心等待一會吧,安裝需要一定的時間。最後你可以註冊並登陸Unity賬號,我們可以選擇免費個人版用於學習。
然後就可以建立一個專案了,要注意的是專案名稱及檔案存放路徑不要出現中文字元(包括中文輸入狀態下的文字及符號)。
然後就進入了Unity的Editor主介面了:
關於Editor的細節,這裡就不再贅述了,有興趣的可以閱讀我的這一篇,或者瀏覽參考書《 Unity AR增強現實完全自學教程 》。
2.3 安裝EasyAR
首先需要去 EasyAR官網 註冊一個賬戶,然後在下載頁面找到歷史版本v1.3.1,注意是選擇v1.3.1 Unity Samples(它不是單純的EasyAR Unity SDK v1.3.1,而是官方的樣例Samples)。
然後將下載的檔案解壓,以備後續使用。
三、第一個AR應用程式
接下來我們以EasyAR SDK Unity Samples中的一個案例HelloAR來作為第一個AR應用程式,看看如何實現。
3.1 EasyAR SDK基本配置
在Unity中開啟剛剛解壓後的EasyAR Unity Samples,選擇HelloAR這個子專案進行開啟:
然後在彈出的對話方塊選擇“Upgrade”。
在開啟Unity之後,我們可以在專案資源面板(Project)中按資料夾層級 Hello AR - Scenes 找到HelloAR場景檔案,雙擊進入場景,可以看到如下圖所示的畫面:
*.圖中展示了識別圖和他們的增強效果模型
在場景資源(Hierarchy)面板中,可以看到載入入的“EasyAR_Startup”這個AR相機,選中它並轉到檢視(Inspector)面板,可以看到如下所示的畫面,要求我們輸入AR金鑰才能啟用這個AR相機。
這時需要我們回到EasyAR的官網,進入開發中心獲取AR金鑰。這裡我們要做的就是新增一個SDK License,這裡我選擇的是免費版。此外,由於這裡我用的是老版本1.x的SDK,因此需要複製SDK 1.0的key。
將這段key貼上近剛剛的AR金鑰輸入框中:
點選執行按鈕,(事前確保攝像頭為開啟狀態),則可驗證金鑰是否有效:
(1)識別圖1:原諒我拍的不行,因為必須要與一個手機給攝像頭展示識別圖
(2)識別圖2:
至此,基於EasyAR的第一個示例Hello World就跑起來了,雖然我們還沒有寫一行程式碼,但至少有了一個初步的感性認識。
3.2 釋出你的AR應用
接下來,仍然先不寫程式碼,來體驗下剛剛這個Demo應用釋出的效果。
(1)File - Build Settings :打開發佈設置面板,如下圖所示:
新增要釋出的場景(Scenes)、選擇要釋出的平臺(比如iOS),然後就是Build!
(2)首先來一個Windows平臺的釋出:
進入PlayerSettings,輸入一些產品相關的資訊:
開啟解析度設定:Enabled
然後就可以點選Build,生成後的檔案如下圖所示:
雙擊exe,進入應用介面,由於啟用了解析度選擇設定,會首先選擇解析度:
然後點選Play,開始AR之旅:
當然,還可以釋出為Android平臺的應用程式,如下圖所示,不過今天就到此為止,下次有機會再介紹:
三、小結
本文簡單地介紹了VR、AR以及MR三者的概念及其關係,然後通過Unity與EasyAR介紹了一個HelloAR的示例的基本配置與執行,最後介紹了一下基於Unity如何釋出AR應用程式。雖然都很簡單,而且沒有涉及到一行C#程式碼,但是可以對AR有個初步的認知,後續有機會還會分享更多我的學習經歷。
參考資料
李曄,《 Unity AR增強現實完全自學教程 》
王煜全,《 混合現實:把真實世界疊加進虛擬世界 》
百度AR平臺,《 無處不在的AR應用 》
EasyAR, https://www.easyar.cn