Understanding Augmented Reality
Overview
任何AR的經(jīng)驗和arkit定義特征的基本要求是能夠創(chuàng)建和跟蹤對應(yīng)的真實空間之間的用戶在和一個虛擬的空間里你可以模型視覺內(nèi)容康二。當(dāng)你的應(yīng)用程序顯示的內(nèi)容與現(xiàn)場攝像頭圖像,用戶體驗增強現(xiàn)實:幻想,你的虛擬內(nèi)容是真實世界的一部分
How World Tracking Works
創(chuàng)建一個現(xiàn)實和虛擬空間之間的對應(yīng)關(guān)系闲询,arkit使用的技術(shù)稱為視覺慣性測距呕缭。這個過程結(jié)合了從iOS設(shè)備的運動傳感硬件與設(shè)備的攝像頭可見的場景的計算機視覺分析的信息授嘀。arkit識別顯著特征的場景圖像赴穗,跟蹤在視頻幀之間的特征差異的位置炕吸,該信息與運動傳感數(shù)據(jù)比較姿染。其結(jié)果是一個高精度的設(shè)備的位置和運動模型背亥。
世界跟蹤還分析和理解場景的內(nèi)容。使用命中測試方法(參見
類)找到對應(yīng)于相機圖像中某個點的真實世界的表面悬赏。如果啟用
planeDetection
在您的會話配置設(shè)置狡汉,ARKit檢測平面在相機的圖像和報告他們的位置和尺寸。您可以使用命中測試結(jié)果或檢測到的飛機放置或與您的場景中的虛擬內(nèi)容交互
Best Practices and Limitations
世界跟蹤是一門不精確的科學(xué)闽颇。這個過程往往會產(chǎn)生令人印象深刻的準(zhǔn)確性轴猎,導(dǎo)致現(xiàn)實的AR經(jīng)驗。然而进萄,它依賴于設(shè)備的物理環(huán)境的細(xì)節(jié)并不總是一致的或難以實時測量沒有一定程度的錯誤捻脖。要建立高質(zhì)量的AR體驗,請注意這些警告和提示中鼠。
設(shè)計可預(yù)見照明條件的AR經(jīng)驗可婶。世界跟蹤涉及圖像分析,需要清晰的圖像援雇。當(dāng)相機看不到細(xì)節(jié)時矛渴,跟蹤質(zhì)量降低,例如當(dāng)相機指向空白的墻壁或場景太暗時。
使用跟蹤質(zhì)量信息提供用戶反饋具温。世界跟蹤相關(guān)的圖像分析與設(shè)備的議案蚕涤。arkit開發(fā)更好的了解現(xiàn)場,如果設(shè)備是移動的铣猩,即使設(shè)備只能移動微妙揖铜。過大的運動過快、過快或晃動過猛會導(dǎo)致模糊圖像或太多的距離用于跟蹤視頻幀之間的特征达皿,降低跟蹤質(zhì)量天吓。這個
arcamera
類提供跟蹤狀態(tài)原因信息,您可以使用它來開發(fā)用戶界面峦椰,該用戶界面告訴用戶如何解決低質(zhì)量的跟蹤情況龄寞。
允許平面檢測的時間產(chǎn)生明確的結(jié)果,并禁用平面檢測時汤功,你有你需要的結(jié)果物邑。平面檢測結(jié)果隨時間變化時,首先檢測到的平面滔金,其位置和程度可能是不準(zhǔn)確的拂封。當(dāng)飛機仍在現(xiàn)場,隨著時間的推移鹦蠕,arkit提煉其位置和程度的估計冒签。當(dāng)一個大的平面是在現(xiàn)場,arkit可能繼續(xù)變平面錨的位置钟病、程度萧恕,當(dāng)你已經(jīng)用飛機把內(nèi)容變換。
ARSession
一個arsession物體坐標(biāo)的主要過程肠阱,arkit執(zhí)行代表您創(chuàng)建一個增強現(xiàn)實體驗票唆。這些過程包括讀取數(shù)據(jù)從設(shè)備的運動傳感硬件,控制設(shè)備的內(nèi)置攝像頭屹徘,并對捕獲的相機圖像進(jìn)行圖像分析走趋。該會話綜合所有這些結(jié)果,以建立真實世界的空間噪伊,設(shè)備棲息和虛擬空間簿煌,你模型AR內(nèi)容之間的對應(yīng)關(guān)系。
每一個AR體驗了arkit需要一個單一的arsession對象鉴吹。如果你使用
arscnview
或
arskview
對象容易建立你的AR的視覺體驗的一部分姨伟,視圖對象包括arsession實例。如果你的AR內(nèi)容建立你自己的渲染器豆励,你就需要實例化并保持arsession對象自己套菜。
運行會話需要會話配置:
arsessionconfiguration
類或其子類
arworldtrackingsessionconfiguration
。這類決定如何arkit跟蹤設(shè)備的位置和運動的相對真實的世界技潘,從而影響你可以創(chuàng)建AR體驗的種類。
Topics
Configuring and Running a Session
-runWithConfiguration:options:
使用指定的配置和選項啟動會話的AR處理伍玖。
Parameters
configuration:定義會話的運動和場景跟蹤行為的對象。
options:如何影響現(xiàn)有會話狀態(tài)(如果有的話)轉(zhuǎn)換到新配置的選項剿吻。
如果會話第一次運行窍箍,此參數(shù)沒有影響。
Discussion:該會話跟蹤設(shè)備的運動和橙,捕捉和處理場景從設(shè)備攝像頭圖像,并與您的坐標(biāo)delegateobject orARSCNVieworARSKView僅在運行時查看造垛。
在已開始立即轉(zhuǎn)換到新會話配置的會話上調(diào)用此方法魔招。選項參數(shù)決定如何將現(xiàn)有會話狀態(tài)轉(zhuǎn)換到新配置。默認(rèn)情況下五辽,會話將從上次已知狀態(tài)恢復(fù)設(shè)備位置跟蹤办斑,并保留添加會話的任何錨點。調(diào)用此方法后杆逗,會話將異步運行乡翅。
當(dāng)更改其配置時,影響如何轉(zhuǎn)換AR會話當(dāng)前狀態(tài)的選項
Topics
ARSessionRunOptionResetTracking
該會話不繼續(xù)從先前配置的設(shè)備位置/運動跟蹤罪郊。
Declaration
ARSessionRunOptionResetTracking= (1 << 0)
Discussion
默認(rèn)情況下蠕蚜,當(dāng)您調(diào)用runwithconfiguration:選項:方法在已運行或正在運行的會話上,會話將從其最后一個已知狀態(tài)恢復(fù)設(shè)備位置跟蹤悔橄。(例如靶累,一個aranchor對象保持其相對于攝像機的明顯位置。
runwithconfiguration:選項:方法具有與會話當(dāng)前配置相同類型的配置癣疟,可以使用此選項強制設(shè)備位置跟蹤返回初始狀態(tài)挣柬。
當(dāng)你呼喚runwithconfiguration:選項:方法與會話當(dāng)前配置的不同類型的配置,會話總是重置跟蹤(也就是說睛挚,這個選項是隱式啟用)
ARSessionRunOptionRemoveExistingAnchors
任何與前一配置中的會話相關(guān)的錨點對象將被移除
Declaration
ARSessionRunOptionRemoveExistingAnchors= (1 << 1)
默認(rèn)情況下邪蛔,當(dāng)您調(diào)用runwithconfiguration:選項:在已運行或正在運行的會話的方法上,會話將保留任何aranchor以前添加的對象扎狱。也就是說侧到,AR場景中的對象保持相對于設(shè)備的真實真實位置(除非啟用arsessionrunoptionresettracking選項)。
如果更改會話配置應(yīng)該無效在AR場景明顯的物體的真實位置使arsessionrunoptionremoveexistinganchors選項淤击。例如床牧,如果您向AR場景添加了虛擬內(nèi)容,其位置與真實世界的對象相關(guān)遭贸,請移除這些錨戈咳,以便重新評估適當(dāng)?shù)恼鎸嵨恢谩A硪环矫妫绻趫鼍爸械奶摂M內(nèi)容需要跟蹤真實世界的位置著蛙,只有當(dāng)該內(nèi)容第一次出現(xiàn)删铃,并可以自由移動后,您可以禁用此選項踏堡,以保持錨猎唁。
定義會話的運動和場景跟蹤行為的對象。
Declaration
@property(nonatomic, copy, readonly)ARSessionConfiguration*configuration;
會話中的暫停處理
Declaration
- (void)pause;
Discussion
暫停時顷蟆,該會話不跟蹤設(shè)備的運動或捕捉場景圖像诫隅,也不配合其delegate object或更新任何關(guān)聯(lián)arscnview或arskview對象。
Responding to AR Updates
您提供的對象帐偎,用于接收捕獲的視頻圖像和跟蹤信息逐纬,或響應(yīng)會話狀態(tài)的更改。
如果你使用arscnview或arskview類來顯示AR體驗削樊,不需要會話委派豁生。這些觀點自動顯示捕獲的視頻圖像和坐標(biāo)SceneKit或SpriteKit內(nèi)容跟蹤裝置和攝像機運動。
如果使用金屬或其他渲染技術(shù)創(chuàng)建AR可視化漫贞,請設(shè)置會話委托甸箱。您的委托對象定期接收arframe會話捕獲的對象。這些對象包含視頻幀圖像供您顯示和AR場景信息迅脐,您可以使用坐標(biāo)顯示您渲染的場景元素芍殖。
通過會話調(diào)用委托方法的調(diào)度隊列。
Discussion
如果此值為nil(默認(rèn)值)谴蔑,則會話將在主隊列上調(diào)用委托方法围小。
方法可以實現(xiàn)從AR會話接收捕獲的視頻幀圖像和跟蹤狀態(tài)。
...
方法可以實現(xiàn)響應(yīng)于AR會話狀態(tài)的更改树碱。
Displaying and Interacting with AR Content
視頻幀圖像肯适,與相關(guān)的AR場景信息,最近捕獲的會話成榜。
添加由會話跟蹤的指定錨點框舔。
移除由會話跟蹤的指定錨點。
Instance Methods