下面是 T 沙龍小編對分享的一些總結:html
Roc分四部分向你們進行介紹github
首先Roc帶來了此次WWDC 2018的親身見聞。AR is the future! swift
根據應用情報公司Sensor Tower提供的新數據,自從2017年9月19日發佈iOS 11以來,已經下載了超過1300萬個使用蘋果ARKit構建的加強現實應用。追蹤是 ARKit 的核心功能,也就是能夠實時追蹤設備。數組
追蹤上面一層是場景理解,即肯定設備周圍環境的屬性或特徵。bash
結合使用上述功能,能夠將虛擬內容無縫整合進物理環境。因此 ARKit 的最後一層就是渲染。session
接下來Roc爲你們帶來了一款WWDC18上的遊戲。 併發
這個遊戲體現了ARKit2的什麼特性呢?app
接下來Roc經過本身的項目想法向你們介紹瞭如何去建立一個ARKit應用。 框架
ARKit 是基於 session 的 API。因此首先你要作建立一個簡單的 ARSession。ARSession 對象用於控制全部處理流程,這些流程用於建立加強現實 app。但首先須要肯定加強現實 app 將會作哪一種類型的追蹤。因此,還要建立一個 ARSessionConfiguration。ARSessionConfiguration 及其子類用於肯定 session 將會運行什麼樣的追蹤。只要設置好對應的屬性,就能夠得到不一樣類型的場景理解,並讓 ARSession 作不一樣的處理。
要運行 session,只要對 ARSession 調用 run 方法便可,帶上所需的 configuration。 run(_ configuration) 而後處理流程就會馬上開始。同時底層也會開始捕捉信息。幕後會自動建立 AVCaptureSession 和 CMMotionManager。它們用於獲取圖像數據和運動數據,這些數據會被用於追蹤。
處理完成後,ARSession 會輸出 ARFrames。
ARFrame 就是當前時刻的快照,包括 session 的全部狀態,全部渲染加強現實場景所需的信息。要訪問 ARFrame,只要獲取 ARSession 的 currentFrame 屬性。或者也能夠把本身設置爲 delegate,接收新的 ARFrame。
代碼實現
class ViewController: UIViewController {
...
@IBOutlet var sceneView: ARSCNView!
overide func viewDidLoad() {
...
let scene = SCNScene(named: 「xxx」)
sceneView.scene = scene }
override func viewWillAppear(_ animated: Bool) {
...
let configuration = ARWorldTrachingConfiguration() Configuration.planeDetection = .horizontal
sceneView.session.run(configuration) }
}
複製代碼
代碼實現
// 建立新的 world tracking configuration
let configuration = ARWorldTrackingSessionConfiguration()
// 啓用平面檢測
configuration.planeDetection = .horizontal
// 改變運行中 session 的 configuration
mySession.run(configuration)
複製代碼
代碼實現
if let point = sceneView.hitTest(screenCenter, type: [.estimatedHorizontalPlane]).first {
// Creat ARAnchor using result
}
複製代碼
咱們能夠添加一些手勢,來控制物體的縮放,旋轉和移動。
捕獲AR World Map
捕獲併發送AR World Map ARKit提供了一個worldMappingStatus值:notAvailable,extending,limited,mapped,該值指示當前是不是捕獲世界地圖的好時機
接收當前世界地圖
經過MultipeerConnectivity連接
接收並從新定位到共享地圖
最後Roc又延伸介紹了下MultipeerConnectivity以及Peertalk(An iOS and Mac Cocoa library for communicating over USB),感興趣的童鞋能夠詳細瞭解下。
Roc這次分享主要爲你們介紹了ARKit的特性,以及如何使用ARKit。
ARKit提供的世界追蹤功能能夠提供設備在物理環境中的相對位置,場景理解能夠肯定設備周圍環境的屬性或特徵,更好的在現實世界中放置物體。ARKit能夠與SceneKit和SprintKit無縫集成。同時蘋果提供了Metal模板,能夠幫助開發者自定製渲染引擎。ARKit還提供多人操做功能,可讓多我的共同參與到遊戲中來。
如何使用ARKit,歸納起來就是,ARSCNView 結合 SCNScene 中的虛擬世界信息和 ARsession 捕捉到的現實世界信息,渲染出 AR 世界。ARSessionConfiguration 及其子類指導 ARSession 如何追蹤世界,追蹤的結果以 ARFrame 返回。ARFrame 中的 ANAnchor 信息爲 SceneKit 中的 SCNNode 提供了一些放置的點,以便將虛擬節點和現實錨點綁定。
xiaozhuanlan.com/topic/90614… developer.apple.com/videos/play… juejin.im/post/5a308b… developer.apple.com/documentati… toutiao.io/posts/g54ix… developer.apple.com/documentati…