錄製與播放 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!
}
後續步驟
- 如要瞭解如何使用錄製和播放功能建構自己的應用程式,請參閱錄製和播放程式碼研究室。