構(gòu)建杰出 AR 體驗(yàn)的概念粒竖、功能和最佳實(shí)踐花沉。
簡介
任何 AR 體驗(yàn)的基本要求——也是 ARKit 的定義特征——是創(chuàng)建和跟蹤用戶所在的現(xiàn)實(shí)世界空間與可以建模可視化內(nèi)容的虛擬空間之間對應(yīng)關(guān)系的能力拍摇。當(dāng) App 將此內(nèi)容與實(shí)時(shí)攝像頭畫面顯示在一起時(shí)漆弄,用戶會體驗(yàn)到增強(qiáng)現(xiàn)實(shí):虛擬內(nèi)容是真實(shí)世界中一部分的錯(cuò)覺股耽。
世界追蹤的工作原理
為了在真實(shí)和虛擬空間之間創(chuàng)建對應(yīng)關(guān)系女轿,ARKit 使用一種叫做視覺慣性測距(visual-inertial odometry)的技術(shù)丹鸿。這個(gè)過程將來自 iOS 設(shè)備運(yùn)動(dòng)傳感器的信息和設(shè)備相機(jī)可見場景的計(jì)算機(jī)視覺分析相結(jié)合。ARKit 識別場景圖像中的顯著特征逊桦,從視頻的每一幀中跟蹤這些特征位置的差異眨猎,并將該信息與運(yùn)動(dòng)感測數(shù)據(jù)進(jìn)行比較。結(jié)果是設(shè)備的位置和運(yùn)動(dòng)的高精度模型强经。
世界追蹤還分析和理解場景中的內(nèi)容。使用 hit-testing 方法(見 ARHitTestResult 類)來尋找與相機(jī)畫面中的點(diǎn)對應(yīng)的真實(shí)世界表面寺渗。如果在 session 配置中啟用 planeDetection 設(shè)置匿情,ARKit 會檢測相機(jī)畫面中的平面兰迫,并報(bào)告位置和尺寸【娉疲可以使用 hit-test 結(jié)果或檢測到的平面來放置內(nèi)容汁果,或與場景中的虛擬內(nèi)容進(jìn)行交互。
最佳實(shí)踐與限制
世界追蹤是一項(xiàng)不精確的科學(xué)玲躯。這個(gè)過程通常會產(chǎn)生令人震驚的準(zhǔn)確性据德,引領(lǐng)現(xiàn)實(shí)的 AR 體驗(yàn)。然而跷车,它依賴于設(shè)備的物理環(huán)境的細(xì)節(jié)棘利,這些細(xì)節(jié)并不總是一致的,或者難以實(shí)時(shí)測量而沒有一定程度的錯(cuò)誤朽缴。要?jiǎng)?chuàng)建高品質(zhì)的 AR 體驗(yàn)善玫,請注意這些注意事項(xiàng)和提示。
為可預(yù)見的照明條件設(shè)計(jì) AR 體驗(yàn)密强。世界追蹤涉及圖像分析茅郎,需要清晰的圖像。如果相機(jī)無法看到細(xì)節(jié)或渤,例如當(dāng)相機(jī)指向大白墻或場景太暗時(shí)系冗,追蹤質(zhì)量會降低。
使用追蹤質(zhì)量信息來提供用戶反饋薪鹦。世界追蹤與圖像分析和設(shè)備運(yùn)動(dòng)有關(guān)掌敬。如果設(shè)備在移動(dòng),ARKit 可以更好地理解場景距芬,哪怕設(shè)備只是微微移動(dòng)涝开。過多的動(dòng)作——太遠(yuǎn)、太快或太劇烈的抖動(dòng)——會導(dǎo)致圖像模糊框仔,或者所追蹤的視頻幀之間距離太遠(yuǎn)舀武,從而降低視頻質(zhì)量。ARCamera 類提供追蹤狀態(tài)的原因信息离斩,可以借助它開發(fā)一個(gè)用戶界面银舱,告訴用戶如何解決低質(zhì)量的追蹤狀況。
給平面檢測充分的時(shí)間以產(chǎn)生清晰的結(jié)果跛梗,并在獲得所需結(jié)果后禁用平面檢測寻馏。平面檢測結(jié)果隨時(shí)間變化——首次檢測到平面時(shí),其位置和范圍可能不準(zhǔn)確核偿。隨著時(shí)間的推移诚欠,平面依然保持在場景中,ARKit 會進(jìn)一步提升對于位置和范圍的估計(jì)。如果場景中有一個(gè)大的平面轰绵,ARKit 可能會在你已經(jīng)在上面放置內(nèi)容后繼續(xù)改變平面錨點(diǎn)的位置粉寞、范圍和變換