ARKit使用視覺慣性里程計(Visual lnertial Odometry愧旦,VlO)來精準追蹤周圍的世界拘泞。VlO將攝像頭的傳感器數據同Core Motion 數據進行融合流译。這兩種數據允許設置能夠精度地感測設備在房間內的動作,而且無需額外校準
場景識別與光亮估量
借助ARKit卖怜,iPhone和iPad可以分析相機界面中所呈現的場景,并在房間當中尋找水平面础爬。ARKit不僅可以檢測諸如桌子和地板之類的水平面散劫,還可以在較小特征點(featurepoints)上追蹤和放置對象。ARKit還利用攝像頭傳感器來估計算場景當中的可見光總亮度幕帆,并為虛擬對象添加符合環(huán)境照明量的光量。
高性能硬件與渲染優(yōu)化
ARKit運行在AppleA9和A10處理器上赖条。這些處理器能夠為ARKit提供突破性的性能失乾,從而可以實現快速場景識別,并且還可以讓您基于現實世界場景纬乍,來構建詳細并引入注目的虛擬內容碱茁。您可以利用Metal、Scenekit以及諸如Unity仿贬、虛幻引擎之類的第三方工具纽竣,來對ARKit進行優(yōu)化。
ARKit
ARKit將iOS設備的攝像頭和設備動作檢查(Motion)功能茧泪,集成到您的應用或者游戲當中蜓氨,從而為用戶提供增強現實體驗。
所謂的增強現實(AugmentedReality队伟,AR)穴吹,指的是向設備攝像頭產生的實時動態(tài)視圖中,添加2D或者3D元素嗜侮,然后用某種方法讓這些元素看起來就處于現實世界當中港令,所產生一種用戶體驗。ARKit提供了設備動作追蹤锈颗、相機場景捕獲和高級場景處理顷霹,并讓AR元素的展示變得極為便利,從而大大簡化了建立AR用戶體驗的工作難度击吱。
探索Ar的概念淋淀、特性,以及了解建優(yōu)秀AR場景的最佳實踐姨拥。
1.ARSession類
這是一個單例绅喉,是ARKit的核心類,用于控制設備攝像頭叫乌,處理傳感器數據柴罐,對捕獲的圖像進行分析等等
2.ARSessionConfiguration類
跟蹤設備方向的一個基本配置,在運行時憨奸,需要指定AR運行的配置
3.ARWorldTrackingSessionConfiguration
配置跟蹤設備的方向和位置革屠,以及檢測設備攝像頭所看到的現實世界的表面
4.ARCNView類
用來增強相機通過3D SceneKit所捕捉到的內容并展示AR效果的一個View
5.ARSKView類
用來增強相機通過2D SpriteKit所捕捉所捕捉到的內容并展示AR效果的一個View
6.ARAnchor類
真實世界的位置和方向,用于在一個AR場景中放置一個物體
7.ARPlaneAnchor類
在一個AR Session會話中檢測一個真實中平面的位置和方向的相關信息
8.ARHitTestResult類
在一個AR Session會話中通過檢測相機視圖中的一個點來獲取真實世界中表面的相關信息
9.ARFrame類
捕獲一個視頻圖像和位置追蹤信息作為一個AR會話的一部分
10.ARCamera類
在一個AR會話中攝像機的位置的成像特征信息為捕獲視頻幀
11.ARLightEstimate類
在一個AR會話中估計場景照明信息關聯(lián)到一個捕獲的視頻幀
Understanding Augmented Reality
探索Ar的概念、特性似芝,以及了解構建優(yōu)秀AR場景的最佳實踐那婉。
對于所有的AR場景而言,最基本要求是:創(chuàng)建并追蹤現實空間和虛擬空間之間的關系党瓮,其中详炬,現實空間是用戶所處的世界,虛擬空間是可對可視化內容進行建模的世界寞奸,這同時也是ARKit的基本特性呛谜。當您的應用將這些虛擬內容與實時視頻結合,并在一起顯示的時候枪萄,用戶就可以體驗到所謂的增加現實:您的虛擬內容成為了真實世界的一部分隐岛,盡管這只是錯覺而已。
HowWorldTrackingWorks
為了在現實世界和虛擬世界之間建立對應關系瓷翻,ARKit使用了一種被稱為視覺慣性里程計的技術聚凹。這項技術會將iOS設備的動作感測硬件信息,加上對可見場景的計算視覺分析功能齐帚,然后與設備的攝像頭相結合妒牙。ARKit將會去識別場景圖像當中的顯著特征,然后在視頻震中追蹤這些特征位置的距離童谒,然后再將這些信息與動作感測數據進行比較单旁。從而生成具備設備位置和動作特征的高精準模型。
全局追蹤(WorldTracking)同樣也可以分析和識別場景當中的內容饥伊。通過使用點擊測試(hit-testing)方法(參見ARHitTestResult類)象浑,從而找到與相機圖像中的某個點所對應的真實的世界面。如果您在Session(會話)配置當中啟用了planeDetection配置的話琅豆,那么ARKit就會去檢測相機圖像當中的水平面愉豺,并報告其位置和大小。您可以使用點擊測試所生成的結果茫因,或者使用所檢測到的水平面蚪拦,從而就可以在場景當中放置虛擬內容,或者與之進行交互冻押。
BestPractices and Limitations
全局追蹤是一項不精確的科學(inexact science)盡管在這個過程當中驰贷,經常會產生可觀的準確度,從而讓AR的體驗更加真實洛巢。然而括袒,它嚴重依賴于設備物理環(huán)境的相關細節(jié),而這些細節(jié)并不總是一致稿茉,有些時候也難以實時測量锹锰,這也就導致這些物理細節(jié)往往都會存在某種程度的錯誤芥炭。要建立高品質的AR體驗,那么請注意下述這些注意事項和提示:
基于可見的照明條件來設計AR場景恃慧。全局追蹤涉及到了圖像分析的相關內容园蝠,因此就需要我們提供清晰的圖像。如果攝像頭沒有方法看到相關的物理細節(jié)痢士,比如說攝像頭拍到的是一面空空如也的墻壁彪薛,或者場景的光線實在太暗的話,那么全局追蹤的質量就會大大降低怠蹂。
根據追蹤質量的相關信息來給用戶進行反饋提示陪汽。全局追蹤會將圖像分析與設備的動作模式關聯(lián)起來。如果設備正在移動的話褥蚯,那么ARKit就可以更好地對場景進行建模,這樣即便設備只是略微晃動况增,也不會影響追蹤質量赞庶。但是一旦用戶的動作過多、過快或者晃動過于激烈澳骤,就會導致圖像變得模糊歧强,或者導致視頻幀中要追蹤的特征之間的距離過大,從而致使追蹤質量的降低为肮。ARCamera類能夠提供追蹤狀態(tài)摊册,此外還能提供導致該狀態(tài)出現的相關原因,您可以在UI上展示這些信息颊艳,告訴用戶然后解決追蹤質量低這個問題茅特。
給水平面檢測預留點時間來上成清晰的結果,一旦您獲得所需的結果后棋枕,就禁用水平面檢測白修。一開始對水平面進行檢測的時候,所檢測到的水平面位置和范圍很可能不準確重斑。不過隨著時間的推移兵睛,只要仍然保持在場景當中,那么ARKit就能夠較為精準地估計水平面的位置和范圍窥浪。當場景中有一個比較大的平坦表面的話祖很,就算您已經使用過這個水平面來放置內容,那么ARKit可能還會繼續(xù)對水平面的錨點位置漾脂、范圍和變換點進行修正假颇。