ARKit 介紹

AR技術(shù)叫做虛擬增強(qiáng)現(xiàn)實(shí),也就是在相機(jī)捕捉到的現(xiàn)實(shí)世界的圖像中顯示一個(gè)虛擬的3D模型。

一.框架說(shuō)明

1:相機(jī)捕捉現(xiàn)實(shí)世界圖像

由ARKit來(lái)實(shí)現(xiàn)

2:在圖像中顯示虛擬3D模型

由SceneKit來(lái)實(shí)現(xiàn)


ARKit框架中中顯示3D虛擬增強(qiáng)現(xiàn)實(shí)的視圖ARSCNView繼承于SceneKit框架中的SCNView,而SCNView又繼承于UIKit框架中的UIView

ARSCNView只是一個(gè)視圖容器,它的作用是管理一個(gè)ARSession

在一個(gè)完整的虛擬增強(qiáng)現(xiàn)實(shí)體驗(yàn)中,ARKit框架只負(fù)責(zé)將真實(shí)世界畫面轉(zhuǎn)變?yōu)橐粋€(gè)3D場(chǎng)景,這一個(gè)轉(zhuǎn)變的過(guò)程主要分為兩個(gè)環(huán)節(jié):由ARCamera負(fù)責(zé)捕捉攝像頭畫面,由ARSession負(fù)責(zé)搭建3D場(chǎng)景

將虛擬物體實(shí)現(xiàn)在3D場(chǎng)景中是由SceneKit框架來(lái)完成中:每一個(gè)虛擬的物體都是一個(gè)節(jié)點(diǎn)SCNNode,每一個(gè)節(jié)點(diǎn)構(gòu)成了一個(gè)場(chǎng)景SCNScene,無(wú)數(shù)個(gè)場(chǎng)景構(gòu)成了3D世界

綜上,ARKit捕捉3D現(xiàn)實(shí)世界使用的是自身的功能,這個(gè)功能是在iOS11新增的。而ARKit在3D現(xiàn)實(shí)場(chǎng)景中添加虛擬物體使用的是父類SCNView的功能,這個(gè)功能早在iOS8時(shí)就已經(jīng)添加(SceneKit是iOS8新增)


二.原理

1.ARSCNView與ARSession

1)ARKit提供兩種虛擬增強(qiáng)現(xiàn)實(shí)視圖,他們分別是3D效果的ARSCNView和2D效果的ARSKView,無(wú)論是使用哪一個(gè)視圖都是用了相機(jī)圖像作為背景視圖,而這一個(gè)相機(jī)的圖像就是由ARKit框架中的相機(jī)類ARCamera來(lái)捕捉的。

2)ARSCNView與ARCamera兩者之間并沒(méi)有直接的關(guān)系,它們之間是通過(guò)ARSession來(lái)搭建溝通橋梁的(在iOS框架中,凡是帶session或者context后綴的,這種類一般自己不干活,作用一般都是兩個(gè):1.管理其他類,幫助他們搭建溝通橋梁,好處就是解耦 2.負(fù)責(zé)幫助我們管理復(fù)雜環(huán)境下的內(nèi)存)

3)要想運(yùn)行一個(gè)ARSession會(huì)話,你必須要指定一個(gè)稱之為會(huì)話追蹤配置的對(duì)象:ARSessionConfiguration,ARSessionConfiguration的主要目的就是負(fù)責(zé)追蹤相機(jī)在3D世界中的位置以及一些特征場(chǎng)景的捕捉(例如平面捕捉)(蘋果官方建議我們使用它的子類ARWorldTrackingSessionConfiguration,該類只支持A9芯片之后的機(jī)型,也就是iPhone6s之后的機(jī)型)


2.ARWorldTrackingSessionConfiguration與ARFrame

1)ARSession搭建溝通橋梁的參與者主要有兩個(gè)ARWorldTrackingSessionConfiguration與ARFrame

2)ARWorldTrackingSessionConfiguration(會(huì)話追蹤配置)的作用是跟蹤設(shè)備的方向和位置,以及檢測(cè)設(shè)備攝像頭看到的現(xiàn)實(shí)世界的表面

3)當(dāng)ARWorldTrackingSessionConfiguration計(jì)算出相機(jī)在3D世界中的位置時(shí),它本身并不持有這個(gè)位置數(shù)據(jù),而是將其計(jì)算出的位置數(shù)據(jù)交給ARSession去管理(與前面說(shuō)的session管理內(nèi)存相呼應(yīng)),而相機(jī)的位置數(shù)據(jù)對(duì)應(yīng)的類就是ARFrame

4)RCamera只負(fù)責(zé)捕捉圖像,不參與數(shù)據(jù)的處理。它屬于3D場(chǎng)景中的一個(gè)環(huán)節(jié),每一個(gè)3D Scene都會(huì)有一個(gè)Camera

三.ARKit工作完整流程

1.ARSCNView加載場(chǎng)景SCNScene

2.SCNScene啟動(dòng)相機(jī)ARCamera開(kāi)始捕捉場(chǎng)景

3.捕捉場(chǎng)景后ARSCNView開(kāi)始將場(chǎng)景數(shù)據(jù)交給Session

4.Session通過(guò)管理ARSessionConfiguration實(shí)現(xiàn)場(chǎng)景的追蹤并且返回一個(gè)ARFrame

5.給ARSCNView的scene添加一個(gè)子節(jié)點(diǎn)(3D物體模型)

(ARSessionConfiguration捕捉相機(jī)3D位置的意義就在于能夠在添加3D物體模型的時(shí)候計(jì)算出3D物體模型相對(duì)于相機(jī)的真實(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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