Unity與ARKit插件實踐評測總結

UnityARKit插件實踐評測總結

ARKit 概況和研究實踐技術分析

ARKit是蘋果在 2017 WWDC 發佈的一款全新的增強現實框架技術產品.

ARKit 可以將 iOS 設備的攝像頭和設備動作檢測 (Motion) 功能,集成到您的應用或者遊戲當中,從而爲用戶提供增強現實體驗。

這裏主要介紹Unity-ARKit插件集成到unity的功能和表現,可以在Unity項目中使用ARKit SDK的所有功能官方已上傳到Unity的AssetStory並且在持續優化更新中.

unity ARKit下載地址https://www.assetstore.unity3d.com/en/#!/content/92515

官方unity ARkit支持https://forum.unity3d.com/threads/arkit-support-for-ios-via-unity-arkit-plugin.474385/

ARKit 基礎技術

1視覺慣性里程計,並在房間當中尋找水平面(核心特色)

ARKit 使用視覺慣性里程計 (Visual Inertial Odometry, VIO) 來精準追蹤周圍的世界。VIO 將攝像頭的傳感器數據同ARKit 內置算法數據進行融合。這種數據允許設備能夠高精度地感測設備在房間內的動作,而且無需額外校準。

應用表現 ARKit,iPhone 和 iPad 可以分析相機界面中所呈現的場景,並在房間當中尋找水平面。ARKit 不僅可以檢測諸如桌子和地板之類的水平面,還可以在較小特徵點 (feature points) 上追蹤和放置對象。

2光亮估量

ARKit利用攝像頭傳感器來估算場景當中的可見光總亮度,可爲虛擬對象添加符合環境照明量的光量。

3高性能硬件與渲染優化(有硬件和系統限制)

ARKit 運行在 Apple A9 和 A10 處理器上,要求IOS 11、iPhone6s、ipad 2017或之後版本。

這些處理器能夠爲 ARKit 提供突破性的性能,可以實現快速場景識別、可以基於現實世界場景,來構建更高質量的虛擬內容


ARKit與其它AR SDK對比 

現在主流的AR SDK產品主要有easyAR、vuforia、亮風臺(HiAR)、ARKit。

它們都具有的基本特性,可以創建並追蹤現實空間和虛擬空間,其中,現實空間是用戶所處的世界,虛擬空間是可對可視化內容進行建模的世界這樣可以實現一些虛擬模型與攝像機獲取的現實世界的展示效果,如圖,虛擬模型與現實場景進行融合展示效果。



其它SDK具有的特色:平面圖像、3D物體跟蹤識別功能,easyAR、HiAR平臺支持雲識別。

ARKit具有的特色功能:識別現實平面功能和獲取現實光照功能。即上面介紹的基礎技術特性。

Unity -ARKit插件分析

Unity-ARKit官方提供的demon 展示功能和特性解析,根據官方介紹、演示的Demon和研究實踐,Unity-ARKit現階段主要涉及到的技術有:

1世界跟蹤

初始化時ARKit會生成一個三維的世界座標系(相當於unity的座標系)如圖,定義原點(000)即爲初始的ARKit攝像機對應的位置點。其他虛擬的物體空間座標點都可以參考此爲世界座標原點進行規劃。




2實時視頻渲染

ARKit默認打開設備的攝像頭,可以在展示現實場景的同時渲染展示虛擬物體,如圖3,展示的現實場景與虛擬場景結合效果。並且攝像頭會把當前實時畫面數據傳輸到ARKit SDK中進行處理,SDK處理功能包括識別返回較小特徵點 (feature points) 數據、識別返回平面數據、識別返回環境光數據,並且這些數據是實時更新獲取的,根據這些數據和功能我們就可以與unity遊戲相結合,實現AR產品和創意。


(圖3)(圖4)(圖5)

3平面估計和更新(核心特色)

攝像頭會把當前實時畫面數據傳輸到ARKit SDK中進行處理後,相關API可以獲取生成的平面數據,如:平面在空間座標矩陣的位置,大小,方向等。並且攝像機在不斷掃描平面或物體時,平面的數據信息會不斷更新和融合,ARKit可以掃描和生成多個平面,多個平面在掃描當中如確定是同一平面,它會把多個平面合併成一整塊平面,如圖5。這個核心功能的缺陷和注意事項在下面會詳細介紹說面。

4命中測試的API

在攝像機開啓時,ARKit可以識別特徵點(現實物體的平面點),圖中的黃色點。示例中點擊手機攝像機中的現實物體可以放置虛擬物體在平面上(不至於懸空),如圖4

5環境光估計

ARKit可以收集攝像機現實的光源信息並返回,所以調用相關API表現爲虛擬物體隨着現實化境的光照強度改變,它會變亮或產生陰影。


ARKit識別平面缺陷

ARKit識別掃描儘管在這個過程當中,經常會產生可觀的準確度,從而讓 AR 的體驗更加真實。然而,它嚴重依賴於設備物理環境的相關細節,而這些細節並不總是一致,有些時候也難以實時測量,這也就導致這些物理細節往往都會存在某種程度的錯誤。要建立高品質的 AR 體驗,那麼請注意下述這些注意事項和提示

1基於可見的照明條件來設計 AR 場景。全局追蹤涉及到了圖像分析的相關內容,因此就需要我們提供清晰的圖像。如果攝像頭沒有辦法看到相關的物理細節,比如說攝像頭拍到的是一面空空如也的牆壁,或者場景的光線實在太暗的話,那麼全局追蹤的質量就會大大降低。

2根據追蹤質量的相關信息來給用戶進行反饋提示。全局追蹤會將圖像分析與設備的動作模式關聯起來。如果設備正在移動的話,那麼 ARKit 就可以更好地對場景進行建模,這樣即便設備只是略微晃動,也不會影響追蹤質量。但是一旦用戶的動作過多、過快或者晃動過於激烈,就會導致圖像變得模糊,或者導致視頻幀中要追蹤的特徵之間的距離過大,從而致使追蹤質量的降低。ARCamera 類能夠提供追蹤狀態,此外還能提供導致該狀態出現的相關原因,您可以在 UI 上展示這些信息,告訴用戶如何解決追蹤質量低這個問題。

3水平面檢測預留點時間來生成清晰的結果,一旦您獲得所需的結果後,就禁用水平面檢測。一開始對水平面進行檢測的時候,所檢測到的水平面位置和範圍很可能不準確。不過隨着時間的推移,只要水平面仍然保持在場景當中,那麼 ARKit 就能夠較爲精確地估計水平面的位置和範圍。當場景中有一個比較大的平坦表面的話,就算您已經使用過這個水平面來放置內容,那麼ARKit 可能還會繼續對水平面的錨點位置、範圍和變換點進行修正 。

ARKit與unity結合原理




根據這張ARKitunity結合原理圖片,我們可以分析出,很多遊戲功能都可以整合成AR項目。只需把當前AR所支持的功能特性和unity引擎的功能特性進行融合就可以各種開發與創新。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章