前言
在2017年6月絮识,蘋果2017年的WWDC大會(huì)上發(fā)布了全新的iOS11系統(tǒng),我們可以先體驗(yàn)一下它的beta版惰爬,在9月19日就有正式版上線了辖试。當(dāng)然在新的iOS11系統(tǒng)中辜王,我們比較關(guān)注的就是新增了ARKit和文件管理系統(tǒng)。本文主要是跟著蘋果的官方Document來(lái)學(xué)習(xí)一下ARKit罐孝。
AR是什么呐馆?
AR(Augmented Reality,即增強(qiáng)現(xiàn)實(shí))莲兢,透過(guò)攝影機(jī)影像的位置及角度精算并加上圖像分析技術(shù)摹恰,讓屏幕上虛擬世界能夠與現(xiàn)實(shí)世界場(chǎng)景進(jìn)行結(jié)合與互動(dòng)辫继。這種技術(shù)估計(jì)于1990年提出。隨著隨身電子產(chǎn)品運(yùn)算能力的提升俗慈,增強(qiáng)現(xiàn)實(shí)的用途也越來(lái)越廣姑宽。(摘自維基百科)
那么ARKit帶給我們什么呢?
這里有一段蘋果給我們提供的視頻(要用Safari打開)闺阱。
主要的功能大概有以下幾個(gè):視覺慣性里程計(jì)炮车、場(chǎng)景理解和照明估計(jì)、高性能硬件和渲染優(yōu)化酣溃。
視覺慣性里程計(jì)
在機(jī)器人和計(jì)算機(jī)視覺問(wèn)題中瘦穆,視覺里程計(jì)就是一個(gè)通過(guò)分析處理相關(guān)圖像序列來(lái)確定機(jī)器人的位置和姿態(tài)。(摘自維基百科)
里程計(jì)我們知道它是記錄距離的赊豌,但在機(jī)器人和計(jì)算機(jī)視覺的領(lǐng)域扛或,不僅僅要知道行駛的距離,而且要知道機(jī)器人行駛的整個(gè)軌跡(即機(jī)器人每個(gè)時(shí)刻的位置和姿態(tài))碘饼。假設(shè)在時(shí)間t時(shí)刻熙兔,機(jī)器人的位置和姿態(tài)信息是(xt,yt,zt,ψt,χt,?t),其中xt,yt,zt表示機(jī)器人在世界坐標(biāo)系中的位置信息艾恼,ψt,χt,?t表示機(jī)器人的姿態(tài)住涉,分布表示為roll(ψt), pitch(χt),yaw(?t)。
確定機(jī)器人軌跡的方法有很多钠绍,我們這里主要用的是視覺慣性里程計(jì)舆声。將一個(gè)攝像頭(或多個(gè)攝像頭)剛性連接到一個(gè)移動(dòng)的物體上(如機(jī)器人),通過(guò)攝像頭采集的視頻流來(lái)確定相機(jī)的六個(gè)自由度柳爽。如果使用一個(gè)攝像頭媳握,則稱為單目視覺里程計(jì),如果使用兩個(gè)(或者更多)攝像機(jī)磷脯,則稱為立體視覺里程計(jì)蛾找。
ARKit 使用視覺慣性里程計(jì) (VIO) 以精準(zhǔn)地追蹤四周的環(huán)境。VIO 能結(jié)合相機(jī)傳感器數(shù)據(jù)與 CoreMotion 數(shù)據(jù)争拐,這兩份數(shù)據(jù)讓設(shè)備無(wú)需額外的校準(zhǔn)腋粥,就能以高精度來(lái)感測(cè)它在房間內(nèi)的移動(dòng)晦雨。
場(chǎng)景理解和照明估計(jì)
使用 ARKit架曹,iPhone 和 iPad 可以分析相機(jī)視圖呈現(xiàn)的場(chǎng)景,并在房間中找到水平面闹瞧。 ARKit 可以檢測(cè)桌子和地板等水平面绑雄,并能跟蹤及放置物品在較小的特定點(diǎn)上。 ARKit 還能利用相機(jī)傳感器來(lái)估計(jì)場(chǎng)景中可用光的總量奥邮,并將正確的光亮度應(yīng)用在虛擬對(duì)象上万牺。
高性能硬件和渲染優(yōu)化
ARKit 可在 Apple A9 和 A10 處理器上運(yùn)行罗珍。 這些處理器提供了具有突破性的性能,可實(shí)現(xiàn)快速場(chǎng)景理解脚粟,并允許您在現(xiàn)實(shí)世界場(chǎng)景上構(gòu)建出精細(xì)迷人的虛擬內(nèi)容覆旱。 您還可以對(duì) Metal,SceneKit 以及 Unity 和 Unreal Engine (虛幻引擎) 等第三方工具中的 ARKit 優(yōu)化加以利用核无。
關(guān)于AR與ARKit
摘自蘋果官網(wǎng):About Augmented Reality and ARKit
Discover supporting concepts, features, and best practices for building great AR experiences.
任何AR體驗(yàn)的基本要求以及ARKit的定義特征——是創(chuàng)建和跟蹤用戶居住的現(xiàn)實(shí)世界空間與可視化內(nèi)容建模的虛擬空間之間的對(duì)應(yīng)關(guān)系的能力扣唱。當(dāng)你的app顯示那些內(nèi)容(虛擬的)與實(shí)時(shí)相機(jī)圖像時(shí),用戶能體驗(yàn)到增強(qiáng)的現(xiàn)實(shí):你的虛擬內(nèi)容是真實(shí)世界的一部分的錯(cuò)覺团南。
在所有AR體驗(yàn)中噪沙,ARKit使用世界和相機(jī)坐標(biāo)系,遵循右手定則:y軸向上指向吐根,z軸指向觀察者正歼,x軸指向觀看者的右側(cè)。
會(huì)話配置可以改變坐標(biāo)系相對(duì)于現(xiàn)實(shí)世界的起點(diǎn)和方位拷橘。AR會(huì)話中的每個(gè)錨定義了自己的本地坐標(biāo)系局义,也遵循右手定則和的z軸指向觀察者的約定。例如膜楷,ARFaceAnchor定義了一種用于定位面部特征的系統(tǒng)旭咽。
世界跟蹤的工作原理
為了在真實(shí)空間和虛擬空間之間創(chuàng)建一個(gè)對(duì)應(yīng)關(guān)系,ARKit使用一種稱為視覺慣性測(cè)距的技術(shù)赌厅。這個(gè)過(guò)程將來(lái)自iOS設(shè)備的運(yùn)動(dòng)感應(yīng)硬件的信息與相機(jī)可見的場(chǎng)景的計(jì)算機(jī)視覺分析相結(jié)合穷绵。ARKIT識(shí)別場(chǎng)景圖像中的顯著特征,跟蹤視頻幀中這些特征位置的差異特愿,并將該信息與運(yùn)動(dòng)感測(cè)數(shù)據(jù)進(jìn)行比較仲墨,其結(jié)果是設(shè)備的位置和運(yùn)動(dòng)的高精度模型。
世界跟蹤還分析和了解場(chǎng)景的內(nèi)容揍障。使用命中測(cè)試方法去尋找真實(shí)世界表面與相機(jī)圖像中的一個(gè)點(diǎn)的對(duì)應(yīng)關(guān)系目养。如果在會(huì)話配置中啟用平面檢測(cè),ARKit將檢測(cè)相機(jī)圖像中的平面毒嫡,并報(bào)告其位置和大小癌蚁。你可以使用命中測(cè)試結(jié)果或在場(chǎng)景中檢測(cè)平面去放置或與虛擬內(nèi)容進(jìn)行交互。
建立高品質(zhì)的AR體驗(yàn)的注意事項(xiàng)
-
設(shè)計(jì)AR體驗(yàn)可預(yù)見的照明條件兜畸。
世界跟蹤涉及圖像分析努释,需要清晰的圖像。當(dāng)相機(jī)無(wú)法看到細(xì)節(jié)時(shí)咬摇,例如當(dāng)相機(jī)指向空白墻或場(chǎng)景太暗時(shí)伐蒂,跟蹤質(zhì)量會(huì)降低。 -
使用跟蹤質(zhì)量信息來(lái)提供用戶反饋肛鹏。
世界跟蹤將圖像分析與設(shè)備運(yùn)動(dòng)相關(guān)聯(lián)逸邦。如果設(shè)備正在移動(dòng)恩沛,即使設(shè)備只是微妙移動(dòng),ARKit也可以很好地了解場(chǎng)景缕减。過(guò)多的動(dòng)作雷客,太快或者太劇烈地晃動(dòng),會(huì)導(dǎo)致圖像模糊或跟蹤視頻幀之間的特征距離太大桥狡,從而降低跟蹤質(zhì)量佛纫。
ARCamera類提供跟蹤狀態(tài)原因的信息,你可以用它來(lái)開發(fā)用戶界面总放,告訴用戶如何解決低質(zhì)量跟蹤的情況呈宇。 -
允許平面檢測(cè)的時(shí)間產(chǎn)生明確的結(jié)果,并在您獲得所需的結(jié)果時(shí)禁用平面檢測(cè)局雄。
平面檢測(cè)結(jié)果隨時(shí)間而變化甥啄,當(dāng)首次檢測(cè)到平面時(shí),其位置和范圍可能不準(zhǔn)確炬搭。隨著時(shí)間的推移蜈漓,平面仍然在場(chǎng)景中,ARKit會(huì)對(duì)其位置和程度進(jìn)行細(xì)化宫盔。當(dāng)一個(gè)大的平坦表面在場(chǎng)景中時(shí)融虽,ARKit可能會(huì)在你已經(jīng)使用平面放置內(nèi)容之后繼續(xù)改變平面的位置,范圍和變化灼芭。
下一節(jié)學(xué)習(xí)ARKit(二)