ARKit 命名空間
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
ARKit 命名空間支援擴增實境會話,包括將電腦產生的影像投影到視訊串流的高階和低階 API。
類別
介面
IARAnchorCopying |
ARKit 命名空間支援擴增實境會話,包括將電腦產生的影像投影到視訊串流的高階和低階 API。 |
IARSCNViewDelegate |
介面,表示通訊協定 ARSCNViewDelegate 的任何) 時, (所需的方法。 |
IARSessionDelegate |
介面,表示通訊協定 ARSessionDelegate 的任何) 時, (所需的方法。 |
IARSessionObserver |
介面定義方法,以回應 中的 ARSession 事件。 |
IARSKViewDelegate |
介面,表示通訊協定 ARSKViewDelegate 的任何) 時, (所需的方法。 |
IARTrackable |
ARKit 可追蹤之真實世界物件的介面。 |
列舉
AREnvironmentTexturing |
列舉與 T:ARKit.ARWorldTrackingProbeAnchor物件搭配使用的環境文字策略。 |
ARErrorCode |
列舉失敗的原因 ARSession 。 |
ARHitTestResultType |
列舉 方法偵測 HitTest(CGPoint, ARHitTestResultType) 到的物件種類。 |
ARPlaneAnchorAlignment |
目前限制為水準) 的 (方向 ARPlaneAnchor 。 |
ARPlaneClassification |
ARKit 命名空間支援擴增實境會話,包括將電腦產生的影像投影到視訊串流的高階和低階 API。 |
ARPlaneClassificationStatus |
ARKit 命名空間支援擴增實境會話,包括將電腦產生的影像投影到視訊串流的高階和低階 API。 |
ARPlaneDetection |
列舉目前僅水準) 偵測到平面的有效方向 (。 |
ARSessionRunOptions |
列舉 呼叫 Run(ARConfiguration, ARSessionRunOptions) 中的選項。 |
ARTrackingState |
列舉擴增實境 ARSession 中真實世界追蹤的品質。 |
ARTrackingStateReason |
列舉 的原因 Limited 。 |
ARWorldAlignment |
列舉如何建立全局座標系統的選項。 |
ARWorldMappingStatus |
列舉世界對應會話的狀態。 |
備註
ARKit 已在 iOS 11 中新增,並針對混合實境會話提供,可將相機輸入與顯示「附加」到真實世界的電腦產生影像結合。
ARKit 僅適用于執行 A9 和更強大的處理器的裝置:基本上,iPhone 6S 和更新版本、iPad Pros 和 iPad 未早于 2017 年發行。
ARKit 應用程式不會在模擬器中執行。
開發人員有三種轉譯 AR 場景的選項:
類別 | 使用案例 |
---|---|
ARSCNView | 結合 SceneKit 3D 幾何與影片 |
結合 SpriteKit 2D 影像與影片 | |
從其 IARSCNViewDelegate 匯出 「renderer:updateAtTime:」 。 | 允許完整的自訂轉譯。 |
ARKit 座標系統和轉換
ARKit 使用裝置動作和「視覺 odometry」來建立裝置相機的模型,以及與虛擬座標系統相關的真實世界「功能點」。 座標系統會使用公尺作為其單位。 虛擬座標系統有一個原點,計算為啟動時相機的位置 ARSession 。 ARKit 中的位置和方向主要是使用 NMatrix4 「原生矩陣」來表示。 在 ARKit 的情況下,這些是資料行主要轉換:
位置或翻譯位於 M14 、 M24 和 M34 中。 所 M11M33 定義的 3x3 矩陣是旋轉矩陣。
SCNVector3 Position(NMatrix4 m) => new SCNVector3(m.M14, m.M24, m.M34);
初始化
物件 ARSession 會管理整體擴增實境程式。 方法會 Run 採用 ARConfiguration 和 ARSessionRunOptions 物件,如下所示:
ARSCNView SceneView = ... // initialized in Storyboard, `ViewDidLoad`, etc.
// Create a session configuration
var configuration = new ARWorldTrackingConfiguration {
PlaneDetection = ARPlaneDetection.Horizontal,
LightEstimationEnabled = true
};
// Run the view's session
SceneView.Session.Run(configuration, ARSessionRunOptions.ResetTracking);
ARSession執行之後,其 CurrentFrame 屬性會保留作用 ARFrame 中的 。 因為系統嘗試每秒 60 個框架執行 ARKit,所以參考 CurrentFrame 的開發人員必須在遺失該畫面之後,確定 Dispose
該框架。
系統會追蹤相機檢視中的高對比「功能點」。 開發人員可以使用這些物件作為 ARPointCloud 可在 讀取的物件 RawFeaturePoints 。 不過,一般而言,開發人員依賴系統來識別較高層級的功能,例如平面或人臉。 當系統識別這些較高層級的功能時,它會新增 ARAnchor屬性位於全局座標系統中的物件。 開發人員可以使用 DidAddNode 、 DidUpdateNode 和 DidRemoveNode 方法來回應這類事件,並將其自訂幾何附加至真實世界特徵。
擴增實境座標是使用視覺 odometry 和裝置的動作管理員來維護。 在實驗上,追蹤在連續會話中至少超過數十公尺的距離看起來非常穩固。