您可以使用 Recording & Playback API 錄製工作階段,並用於取代即時攝影機畫面。但這些錄音內容只包含影片和感應器資料。您也可將自訂資料新增至會話錄製中,並在播放期間將資料傳回給您,就像是相機影像的一部分。
ARCore 不會自動在錄影內容中加入任何自訂資料。而是讓您在錄製期間將自訂資料新增至 ARCore 影格,並在播放期間從影格擷取相同資料。您可以自行設計應用程式的程式,讓使用者能在繼續播放工作階段時取回所需資料。
自訂資料的用途
在錄影檔中加入自訂資料,可擴展 AR 應用程式的可能性。以下列舉幾項特定用途。
隨時隨地使用 AR
過去,使用者只能在適當地點和時間存取 AR 體驗。假設他們想在客廳擺放 AR 燈,就必須親自站在該位置,才能看到燈具的實際外觀。有了自訂軌跡,他們只需錄製一次客廳,之後就能隨時在場景中加入虛擬家具。
共同打造 AR 體驗
由於不需要進行即時工作階段,使用者可以有更多 AR 編輯選項,隨時隨地創作及存取獨特的 AR 內容。例如錄製指定環境、加入擴增實境效果,並與好友分享。
必要條件
請務必先瞭解基本 AR 概念,以及如何設定 ARCore 工作階段,再繼續操作。
使用自訂資料初始化錄製內容
請按照下列步驟,使用自訂資料初始化錄製。如要開始、停止及查看錄製工作階段,請參閱「錄製及播放 AR 工作階段」。
- 取得
ARCoreRecordingConfig
。 - 使用自訂 UUID建立新的
Track
。所有自訂資料都會儲存在這裡。 - 將
Track
新增至您在工作階段設定期間建立的ARCoreRecordingConfig
。
// Initialize a new track with a custom UUID.
// Make sure to save the UUID because it is the ID that you will use
// to get your data back during playback.
var track = new Track {
Id = Guid.Parse("de5ec7a4-09ec-4c48-b2c3-a98b66e71893") // from UUID generator
};
// Add the Track to the recordingConfig.
// recordingConfig must already be configured.
List<Track> tracks = new List<Track>();
tracks.Add(track);
recordingConfig.Tracks = tracks;
系統會將所有新曲目視為個別錄音,每個錄製的曲目都會佔用自己的 UUID。
使用其他資料設定測試群組
使用描述工作階段錄製內容的其他資料設定軌跡。舉例來說,你可以新增筆記來標記音訊,說明錄製工作階段的地點和時間:「這個工作階段是在下午於購物中心錄製的。」
// Set additional data on this track.
// For example, describe where you recorded the session.
byte[] metadata = ...
track.Metadata = metadata;
使用 MIME 類型設定曲目
使用 MIME 類型設定曲目,說明曲目中記錄的資料類型,以便與外部工具相容。
如果您未指定類型,資料就會歸類為 application/text
。ARCore 會在讀取資料時忽略 MIME 類型。
// Set a MIME type for compatibility with external tools.
track.MimeType = "text/csv";
錄製自訂資料軌道
所有自訂追蹤資料都會記錄到影格。您將資料記錄到影格上的時間,就是播放期間傳回資料的時間。舉例來說,如果您在 00:07:02
呼叫 RecordTrackData()
並傳回值「A」,則在播放音軌時,您會在 00:07:02
標記處收到「A」。
如要記錄自訂資料軌跡,請呼叫 RecordTrackData()
。
// Place an AR lamp in a room.
if (placeLampButtonWasPressed) {
// Convert the lamp data into a byte array.
var lampData = new byte[] { (byte) Lamp.FLOOR }; // a floor lamp
recordingManager.RecordTrackData(trackGuid, lampData);
}
播放自訂資料軌
在播放期間從工作階段錄製內容中擷取自訂資料。
初始化播放
使用自訂資料初始化播放內容的做法,與初始化一般工作階段錄製內容的播放內容相同。
傳回自訂資料
呼叫 GetUpdatedTrackData()
即可擷取在影格上記錄的自訂資料。您可以從同一個影格擷取多個追蹤資料。舉例來說,如果您在錄製期間在同一個影格中兩次呼叫 RecordTrackData()
,則在播放期間會取得兩個 TrackData
例項。
// Fetch the data recorded on a select frame and place it in a
// container object.
var trackDataList = recordingManager.GetUpdatedTrackData(trackGuid);
當 TrackData
位於容器物件中時,請擷取自訂資料的位元組。
// Extract the bytes of custom data from the list of track data.
foreach (TrackData trackData in trackDataList) {
var data = trackData.Data;
Lamp lamp = Lamp.fromByte(data[0]); // This is the lamp!
}
後續步驟
- 請參閱錄製與播放程式碼研究室,瞭解如何使用錄製與播放功能建構自己的應用程式。