記得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