好久不見,AR發展怎麼樣了?

語言: CN / TW / HK

theme: juejin

好久不見,AR發展怎麼樣了

三年又三年,當初火爆的虛擬技術是不是已經銷聲匿跡了?本文將帶領讀者瞭解當下的AR技術發展現狀,並簡單介紹涉及AR的關鍵技術,最後將手把手示意如何運行起來一個AR Demo。如有幫助請不吝點贊、評論、留言。

一、虛擬現實技術簡介

1.1 AR/VR/MR概念區分

AR(Argumented Reality): 對現實的一種增強,設備對現實識別(形狀、位置、動作、邊緣),從而將虛擬信息疊加在現實中。

*playground AR遊戲(圖片來自蘋果應用商店)*

VR(Virtual Reality): 沉浸式虛擬現實,對用户提供一個完全的虛擬世界,不必考慮現實世界的情況。

*world of diving遊戲(圖片來自網絡)*

MR(Mixed Reality): 混合虛擬技術,將現實環境和虛擬環境進行合併。MR會增強視覺(修改現實物體),比如醫學上使用MR技術來透視人體,使醫生在視覺上能看到體內的血管,更精準的完成外科手術。很多人覺得MR只是一個新的概念炒作,本質還是AR。

*查看身體上的血管(圖片來自網絡)*

文章撰寫時是2021年12月,此時VR技術和設備已經初見雛形,比如各種VR遊戲,以及具備消費級成熟度的OculusQuest 2設備,基於以上生態元宇宙概念被熱炒。

相比VR,要達到成熟的消費級體驗,AR還有很多技術困難。本文主要討論AR的發展脈絡及現狀,VR技術不在主要的討論的範疇裏。

1.2 AR歷史發展及現狀

  • AR歷史的開端

1992波音公司研究員提出了AR的這個詞組,此後幾年AR的概念慢慢火熱了起來,不過一直處於實驗室的範疇。

  • 第一個AR SDK

到1999年,Kato Hirokazu主導了AR Toolkit項目,可以做2D物體識別,並讓虛擬物體跟隨實體物體行動。2000年,ARToolkit項目開源,2005年,它支持塞班系統,成為世界上第一個移動端開源AR-SDK。2008年開始,它陸續支持了IPhone和Android。截止到2021年12月,ARToolkit支持世界上大部分流行的平台,並且可以集成到Unity平台,相互配合開發AR遊戲。

  • 第一個AR體感遊戲

2003年索尼在Playstation上發行EyeToy,通過外置攝像頭檢測玩家的動作,來進行遊戲互動。一時間體感AR遊戲大行其道。

  • 引爆AR概念的Google Glass

雖然AR技術一直在穩步發展,但是真正將AR概念帶入普通大眾的當屬Google Glass。Google Glass利用的是光學反射投影原理(HUD),微型投影儀將光投到一塊反射屏上,而後通過一塊凸透鏡折射到人體眼球,實現所謂的“一級放大”,在人眼前形成一個足夠大的虛擬屏幕,可以顯示簡單的文本信息和各種數據

*這張圖片我覺得不會侵權*

雖然Google Glasss更多意義上只是一個“戴在臉上的手機”,很多AR領域涉及的技術,諸如環境檢測,用户交互技術並不涉及。但是它涉及了AR顯示技術,將光線信息投射到了眼球。因此它的出現引起了人們的廣泛討論,一個是可穿戴設備,一個是AR技術。

  • AR界的第一代黑科技——HoloLens

2015年微軟發佈了震驚世界的AR頭戴式設備HoloLens,它能檢測外界環境,將虛擬物體和顯示環境融合,並且它通過追蹤用户手勢來完成交互。這是真正意義上的第一款相對成熟的AR設備,它體積小,具備獨立的計算和儲存能力,穿戴時不影響用户查看外界環境。2019年,微軟發佈HoloLens 2解決了第一代設備視野狹小的問題,並且大幅度提升了手勢追蹤的準確性。

*輔助工業設計(圖片來自網絡)*

HoloLens2雖然相對成熟,但是成本居高不小,截止到本文成稿,售價高達3500美元。另外,雖然它相對其他AR設備體積較小,但仍舊重達500g,iPhone 12重 152g,一般用户很難接受將三台手機戴在頭上的重量。好消息是,微軟透露HoloLens3 重量將小於90克。

  • AR界的其他玩家

被大眾廣泛質疑為”PPT騙子公司“的Magic Leap 2017年發佈第一代產品Magic Leap One。此外,蘋果和三星都傳聞要在2022年發佈旗下的AR眼鏡。國內企業有酷派的Xview系列、亮亮視野、阿里釘釘NrealLightAR推出了AR產品設備。

*蘋果智能眼鏡概念圖(圖片來自網絡)*
  • AR界的標誌性遊戲

Niantic 公司在2017發佈了 Pokémon Go 遊戲,這款基於LBS的遊戲火遍全球,發行首月流水超2億美元,上市3年後總流水達26.5億美元。Pokémon Go的成功迅速引爆了AR遊戲行情。此後AR遊戲不斷湧現,比如建造類、下棋類等。

*pockmon go和My Country遊戲界面(圖片來自網絡)*
  • 移動端AR的流行SDK

目前移動端AR SDK碎片化比較嚴重,國外國內產生了幾十個不同sdk,下面將列舉一些有重要影響力的sdk。

  • 蘋果的ARKit:2017發佈截至目前,被認為性能最強的,最具商業潛力的sdk。配合SceneKit 、SpriteKit、RealityKit等蘋果的框架庫可以開發出非常炫酷的app,優點是幾乎所有iOS設備可以無縫使用(iOS 11.0+,iPhone 6s+)。
  • Google ARCore:同時支持Android和iOS,因為對硬件沒有控制力,綜合衡量比不上ARKit,但是對於消費者來説沒有顯著差別。
  • 歷史悠久的ARToolkit:前文已經有介紹,開源社區不是很活躍。
  • 商業化sdk Vuforia:性能表現很不錯,支持Android、iOS、UWP,如果可以它底層會使用ARKit或ARCore,如不過不滿足使用條件,它會使用自帶的AR引擎能力。
  • 國內有影響力的AR公司:商湯公司的SenceAR,太虛AR、老子云等。

大部分SDK都支持成為Unity裏面的一個開發插件,同時Unity官方為了減輕開發者的sdk學習成本,將包括ARkit、ARCore在內的多個sdk再次封裝成了ARFoundation SDK,當然這個SDK只適合在Unity編輯器裏面開發。

1.3 現狀總結和展望

目前AR技術還有很多痛點,主要集中在以下幾個方面:

  1. 檢測環境的計算量很大,因此實時性不好,很多設備一旦快速移動,虛擬物體和環境的融合就會產生漂移誤差。
  2. 耗電發熱,計算和攝像頭頻繁使用使得AR設備續航較低,大部分都低於5小時。
  3. 穿戴式ar顯示技術未成熟,大部分設備在清晰度、視野、體驗性上都有些不足,甚至會產生一定發“暈動症”。
  4. 體積沒有小型化,即使蘋果眼鏡的渲染圖,也比普通眼鏡笨重得多。
  5. 軟件生態不成熟。

基於以上原因,AR生態整體用户規模相比VR較小,AR眼鏡主要應用在B端的企業定製化領域中,比如醫療、軍工、遠程協助等。移動端AR內容應用主要集中於工具、遊戲兩大類別,而且大部分只適合“慢移動速”、“地圖環境狹小(室內)”的應用場景。

5G技術的發展被人們認為是AR技術的一個重大助推基建,基於雲計算的理念,5G帶來的高傳輸速度可以讓AR設備架構發生改變:即放棄計算結構,將計算任務由雲資源負責,AR設備只負責攝入和顯示畫面。這樣一來,AR設備將能克服計算性能、耗電、發熱、體積大等缺點。

二、AR領域的關鍵技術簡介(學點原理)

2.1 探知環境的技術(自我定位、檢測3D物體、環境建模)

AR技術的第一個獨特的技術就是設備如何去“理解”外界環境,大部分AR技術都是將外界環境記錄成“點陣雲”,比如一個3D物體,設備會去識別它的邊緣、尺寸、以及一些關鍵的特徵點。這些點加上深度信息(或者説距離信息)就成了立體的三維座標,多個點就組成了“點陣雲”。一般來説建立整個環境地圖的建模的流程如下:

  1. 用户抵達一個新場所,開啟攝像頭。
  2. 設備根據陀螺儀等傳感器確定自己的高度、朝向,並以此為空間座標系原點。
  3. 識別用户攝像頭輸入,進行“點陣雲”建模。
  4. 用户到處移動,直至整個地圖被掃描建模完成。

上述流程有一個專業的名詞,即SLAM(Simultaneous Localization And Mapping,時定位與地圖構建),在機器人領域得到廣泛的應用,比如掃地機器人、送餐機器人等。

SLAM技術中有一個關鍵的技術點,即如何獲得一個點的深度信息(距離信息)。業界有以下幾種方案:

  • 雙目匹配(兩個攝像頭)

這個是學習人眼獲取深度信息的一種模式,因為人有兩隻眼睛,通過兩隻眼睛看到的圖像做對比,即可計算出物體離人眼的距離。因此雙目匹配就是用兩個攝像頭拍攝畫面,利用物體在兩幅畫面的橫座標之差來計算距離,下圖是一個概念示意圖,真實情況沒這麼簡單。

*雙目匹配計算距離概念示意圖*
  • 單目測距

人閉上一隻眼睛也能獲得物體的遠近信息,這個是怎麼做到的呢?主要是通過生活經驗積累再輔助一些眼球肌肉記憶。這個“經驗”對應到程序裏就是訓練出來的算法模型。蘋果公司就在單目測距上有很深的積累,很多老式機器只有一個攝像頭,蘋果公司也能通過圖像算法識別物體的遠近。這個方案是最節省成本的一個方案,無縫適配現存大部分設備。

  • 深度攝像頭

利用激光雷達或結構光(RGB-D)在物體表面的反射獲取深度點雲;利用紅外線照射到物體上,測量ToF時間等。大部分掃地機器人都採用了深度攝像頭來探測地形。iPhone12 Pro系列在攝像頭下面多了一個LiDar激光雷達,它使用激光來判斷距離和深度

*掃地機器人利用深度攝像頭來探測地形*

SLAM技術在各行各業都有廣泛的應用,不止侷限在AR領域,比如自動駕駛、3D建模、機器人,無人機都是SLAM的應用領域。

2.2 顯示技術(HMD\光場成像\全息投影)

AR的另一個關鍵技術就是顯示技術,主要分為三類:

  • 視覺差顯示技術

原理和3D電影一樣,利用兩個眼睛看到不同的圖像形成視覺差。利用兩個不同的顯示器或者光線投射器,使得左右眼看到同一個物體的不同視角的圖像,人的大腦會將兩幅圖像合併從而獲得“立體感”。

  • 全息投影技術

全息投影技術可以通過將光線投射在空氣或者特殊的介質(如玻璃、全息膜)上呈現3D影像。人們可以從任何角度觀看影像,得到與現實世界中完全相同的視覺效果。目前很多舞台都利用了全息投影技術,比如中國春晚、初音未來演唱會等。

*初音未來演唱會*
  • 光場成像技術

不利用視覺差,設備直接向人的眼球投射一個3D物體光線場,模擬大自然最真實的光線反射情況。這個概念來自Magic Leap 公司2015年的宣傳視頻,當然後面被證實該視頻系後期合成。Magic Leap憑藉這個技術概念獲得了無數投資機構青睞,市場估值高達45億美元,投資機構包括了谷歌、阿里巴巴、高通等知名企業機構。截止到2021年12月份,Magic仍舊沒有拿出任何一款光場成像技術設備,因此被業界廣泛質疑和批評。

*Magic Leap的裸眼AR概念視頻*

顯示技術關乎AR的最直接體驗感受,目前市面上的AR設備都沒有做到“自然級”的體驗。長時間使用都會讓人產生不適,如果光場成像技術能夠成熟,那人觀察AR物體的匯聚距離和聚焦距離就會一致,有效緩解“暈動症”問題。

2.3 交互技術

目前為止,除了傳統的觸摸,按鍵、語音等技術,AR大致有3個方向的虛擬交互技術:

  • 動作捕捉: 主要是手部動捕捉,目前Hololens2在這一塊上技術積累最雄厚,不需要任何外設,直接通過手勢就可以流暢操控設備。
*Hololens 2的手勢追蹤示意*
  • 眼動追蹤: 使用攝像頭捕捉人眼或臉部的圖像,然後用算法實現人臉和人眼的檢測、定位與跟蹤,從而估算用户的視線變化。目前市面上已經出現了多款成熟的眼動儀,配合眼動儀可以更方便的玩3D遊戲,比如通過視線轉動就可以移動鏡頭,不再需要鼠標移動。眼動追蹤還有很多應用場景,比如測謊儀、專注力檢測等。不少遠程教育公司準備使用眼動儀來判斷學生是否在專注的聽老師講課。
*眼動追蹤-定位人的瞳孔*
  • 腦機接口: 通過識別大腦活動電信號來操控設備,馬斯克旗下的Neuralink公司通過向大腦植入十分之一發絲粗細的神經線,來檢測和傳輸大腦的信號。這個方案相比無植入方案信號檢測和處理更加靈敏和準確。下圖是Neuralink公司展示的猴子通過腦機接口玩電子遊戲的視頻,傳送門在此
*Youtube視頻-猴子通過腦機接口玩遊戲*

這些交互技術看起來都十分激動人心,不光能應用於AR,VR領域同樣適用。筆者認為,我們正處於一個大時代來臨的前夜,接下來十年將產生遠比移動互聯網普及更劇烈的變化(2021年10月28日Facebook正式改名為Meta)。

三、開發者技術入門

3.1 技術選型

目前頭戴式設備並不普及,各個廠商各玩各的,微軟Hololens2是當前最強的頭戴式AR設備,它的開發方式是Unity+MRTK插件,目前Hololens主要用在企業級的場景中,如果想在這個平台上創業,建議深耕一個應用場景,比如軍工、遠程協助等。其他的AR頭戴式設備暫時可以放棄,坐等大玩家入場(蘋果、三星等)。

移動端AR應用開發者建議分別抱緊Google和蘋果的大腿,根據1.2節中的介紹,可以分別學習ARCore和ARKit兩個SDK。這兩個SDK理論上也會被將來的AR頭戴式設備所使用,所以這時候入場並不是白費工作。

跨平台開發者建議Unity平台,使用Unity官方封裝好的ARFoundation SDK,屏蔽掉平台差異。

3.2 AR SDK普遍具備的功能

下表來自於Unity官網(略作文字翻譯梳理),很好的概括了大部分AR SDK具備的功能,開發者通過這個表可以初窺AR是怎麼運作的。

| 功能 | 描述 | | ------------ | ------------------------------------------------ | | 設備跟蹤 | 跟蹤當前設備在物理空間中的位置和方向。 | | 射線投射 | 通常用於確定虛擬內容的顯示位置,即投射一條虛擬線條,來確定虛擬物體和真實物體的相對位置。 | | 平面檢測 | 檢測水平和垂直表面(例如咖啡桌、牆壁)的大小和位置。這些表面被稱為“平面”。 | | 參考點(特徵點) | 跟蹤平面和特徵點隨時間變化的位置。 | | 點雲檢測 | SLAM中的重要機制,參考前文2.1節 | | 手勢 | 根據人的手,將手勢識別為輸入事件。 | | 面部識別 | 檢測人臉,比如出現人臉就啟動AR效果附着在臉上。 | | 2D 圖像跟蹤 | 檢測環境中的特定 2D 圖像。比如識別到一張特定二維碼就啟動AR效果 | | 3D 對象跟蹤 | 同理於上 | | 環境探測 | 檢測環境特定區域中的光照和顏色信息,這有助於使AR內容更好的與環境融合,比如產生陰影等。 | | 網格 | 生成與物理空間相對應的三角形網格,因此更能夠與物理環境的表示形式進行交互和/或在視覺上覆蓋細節。 | | 2D 和 3D 人身跟蹤 | 無需多説,自行體驗。 | | 距離和遮擋 | 將到物理世界中對象的距離應用於渲染的 3D 內容,從而實現物理對象與虛擬對象的逼真混合。 | | 多設備跟蹤 | 在同一個 AR 會話(遊戲)中共享和顯示其他AR設備的位置。

3.2 ARFoundation SDK嚐鮮(Mac+iOS)

筆者是Android開發者,但是手頭沒有支持AR的設備,因此選擇iOS來嚐鮮AR,先把必要的工具下載好:

  • Unity:需要註冊一個Unity ID,類似Apple ID的作用,如果只是學習使用,可以下載Unity 個人版本(建議使用UnityHub來下載和管理Unity)。
  • Xcode:Unity編譯過程會先生成一個Xcode工程,然後由用户在Xcode中配置參數來編譯最終app。
  • Visual Studio Code及其配套插件:Unity沒有代碼編輯能力,點擊腳本會默認跳到用户設置的編輯器去編寫代碼。

開始新建一個項目:

  1. 通過UnityHub來新建項目,默認有一個AR工程模板。

  1. Unity新建完成後可以看到左上角已經默認建立了一個Scene,裏面包含了AR Session Origin和AR Session。

  1. 工程新建完成後,在Unity File->Build Setting中切換目標編譯平台為iOS。
  1. 上圖繼續點擊Player Settings..,選擇在啟動時安裝AR套件。

  1. 通過閲讀demo代碼(C#),可以發現此demo的功能是檢測平面,並且用户點擊某處平面可以放置一個物體。

  1. 此處demo功能其實沒有完善,點擊放置的物體沒有創建和設置,在Unity中創建一個Cube預製體,並拖動到AnchorCreator.cs腳本的成員變量上(不要慌,這個就是Unity的機制)。

  1. 終於可以開始編譯運行了,點擊Unity中File->Build AndRun,會默認生成一個Xcode工程,並自動打開Xcode,在Xcode裏面登錄AppleId用於真機調試,並配置好籤名等信息。

  1. 運行效果如下,首先地毯被檢測出來是一個平面,上面打滿了一個個白點。點擊地毯創建了一個Cube在地面上,再次點擊又創建了一個。

限於篇幅和精力(偷懶?),demo有關內容將不再深入展開。讀者可以自行嘗試如下內容:

  • 將這個屎黃色的Cube替換成更漂亮的AR物體,比如一個小恐龍、一個坦克、一條奶狗。
  • 為AR物體添加一些簡單交互事件,比如跟隨你的設備隨機移動(遛狗?)。
  • 來一些遊戲交互,比如點擊坦克,它就發射子彈。

如果讀者有需求可在評論區留言,筆者將視需求情況再出一篇文章詳細介紹如何實現更多的AR效果。

總結

目前AR技術已經具備相當的成熟度,筆者非常期待2022年蘋果和三星將要上市的AR眼鏡,屆時可能正式開啟萬物AR的時代。移動互聯網風口你沒有抓住,不妨在AR或者VR風口上分一杯羹。有人會擔心此時入場會不會做無用功(炮灰)?筆者認為不會,開發者、交互設計師可以先在移動端AR/VR上積累經驗。AR/VR的交互方式和技術都顯著不同,這些的積累的經驗和技術是可以複製到AR眼鏡上去的,眼鏡完全可視為一個戴在臉上的手機,不是嗎?

現在,不管是蘋果的技術還是Google的技術都已經進入到一個穩定階段,而且AR眼鏡會繼續使用現有的SDK技術,因此開發者現在入場是一個不錯時機。

那麼站在一個普通開發者角度,我們應該儲備哪些技術呢?

  • Unity技術棧(C#):不管是不是開發遊戲,Unity都是必學的,十分適合構建3D內容。
  • ARKit SDK技術棧(蘋果生態不多説):消費級市場最龐大的技術棧,想掙錢不能離開它。
  • Hololens技術棧(C#):可選,地表最強AR穿戴式設備,你不能忽視它突然爆發的可能性,而且賽道很新(後浪拍死前浪的機會?)
  • ARCore SDK(JAVA+kOTLIN):可選,跟你學Android的理由一樣,佔據設備多,門檻低,應用領域極廣,最具就業潛力的技術棧,將來也許你去開發機器人AR程序也説不定,是不?

筆者目前比較偏愛Unity+ARKit生態(缺錢),因此會在這方面持續深耕,如有需要、疑問請在評論區留言。

參考文檔

web與虛擬現實之webAR:http://kstack.corp.kuaishou.com/article/4334

快手萬物AR:http://mp.weixin.qq.com/s/0LcJwlJorFKAOZMOApCOcA

AR和MR的區別:http://www.zhihu.com/question/39157545

蘋果AR發展史:http://zhuanlan.zhihu.com/p/420474476

AR開發入門之總篇:http://zhuanlan.zhihu.com/p/87017830

ARToolkit簡介:http://www.cnblogs.com/polobymulberry/p/5857372.html

單目深度領域研究:http://www.zhihu.com/question/38684776/answer/84746440

單目視覺測距前世今生:http://zhuanlan.zhihu.com/p/56263560

Magic Leap的光場技術探祕:http://www.zhihu.com/question/42905291/answer/107874437

眼動追蹤技術:http://zhuanlan.zhihu.com/p/101479231

Unity中文社區課堂:http://learn.u3d.cn/

Unity官方文檔:http://docs.unity3d.com/cn/current/Manual/UnityManual.html

Unity B站官方:http://space.bilibili.com/386224375/channel/series

hi, 我是快手電商的雲台

快手電商無線技術團隊正在招賢納士🎉🎉🎉! 我們是公司的核心業務線, 這裏雲集了各路高手, 也充滿了機會與挑戰. 伴隨着業務的高速發展, 團隊也在快速擴張. 歡迎各位高手加入我們, 一起創造世界級的電商產品~

熱招崗位: Android/iOS 高級開發, Android/iOS 專家, Java 架構師, 產品經理(電商背景), 測試開發... 大量 HC 等你來呦~

內部推薦請發簡歷至 >>>我們的郵箱: [email protected] <<<, 備註我的花名成功率更高哦~ 😘