初探AR

AR相關(guān) - ARKit的理解

要想很好的開(kāi)發(fā)AR項(xiàng)目,首先還是要對(duì)ARKit有個(gè)基本的了解,那我們現(xiàn)在就來(lái)看看一些常用類的含義

現(xiàn)實(shí) - ARKit

1.ARSession

  • 負(fù)責(zé)采集現(xiàn)實(shí)世界的信息 - 世界追蹤

  • 這是一個(gè)管理增強(qiáng)現(xiàn)實(shí)所需要的 設(shè)備攝像頭和動(dòng)作處理 的共享的對(duì)象。

  • ARSession對(duì)象會(huì)協(xié)調(diào) 增強(qiáng)現(xiàn)實(shí)過(guò)程中的大部分處理:

    • 從設(shè)備的動(dòng)作感應(yīng)硬件讀取數(shù)據(jù)
    • 控制設(shè)備內(nèi)置攝像頭
    • 對(duì)捕捉到的攝像圖像進(jìn)行分析
  • ARSession會(huì)整合這些結(jié)果,并在設(shè)備反饋的現(xiàn)實(shí)空間和模型化AR內(nèi)容的虛擬空間之間建議一種對(duì)應(yīng)關(guān)系

  • 注意:session是一個(gè)管理類,捕捉真實(shí)世界、世界追蹤、渲染都是由session完成的。

任何一個(gè)用ARKit實(shí)現(xiàn)的AR場(chǎng)景都需要一個(gè)單獨(dú)的ARSession對(duì)象

  • 如果是使用了'ARSCNView'或者'ARSKView'對(duì)象來(lái)創(chuàng)建AR場(chǎng)景的話,一個(gè)ARSession實(shí)例是已經(jīng)包含在這個(gè)view之中了。
  • 如果是通過(guò)別的渲染器來(lái)建立AR內(nèi)容的話,就需要手動(dòng)創(chuàng)建并維持一個(gè)ARSession對(duì)象。

2.ARConfiguration

  • ARConfiguration類決定了ARKit如何追蹤一個(gè)設(shè)備的位置以及相對(duì)于現(xiàn)實(shí)世界的運(yùn)動(dòng),是決定創(chuàng)建的AR體驗(yàn)的關(guān)鍵。

  • ARConfiguration子類:

    • AROrientationTrackingConfiguration
      • 使用后置攝像頭并僅追蹤設(shè)備方向來(lái)提供基本的AR體驗(yàn)。
      • 從三個(gè)自由度上來(lái)追蹤設(shè)備的運(yùn)動(dòng)方向 - 3個(gè)旋轉(zhuǎn)
    • ARWorldTrackingConfiguration - (平時(shí)相對(duì)用的最多)
      • 使用后置攝像頭精確追蹤設(shè)備的位置和方向并允許平面檢測(cè)和碰撞測(cè)試來(lái)提供高品質(zhì)的AR體驗(yàn)。
      • 從六個(gè)自由度上來(lái)追蹤設(shè)備的運(yùn)動(dòng)方向 - 3個(gè)平移 & 3個(gè)旋轉(zhuǎn)
    • ARFaceTrackingConfiguration
      • 使用前置攝像頭并追蹤用戶面部的移動(dòng)和表情來(lái)提供AR體驗(yàn)。(目前只有iphone X可用)
  • 所有的AR Configuration都是用來(lái)建立現(xiàn)實(shí)世界和虛擬3D坐標(biāo)空間的對(duì)應(yīng)關(guān)系的。當(dāng)app將這些虛擬內(nèi)容和實(shí)時(shí)捕捉到的攝像機(jī)畫(huà)面一起展示給用戶,用戶會(huì)產(chǎn)生一種這些虛擬內(nèi)容和現(xiàn)實(shí)世界的一部分的錯(cuò)覺(jué)。

3.ARFrame

  • ARSession采集到的現(xiàn)實(shí)世界的信息以ARFrame的形式返回

  • ARFrame中包含了渲染虛擬世界所有要的所有信息

  • ARFrame包含了兩部分:ARAnchorARFrame

4.ARCamera

  • 捕捉現(xiàn)實(shí)世界,并把信息交由ARSession處理。

  • AR seaaion中一個(gè)被捕獲的視圖幀相關(guān)的相機(jī)位置和視圖特征的信息

  • ARCamera捕獲的數(shù)據(jù)是一個(gè)一個(gè)的ARFrame構(gòu)成。

  • 指的是當(dāng)前攝像機(jī)的位置和旋轉(zhuǎn)信息。

  • 這一部分 ARKit 已經(jīng)為我們配置好,不用特別配置。

5.ARAnchor

  • 指的是現(xiàn)實(shí)世界中的錨點(diǎn)

  • 一個(gè)真實(shí)世界的位置和方向,可以用于在AR場(chǎng)景中放置物體。

  • 可以把 ARAnchor(錨點(diǎn))理解為真實(shí)世界中的某個(gè)點(diǎn)或平面,anchor 中包含位置信息和旋轉(zhuǎn)信息。拿到 anchor 后,可以在該 anchor 處放置一些虛擬物體。

  • 與SCNNode可以綁定

子類:ARPlaneAnchor
  • 專門指的是一個(gè)代表水平面的錨點(diǎn)。

虛擬 - SceneKit

  • ARSCNView 是繼承自 SCNView 的

  • 展示關(guān)于3D物體的屬性、方法的都是SCNView(比如:SCNScene、SCNNode)

  • scene是負(fù)責(zé)虛擬化的類

1.SCNScene

ARSCNView - 3D

  • 是一個(gè)用來(lái)展示增強(qiáng)相機(jī)視圖和3D SceneKit內(nèi)容的AR體驗(yàn)的界面。將虛擬的3D內(nèi)容和設(shè)備相機(jī)反應(yīng)的真實(shí)世界結(jié)合起來(lái)。

  • 主要功能:

    • 將設(shè)備相機(jī)捕捉到的真實(shí)世界的影像作為場(chǎng)景的背景
    • 將真實(shí)世界的坐標(biāo)系統(tǒng)直接映射成AR虛擬世界的坐標(biāo)系統(tǒng)
    • 自動(dòng)移動(dòng)SceneKit相機(jī)來(lái)配合真實(shí)世界中設(shè)備的移動(dòng)

ARSKView - 2D

  • 這個(gè)是使用2D SpriteKit制作的。

2.SCNNode

  • 指的是虛擬世界中的節(jié)點(diǎn)

  • 根據(jù)真實(shí)世界的錨點(diǎn)映射成對(duì)應(yīng)的虛擬世界的節(jié)點(diǎn)

  • 每個(gè)虛擬化的物體都有一個(gè)節(jié)點(diǎn),所有的節(jié)點(diǎn)都有一個(gè)公共的父節(jié)點(diǎn)(rootNide)。

渲染 - ARSCNView

  • 主要負(fù)責(zé)綜合 由SceneKit構(gòu)建的虛擬世界的信息 和 ARSession類采集到的現(xiàn)實(shí)世界的信息,然后將它們綜合渲染呈現(xiàn)出一個(gè)AR世界

總結(jié):

  • ARSCNView結(jié)合 SCNScene中的虛擬世界的信息 和 ARSession捕捉到的現(xiàn)實(shí)世界的信息,渲染出AR世界。

  • ARConfiguration指導(dǎo)ARSession如何追蹤世界,追蹤的結(jié)果以ARFrame返回。

  • ARFrame中的ARAnchor信息為SceneKit中的SCNNode提供的一些放置的點(diǎn),以便將虛擬節(jié)點(diǎn)和現(xiàn)實(shí)錨點(diǎn)綁定。

image.png

參考文章:

有什么寫(xiě)的不對(duì)或者不好的地方歡迎指教,我會(huì)及時(shí)改正的,謝謝大家!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容