使用 ARKit XR
插件包可通過 Unity
的多平臺XR API
啓用ARKit
支持。 該軟件包實現了以下XR
子系統:
- Session
- Camera
- Depth
- Input
- Planes
- Raycast
- Anchors
- Image tracking
- Environment probes
- Body tracking
- Occlusion
- Participant
- Meshes
此版本的ARKit XR
插件支持以下功能:
-
Device localization
設備本地化 -
Horizontal plane detection
水平面檢測 -
Vertical plane detection
垂直平面檢測 -
Point clouds
點雲 -
Pass-through camera view
直通相機視圖 -
Light estimation
光線估算 -
Anchors
錨點 -
Hit testing
命中測試 -
Session management
會話管理 -
Image tracking
影像追蹤 -
Object tracking
對象追蹤 -
Environment probes
環境探針 -
Participant tracking
參加者追蹤 -
Meshes (also known as Scene Reconstruction)
網格(也稱爲場景重建) -
Occlusion
咬合
如果應用程序開發人員不打算使用面部跟蹤,則Apple
的App Store
將拒絕其二進制文件中包含某些與面部跟蹤相關的符號的任何應用程序。 爲避免歧義,人臉跟蹤支持在單獨的軟件包ARKit
人臉跟蹤中提供。
安裝ARKit XR插件
要安裝此軟件包,請按照軟件包管理器文檔中的說明進行操作。
另外,安裝AR Foundation
軟件包,該軟件包使用ARKit XR
插件並提供許多有用的腳本和預製件。 有關此軟件包的更多信息,請參見 AR Foundation documentation文檔。
使用ARKit XR插件
ARKit XR
插件使用Unity
的多平臺XR API
實現構建手持式AR
應用程序所需的本機iOS
端點。 但是,此程序包不會公開其自身的任何公共腳本接口。 在大多數情況下,您應該使用AR Foundation
提供的scripts
, prefabs
, 和 assets
作爲您的手持式AR
應用程序的基礎。
包括ARKit XR
插件在內,還包括源文件,靜態庫,着色器文件和插件元數據。
ARKit
需要iOS 11.0
。 一些特定功能需要更高版本(請參見下文)。
構建設置
要訪問ARKit
構建設置,請從Unity
的主菜單轉到Edit> Project Settings
,然後導航到XR Plug-in Management
菜單並檢查ARKit
提供程序,如下面的屏幕快照所示:
這將創建一個ARKitSettings Asset
,可以在XR Plug-in Management > ARKit
下進行訪問,如以下屏幕截圖所示:
需要 AR
您可以將ARKit
標記爲必需或可選。 默認情況下,ARKit
是必需的,這意味着您的應用程序只能安裝在支持AR
的設備和操作系統(iOS 11.0
及更高版本)上。 如果您指定AR
爲可選,則您的應用可以安裝在所有iOS
設備上。
定位到32位設備
要定位32
位設備,必須在Graphics API
列表中包含OpenGLES2
。 從菜單中,選擇 Edit > Project Settings then navigate to Player > Other Settings > Graphics APIs
:
Session
ARKit
實現 XRSessionSubsystem.GetAvailabilityAsync,它由檢查其運行在iOS 11.0
或更高版本上的設備組成。 有關更多信息,請參見 ARSubsystems session documentation.。
深度子系統
Raycasts
始終爲Raycasts
命中的項目返回一個Pose
。 在對特徵點進行光線投射時,pose
的方向應提供特徵點可能代表的表面的估計。
深度子系統不需要額外的資源,因此啓用它不會影響性能
ARKit
的深度子系統只會產生一個 XRPointCloud。
有關更多信息,請參見 ARSubsystems depth subsystem documentation。
平面跟蹤
ARKit
不支持平面歸併(也就是說,一個平面不能包含在另一平面中); 沒有合併事件。 如果確定兩個平面是同一表面的獨立部分,則一個平面可能會被刪除,而另一個平面會擴展到探查的表面。
ARKit
在iOS 11.3
和更高版本上爲其所有平面提供了邊界點。
ARKit
平面子系統需要額外的CPU
資源,並且可能會消耗大量電量。 同時啓用水平和垂直平面檢測(在iOS 11.3+
中可用)需要額外的資源。 當您的應用不需要平面檢測以節省能源時,請考慮禁用它。
將平面檢測模式設置爲 PlaneDetectionMode.None等效於Stopping
子系統。
有關更多信息,請參見 ARSubsystems plane subsystem documentation。
參加者追蹤
參與者代表多用戶協作會話中的另一個設備。 儘管您可以隨時啓動和停止參與者子系統,但該會話必須從多用戶會話中的其他對等方接收ARCollaborationData
,以便檢測到參與者。 有關示例實現,請參閱ARCollaborationData sample on GitHub。
光線估算
ARKit
光線估算只能啓用或禁用。 Ambient Intensity
(環境強度)或Environmental HDR
數據的可用性取決於活動的跟蹤模式。 有關更多詳細信息,請參見下表。
Tracking configuration | Ambient intensity (lumens) | Color temperature | Main light direction | Main light intensity (lumens) | Ambient spherical harmonics |
---|---|---|---|---|---|
World Tracking | Yes | Yes | No | No | No |
Face Tracking | Yes | Yes | Yes | Yes | Yes |
相機配置
XRCameraConfiguration 包含一個IntPtr
字段nativeConfigurationHandle
,它是特定於平臺的句柄。 對於ARKit
,此句柄是指向本地 ARVideoFormat Objective-C對象的指針。
技術細節
要求
此版本的ARKit XR
插件與以下版本的Unity Editor
兼容:
- 2019.4
- 2020.1
- 2020.2
- 2021.1
已知限制
- 顏色校正不可用作
RGB
值(僅作爲色溫)。 - 該軟件包僅支持
64
位設備。 在iOS
的Player Settings window
窗口中(菜單:Edit > Project Settings > Player Settings
,然後選擇iOS
),您需要選擇ARM64
作爲目標體系結構(默認爲“通用”)。
package內容
此版本的ARKit XR
插件包括:
- 一個靜態庫,提供上面列出的
XR
子系統的實現 - 一個
Objective-C
源文件 - 用於渲染攝像機圖像的着色器
- 插件元數據文件