Unity與ARkit 開發-基礎篇
上一周Unity官方技術團隊為大家帶來直播課程《Unity中使用ARKit》,今天Unity技術經理馬瑞將為大家分享使用Unity與ARKit開發AR遊戲的的一些基礎及通用小技巧。
AR
AR體驗的基本需求(及ARKit框架的定義),是在用戶所處的現實世界空間與可視化建模內容的虛擬空間之間創建對應關係的能力。當您的應用程序顯示虛擬內容與實時攝像頭圖像,用戶會感受到增強的現實:產生虛擬內容是真實世界的一部分的錯覺。
VIO 視覺慣性測距
(Visual-inertial Odometry)
為了在真實空間和虛擬空間之間創建對應關係,ARKit使用一種稱為視覺慣性測距的技術。該過程會將iOS設備的運動感應硬體捕捉的信息(CoreMotion)與設備相機可見的場景的計算機視覺分析相結合。
ARKit的場景理解系統和光照估計
(Scene understanding and Lighting Estimation)
平面尋找 - 使用稀疏點雲提取和創建平面
PrefabsGeneratePlanes 和UnityARGeneratePlane.cs 可以生成平面。該腳本監聽平面並檢測更新,再為檢測到的每個平面創建一個新平面的實例。它的特徵:
水平面與重力相關
在多幀間運行
表面對齊程度
平面合併
碰撞檢測 - 針對點雲和平面射線碰撞檢測
ARKit SDK分析相機視圖中的內容,並根據可識別的功能和估計的深度確定點數。碰撞結果按照與設備的距離進行排序。平面優先於feature point。
光照估計 - 估計當前攝像機的環境光值,以便用真實世界的光照亮數字物體
GIF/698K
ARKit SDK提供了對當前攝像機視圖ambient light(環境光)的估計。通過將ARKit值在UnityARAmbient.cs中統一轉換為更合適的強度來調整場景中單位光的亮度(通常為Directional Light)。這允許應用程序用真實世界的光來照亮場景中的對象。
成功遊戲案例
1
Pokemon GO
Niantic使用平面發現來更準確地將小寵物放在現實世界中。從幾個不同的角度觀看小寵物時更好的錨定。
GIF/845K
2
Normal VR
錨定放置和陰影映射。3D人物使用通過網路從HTC Vive發送控制器的位置。
GIF/979K
3
Nedd
創建進入虛擬世界的傳送門,在現實世界中使用ARKit傳送門。
GIF/1059K
GIF/1031K
大家可以在Asset Store資源商店裡(https://assetstore.unity.com/packages/tools/particles-effects/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事件回調設置光強度。
通用小技巧
如果您需要碰撞檢測速度更快,而不是更高的精度,您可以使用Feature points,而不是平面檢測。
獲得所需結果後,禁用平面檢測。平面檢測需要的計算量更大。因為放置在場景中的對象不需要一直做平面檢測,所以在獲得結果以後可以禁用平面檢測。
允許在應用中重置ARKit會話m_session.RunWithConfigAndOption(config, option),option可以重置上次會話。
使用shadowPlanePrefab在平面和現實世界中投射陰影,這將在您的AR應用程序中產生更有說服力的效果,如果表現是您的關注,您也可以使用Blob Projector。
使用真實世界大小。Unity中的1個單位表示一米,在放置對象和創作內容時需要考慮到這一點。如果您的物體Transform的Scale設置為10,出現多大的對象肯定會讓您感到驚訝!
考慮對象交互 - ARkit只有幾個簡單的功能可以使用,沿著放置的平面移動物體,遊戲或應用在手機和平板電腦上運行,最佳做法是使用觸摸手勢。
使用ARkit Remote加速您的開發。
結語
點擊展開全文
※Made With Unity遊戲欣賞
※VR電影《Zero Days》帶你進入黑客帝國
※Unity平台家族再添新成員:Xbox One X
TAG:Unity中國 |