基于標(biāo)記的跟蹤
AR 不是什么新的概念椭盏,現(xiàn)在的攝像頭設(shè)備已經(jīng)在很多年前做到這點(diǎn)了呵俏,通過(guò)使用 tracking cards
和一種基于標(biāo)記的 AR 技術(shù)
tracking card
提供了真實(shí)世界的錨點(diǎn),使用了特殊的算法分析攝像頭的數(shù)據(jù)范嘱,然后確定 card 的位置送膳,大小和方向,然后根據(jù)這些信息添加 3D 元素丑蛤,使用它們添加的攝像頭的圖片上叠聋。
但是如果跟蹤的內(nèi)容會(huì)因?yàn)榭ㄆx開攝像頭而丟失。
無(wú)標(biāo)記的跟蹤
想象下你有一個(gè)神奇的眼鏡受裹,你所能看到的東西都能添加虛擬的 3D 元素碌补,如果你把他們放在上面虏束,你可以無(wú)縫的融合那些內(nèi)容和真實(shí)世界的體驗(yàn),使所有東西看起來(lái)很真實(shí)厦章,可以去觸摸它們的感覺
ARKit 簡(jiǎn)介
ARKit 是眾多 AR 框架中的一個(gè)镇匀,例如有 Vuforia 等,ARKit 是無(wú)標(biāo)記跟蹤的嗎袜啃,它不需要 tracking cards.
跟蹤
ARKit 通過(guò)跟蹤設(shè)備的移動(dòng)汗侵,它通過(guò)設(shè)備自動(dòng)的采集移動(dòng)的數(shù)據(jù)和更新虛擬的內(nèi)容,它通過(guò)移動(dòng)虛擬世界的視角來(lái)匹配設(shè)備的視角
了解場(chǎng)景
為了實(shí)現(xiàn)無(wú)標(biāo)記的跟蹤群发,ARKit 創(chuàng)建和管理它自己虛擬的平面和檢測(cè)平面晃择,當(dāng)檢測(cè)到新的平面的時(shí)候都會(huì)觸發(fā)特殊的事件。當(dāng)平面改變或者平面移除也物,能給你難以置信的控制場(chǎng)景和內(nèi)容
評(píng)估燈光
ARKit 使用當(dāng)前的視頻幀評(píng)估當(dāng)前環(huán)境的燈光的情況宫屠。它自動(dòng)更新亮度來(lái)匹配當(dāng)前環(huán)境的亮度可,如果你的提供你的虛擬是基于物理材質(zhì)的話滑蚯,可以適應(yīng)燈光的變化浪蹂。
場(chǎng)景交互
ARKit 提供了 hit-test 函數(shù)來(lái)讓我們和 3D 內(nèi)容交互。你可以使用這種交互和傳統(tǒng)的手勢(shì)結(jié)合告材,可以通過(guò) SiriKit 來(lái)命令 ARKit
度量標(biāo)度系統(tǒng)
為了在場(chǎng)景中計(jì)算距離或者大小坤次,ARKit 使用了相對(duì)精確的度量標(biāo)度系統(tǒng),無(wú)論你使用什么圖形的 API,在 ARKit 中斥赋,一個(gè)單位就是 1 米
集成渲染
ARKit 沒有提供圖形 API, 它只通過(guò)了跟蹤平面檢測(cè)平面的信息缰猴,ARKit 可以容易的整合其他的圖形框架,例如 SpriteKit, SceneKit 和 Metal
ARKit 的局限
- 平面檢測(cè)需要的時(shí)間:平面檢測(cè)的時(shí)間需要一定的時(shí)間
- 移動(dòng)處理滯后:頻繁的移動(dòng)會(huì)導(dǎo)致卡和圖形模糊疤剑,頻繁的移動(dòng)使 ARKit 難以理解他檢測(cè)的內(nèi)容滑绒,
- 燈光低的情況下,設(shè)備無(wú)法場(chǎng)景隘膘。
- 光滑沒紋理的平面難以檢測(cè)
- 使用 ARKit 的時(shí)候疑故,你可能會(huì)觀察到一些違背物理的場(chǎng)景,例如一個(gè)虛擬的對(duì)象被其他真實(shí)的對(duì)象穿透弯菊。
ARKit 背后的技術(shù)
ARKit 使用了 Visual Inertial Odometry (VIO) 來(lái)跟蹤設(shè)備的移動(dòng)纵势,VIO 基于融合了 AVFoundation 圖形的輸入和 CoreMotion 設(shè)備移動(dòng)的數(shù)據(jù)。