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)。
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
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)目分析
//在界面上創(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的流程。