API записи и воспроизведения позволяет записывать сеанс и использовать его вместо видео с камеры в реальном времени. Однако эти записи содержат только данные видео и датчиков. Вы также можете добавить пользовательские данные в запись сеанса, и данные будут возвращены вам во время воспроизведения, как если бы они были частью изображения с камеры.
ARCore не включает автоматически какие-либо пользовательские данные в записи. Скорее, он позволяет добавлять пользовательские данные в кадр ARCore во время записи и извлекать те же данные из кадра во время воспроизведения. Вы должны запрограммировать приложение таким образом, чтобы пользователь возвращал ожидаемые данные при воспроизведении сеанса.
Варианты использования пользовательских данных
Добавление пользовательских данных в записи расширяет возможности ваших приложений AR. Ниже приведены некоторые конкретные случаи использования.
Используйте AR на ходу
Раньше пользователи могли получить доступ к AR-возможностям только в нужном месте и в нужное время. Если они хотели разместить лампу AR в своей гостиной, им приходилось физически стоять на этом месте, чтобы посмотреть, как лампа может там выглядеть. С помощью пользовательских треков они могут один раз записать свою гостиную и добавить в сцену виртуальную мебель, когда захотят.
Совместное создание AR-опыта
Без необходимости сеанса в реальном времени у пользователей появляется гораздо больше возможностей для редактирования AR, что позволяет им создавать уникальный AR-контент и получать к нему доступ в любом месте и в любое время. Например, они могут записывать заданную среду, добавлять эффекты дополненной реальности и делиться ими с друзьями.
Предварительные условия
Прежде чем продолжить, убедитесь, что вы понимаете фундаментальные концепции AR и то, как настроить сеанс ARCore .
Инициализация записи с пользовательскими данными
Выполните следующие действия, чтобы инициализировать запись с пользовательскими данными. Чтобы начать, остановить и проверить сеанс записи, см. раздел Запись и воспроизведение сеанса AR .
- Получите
ARCoreRecordingConfig
. - Создайте новый
Track
с пользовательским UUID . Все пользовательские данные будут сохранены здесь. - Добавьте
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";
Запись треков пользовательских данных
Все данные пользовательского трека записываются в кадры. Время записи данных в кадр совпадает с временем, когда данные будут возвращены во время воспроизведения. Например, если вы вызовете RecordTrackData()
со значением «A» в 00:07:02
, вы получите «A» обратно в отметке 00:07:02
при воспроизведении дорожки.
Чтобы записать пользовательскую дорожку данных, вызовите 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!
}
Что дальше
- Узнайте, как создать собственное приложение с функцией записи и воспроизведения, изучив кодовую лабораторию записи и воспроизведения .