1. 程式人生 > >Unity 與 ARkit 開發-基礎篇

Unity 與 ARkit 開發-基礎篇

前段時間自己在網上看了許多ARkit的視訊,於是自己想做,可是後來在網上找的API幫助資訊,可是沒有比較實用的資訊,這邊轉發一篇就是想幫更多想學習做ARkit卻無從下手的朋友.

AR

AR體驗的基本需求(及ARKit框架的定義),是在使用者所處的現實世界空間與視覺化建模內容的虛擬空間之間建立對應關係的能力。當您的應用程式顯示虛擬內容與實時攝像頭影象,使用者會感受到增強的現實:產生虛擬內容是真實世界的一部分的錯覺。

VIO 視覺慣性測距
(Visual-inertial Odometry)


為了在真實空間和虛擬空間之間建立對應關係,ARKit使用一種稱為視覺慣性測距的技術。該過程會將iOS裝置的運動感應硬體捕捉的資訊(CoreMotion)與裝置相機可見的場景的計算機視覺分析相結合。



ARKit的場景理解系統和光照估計
(Scene understanding and Lighting Estimation)


平面尋找 - 使用稀疏點雲提取和建立平面



Prefabs\GeneratePlanes 和UnityARGeneratePlane.cs 可以生成平面。該指令碼監聽平面並檢測更新,再為檢測到的每個平面建立一個新平面的例項。它的特徵:

  • 水平面與重力相關

  • 在多幀間執行

  • 表面對齊程度

  • 平面合併


碰撞檢測 - 針對點雲和平面射線碰撞檢測



ARKit SDK分析相機檢視中的內容,並根據可識別的功能和估計的深度確定點數。碰撞結果按照與裝置的距離進行排序。平面優先於feature point。


光照估計 - 估計當前攝像機的環境光值,以便用真實世界的光照亮數字物體



ARKit SDK提供了對當前攝像機檢視ambient light(環境光)的估計。通過將ARKit值在UnityARAmbient.cs中統一轉換為更合適的強度來調整場景中單位光的亮度(通常為Directional Light)。這允許應用程式用真實世界的光來照亮場景中的物件。

成功遊戲案例

Pokemon GO

Niantic使用平面發現來更準確地將小寵物放在現實世界中。從幾個不同的角度觀看小寵物時更好的錨定。




Normal VR

錨定放置和陰影對映。3D人物使用通過網路從HTC Vive傳送控制器的位置。




Nedd

建立進入虛擬世界的傳送門,在現實世界中使用ARKit傳送門。


  


大家可以在Asset Store資源商店裡(https://assetstore.unity.com/pac ... world-portals-45383)找到WRLD Unity SDK外掛,可以幫助大家輕鬆地創作出擁有這樣效果的應用程式。

設定場景

基本設定由3個指令碼組成:

ARCameraManager.cs - 設定MainCamera的local position
您不應手動設定您的相機位置,該指令碼將自動設定相機的相應方向和位置。

UnityARVideo.cs - 從裝置攝像機讀取視訊
確保將相機的清除顏色設定為alpha = 0。

UnityARCameraNearFar.cs - 更新far和near clipping plane

平面尋找

GeneratePlanes.cs  - 將處理平面檢測,它將在適當的大小的場景中產生一個平面的prefab。

測試點雲
PointCloudParticleExample.cs - 將處理feature point檢測並以粒子效果的形式顯示它們。如果在將您的構建放在裝置上後不會顯示,請確保在Inspector視窗中選擇了適當的粒子效果,並且沒有更改相機的位置或方向。

光照估計
UnityARAmbient.cs -從SDK事件回撥設定光強度。

通用小技巧

1、如果您需要碰撞檢測速度更快,而不是更高的精度,您可以使用Feature points,而不是平面檢測。
2、獲得所需結果後,禁用平面檢測。平面檢測需要的計算量更大。因為放置在場景中的物件不需要一直做平面檢測,所以在獲得結果以後可以禁用平面檢測。
3、允許在應用中重置ARKit會話m_session.RunWithConfigAndOption(config, option),option可以重置上次會話。
4、使用shadowPlanePrefab在平面和現實世界中投射陰影,這將在您的AR應用程式中產生更有說服力的效果,如果表現是您的關注,您也可以使用Blob Projector。
5、使用真實世界大小。Unity中的1個單位表示一米,在放置物件和創作內容時需要考慮到這一點。如果您的物體Transform的Scale設定為10,出現多大的物件肯定會讓您感到驚訝!
6、考慮物件互動 - ARkit只有幾個簡單的功能可以使用,沿著放置的平面移動物體,遊戲或應用在手機和平板電腦上執行,最佳做法是使用觸控手勢。
7、使用ARkit Remote加速您的開發。

文章轉自:Unity3D中文官方社群  點選開啟連結