ARKit體驗(yàn)篇

AR簡(jiǎn)介

增強(qiáng)現(xiàn)實(shí)(Augmented Reality,簡(jiǎn)稱 AR),是一種實(shí)時(shí)地計(jì)算攝影機(jī)影像的位置及角度并加上相應(yīng)圖像的技術(shù),這種技術(shù)的目標(biāo)是在屏幕上把虛擬世界套在現(xiàn)實(shí)世界并進(jìn)行互動(dòng)。

AR

AR

iOS 11 引入了 ARKit,這是一個(gè)全新的框架,允許開(kāi)發(fā)者輕松地為 iPhone 和 iPad 創(chuàng)建無(wú)與倫比的增強(qiáng)現(xiàn)實(shí)體驗(yàn)。通過(guò)將虛擬對(duì)象和虛擬信息同用戶周圍的環(huán)境相互融合,ARKit 使得應(yīng)用跳出屏幕的限制,讓它們能夠以全新的方式與現(xiàn)實(shí)世界進(jìn)行交互。

ARKit的優(yōu)勢(shì)

  • ARKit 大幅降低了開(kāi)發(fā)者在 iOS 上進(jìn)行 AR 應(yīng)用開(kāi)發(fā)的難度
  • 蘋果設(shè)備的普及率,使得門檻低,無(wú)需其他設(shè)備便可體驗(yàn)
  • 開(kāi)發(fā)人員可以用蘋果的新機(jī)器學(xué)習(xí)框架CoreML來(lái)識(shí)別場(chǎng)景中的對(duì)象
  • 快速穩(wěn)定的運(yùn)動(dòng)定位
  • 平面和邊界的估計(jì)、光照估計(jì)、尺度估計(jì)
  • 對(duì)各個(gè)開(kāi)發(fā)平臺(tái)或引擎的支持(如:Unity3d)

ARKit體驗(yàn)

廢話不多說(shuō),先來(lái)體驗(yàn)下。當(dāng)然是有要求的:

  • Xcode版本:Xcode9及以上
  • iOS系統(tǒng): iOS11及以上
  • iOS設(shè)備:處理器A9及以上(6S機(jī)型及以上)
  • MacOS系統(tǒng):10.12.4及以上

1.選擇Augemnted Reality App

1

2.填寫信息

2
  • 細(xì)心的朋友可以看到Content Technology
    Content Technology

    Scenekit:ARKit框架提供了兩種AR技術(shù),一種是基于3D場(chǎng)景(SceneKit)實(shí)現(xiàn)的增強(qiáng)現(xiàn)實(shí)
    SpriteKit:基于2D場(chǎng)景(SpriktKit)實(shí)現(xiàn)的增強(qiáng)現(xiàn)實(shí)
    Metal:Apple圖形API
    Demo中使用3D來(lái)構(gòu)建,所以選擇Scenekit

3.Run

效果

項(xiàng)目分析

項(xiàng)目結(jié)構(gòu)
  //在界面上創(chuàng)建ARSCNView,用于展示AR
 @IBOutlet var sceneView: ARSCNView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 設(shè)置代理
        sceneView.delegate = self
        
        // 顯示一些數(shù)據(jù),如fps之類的
        sceneView.showsStatistics = true
        
        // 創(chuàng)建一個(gè)SCNScene,用于顯示3d模型
        let scene = SCNScene(named: "art.scnassets/ship.scn")!
        
        // 將加載了3d模型的SCNScene設(shè)置成ARSCNView的scene
        sceneView.scene = scene
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        
        // 為ARSCNView設(shè)置一個(gè)會(huì)話配置類
        let configuration = ARWorldTrackingSessionConfiguration()
        
        // 開(kāi)始session
        sceneView.session.run(configuration)
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        
        // 暫停session
        sceneView.session.pause()
    }

通過(guò)代碼分析可以發(fā)現(xiàn),在ARKit中主要有幾個(gè)類

ARSCNView:一種顯示AR體驗(yàn)的視圖,它通過(guò)3D SceneKit內(nèi)容增強(qiáng)了相機(jī)視圖

ARWorldTrackingSessionConfiguration: 會(huì)話配置類,在配置類對(duì)象里設(shè)置會(huì)話如何將真實(shí)的設(shè)備運(yùn)動(dòng)映射到3D場(chǎng)景的坐標(biāo)系統(tǒng)里,這里默認(rèn)是使用重力

SCNScene: SceneKit 內(nèi)容的容器. 你可以從3D建模工具生成的文件中加載一個(gè)場(chǎng)景,或者用代碼創(chuàng)建一個(gè) ,然后把它顯示在視圖上

體驗(yàn)感受

  • ARKit API夠簡(jiǎn)單,效果夠好。
  • 硬件、機(jī)器學(xué)習(xí)CoreML和ARkit帶來(lái)的是滿滿的驚喜。相信ARKit在未來(lái)的時(shí)間將會(huì)在照片處理,視頻,游戲等領(lǐng)域綻放光彩。

下一篇ARKit淺析篇將從類出發(fā)分析ARKit的流程。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容