平台專屬指南
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
Unreal Engine
絕大多數的擴增實境體驗都是「即時」的,也就是說,使用者必須在特定時間前往特定地點,並將手機設為特殊 AR 模式,然後開啟 AR 應用程式。舉例來說,如果使用者想查看 AR 沙發在客廳中的樣貌,就必須在房間內「放置」沙發,才能在畫面上看到沙發的樣貌。
錄製和播放 API 可讓您不必遵守這項「即時」規定,隨時隨地觀看 AR 體驗。Recording API 會儲存攝影機的影片串流、IMU 資料,或您選擇儲存在 MP4 檔案中的任何其他自訂中繼資料。接著,您可以透過 Playback API 將這些錄製的影片提供給 ARCore,這項 API 會將 MP4 視為即時工作階段動態饋給。您還是可以使用即時相機工作階段,但有了這個新的 API,AR 應用程式就能選擇使用預先錄製的 MP4 檔案,而非即時工作階段。
使用者也可以利用這項功能。無論使用者身在何處,都能從原生相片庫中調出任何使用 Recording and Playback API 錄製的影片,並在影片中加入或播放 AR 物件、特效和濾鏡。有了這項功能,使用者就能在搭乘火車上班或躺在床上休息時,進行 AR 購物。
使用 Recording and Playback API 開發的用途
錄製和播放 API 可消除建構 AR 應用程式的時間和空間限制。以下是您可在專案中使用的幾種方法。
錄製一次,隨時隨地測試
您不必每次測試 AR 功能時都親自前往某個地點,只要使用 Recording API 錄製影片,然後使用任何相容的裝置播放即可。您是否正在購物中心打造體驗?您不必每次測試變更時都前往該頁面。只要記錄一次訪客資料,就能在自己的辦公桌前進行迭代及開發。
縮短迭代時間
您不必為每部要支援的 Android 裝置錄製影片,只要針對每個要測試的情況錄製一次影片,即可在疊代階段在多部不同裝置上播放影片。
減輕開發團隊的手動測試負擔
請不要為每項新功能建立自訂資料集,而是在推出結合深度或 ARCore 最新追蹤功能的新功能時,善用預先錄製的資料集。
裝置相容性
您需要使用 ARCore 搭配 Recording and Playback API 錄製資料,但播放內容時不需要使用 ARCore。使用這項功能錄製的 MP4 基本上是含有額外資料的影片檔案,可透過任何影片播放器觀看。您可以使用 Android 的 ExoPlayer,或任何可解析 MP4 並管理 ARCore 新增的其他資料的相容播放器來檢查這些檔案。
如何記錄影片和 AR 資料以供播放
ARCore 會將錄製的工作階段儲存為目標裝置上的 MP4 檔案。這些檔案包含多個影片軌和其他雜項資料。儲存這些工作階段後,您可以指示應用程式使用這項資料,取代即時攝影機工作階段。
錄音檔包含哪些內容?
ARCore 會在 H.264 影片中擷取下列資料。你可以在任何支援切換音軌的 MP4 相容影片播放器上存取這項功能。清單中的第一個音軌具有最高解析度,因為部分支援 MP4 的影片播放器會自動播放清單中的第一個音軌,不允許你選擇要播放的影片音軌。
主要影片軌 (CPU 影像軌)
主要影片檔案會記錄環境或場景,以利日後播放。根據預設,ARCore 會將用於動作追蹤的 640x480 (VGA) CPU 圖片,記錄為主要影片串流。
ARCore 不會擷取以圖形處理器紋理 (高解析度) 格式呈現在螢幕上的透視相機圖像。
如果您希望在播放期間提供高解析度的圖片串流,則必須設定攝影機,以便提供具有所需解析度的 CPU 圖片。在這種情況下:
- ARCore 會要求 640x480 (VGA) CPU 圖片 (用於動作追蹤),以及由設定的相機設定指定的高解析度 CPU 圖片。
- 擷取第二個 CPU 映像串流可能會影響應用程式效能,且不同裝置的影響程度也可能不同。
- 在播放期間,ARCore 會使用在錄製期間擷取的高解析度 CPU 圖片,做為播放期間的 GPU 紋理。
- 高解析度 CPU 圖片會成為 MP4 錄影檔案中的預設影片串流。
錄製期間所選的攝影機設定會決定錄製中的 CPU 圖像和主要影片串流。如果您未選取含有高解析度 CPU 圖片的相機設定,則無論您使用哪個影片播放器,這部影片都會成為檔案中的第一個音軌,並預設播放。
攝影機深度地圖視覺化
這是代表相機深度地圖的影片檔案,從裝置的硬體深度感應器 (例如飛行時間感應器或 ToF 感應器) 錄製,並轉換為 RGB 通道值。這部影片僅供預覽。
API 呼叫事件
ARCore 會記錄裝置陀螺儀和加速計感應器的測量結果。也會記錄其他資料,其中有些資料可能屬於機密資料:
- 資料集格式版本
- ARCore SDK 版本
- Google Play 服務 - AR 適用版本
- 裝置指紋 (
adb shell getprop ro.build.fingerprint
的輸出內容) - 關於用於 AR 追蹤的感應器的其他資訊
- 使用 ARCore Geospatial API 時,裝置的預估位置、磁力儀讀數和指南針讀數