Добавление пользовательских данных во время записи в AR Foundation для Android

API записи и воспроизведения позволяет записывать сеанс и использовать его вместо видео с камеры в реальном времени. Однако эти записи содержат только данные видео и датчиков. Вы также можете добавить пользовательские данные в запись сеанса, и данные будут возвращены вам во время воспроизведения, как если бы они были частью изображения с камеры.

ARCore не включает автоматически какие-либо пользовательские данные в записи. Скорее, он позволяет добавлять пользовательские данные в кадр ARCore во время записи и извлекать те же данные из кадра во время воспроизведения. Вы должны запрограммировать приложение таким образом, чтобы пользователь возвращал ожидаемые данные при воспроизведении сеанса.

Варианты использования пользовательских данных

Добавление пользовательских данных в записи расширяет возможности ваших приложений AR. Ниже приведены некоторые конкретные случаи использования.

Используйте AR на ходу

Раньше пользователи могли получить доступ к AR-возможностям только в нужном месте и в нужное время. Если они хотели разместить лампу AR в своей гостиной, им приходилось физически стоять на этом месте, чтобы увидеть, как лампа может там выглядеть. С помощью пользовательских треков они могут один раз записать свою гостиную и добавить в сцену виртуальную мебель, когда захотят.

Совместное создание AR-опыта

Без необходимости сеанса в реальном времени у пользователей появляется гораздо больше возможностей для редактирования AR, что позволяет им создавать уникальный AR-контент и получать к нему доступ в любом месте и в любое время. Например, они могут записывать заданную среду, добавлять эффекты дополненной реальности и делиться ими с друзьями.

Предварительные условия

Прежде чем продолжить, убедитесь, что вы понимаете фундаментальные концепции AR и то, как настроить сеанс ARCore .

Инициализация записи с пользовательскими данными

Выполните следующие действия, чтобы инициализировать запись с пользовательскими данными. Чтобы начать, остановить и проверить сеанс записи, см. раздел Запись и воспроизведение сеанса AR .

  1. Получите ARCoreRecordingConfig .
  2. Создайте новый Track с пользовательским UUID . Все пользовательские данные будут сохранены здесь.
  3. Добавьте 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!
}

Что дальше

,

API записи и воспроизведения позволяет записывать сеанс и использовать его вместо видео с камеры в реальном времени. Однако эти записи содержат только данные видео и датчиков. Вы также можете добавить пользовательские данные в запись сеанса, и данные будут возвращены вам во время воспроизведения, как если бы они были частью изображения с камеры.

ARCore не включает автоматически какие-либо пользовательские данные в записи. Скорее, он позволяет добавлять пользовательские данные в кадр ARCore во время записи и извлекать те же данные из кадра во время воспроизведения. Вы должны запрограммировать приложение таким образом, чтобы пользователь возвращал ожидаемые данные при воспроизведении своего сеанса.

Варианты использования пользовательских данных

Добавление пользовательских данных в записи расширяет возможности ваших приложений AR. Ниже приведены некоторые конкретные случаи использования.

Используйте AR на ходу

Раньше пользователи могли получить доступ к AR-возможностям только в нужном месте и в нужное время. Если они хотели разместить лампу AR в своей гостиной, им приходилось физически стоять на этом месте, чтобы увидеть, как лампа может там выглядеть. С помощью пользовательских треков они могут один раз записать свою гостиную и добавить в сцену виртуальную мебель, когда захотят.

Совместное создание AR-опыта

Без необходимости сеанса в реальном времени у пользователей появляется гораздо больше возможностей для редактирования AR, что позволяет им создавать уникальный AR-контент и получать к нему доступ в любом месте и в любое время. Например, они могут записывать заданную среду, добавлять эффекты дополненной реальности и делиться ими с друзьями.

Предварительные условия

Прежде чем продолжить, убедитесь, что вы понимаете фундаментальные концепции AR и то, как настроить сеанс ARCore .

Инициализация записи с пользовательскими данными

Выполните следующие действия, чтобы инициализировать запись с пользовательскими данными. Чтобы начать, остановить и проверить сеанс записи, см. раздел Запись и воспроизведение сеанса AR .

  1. Получите ARCoreRecordingConfig .
  2. Создайте новый Track с пользовательским UUID . Все пользовательские данные будут сохранены здесь.
  3. Добавьте 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!
}

Что дальше

,

API записи и воспроизведения позволяет записывать сеанс и использовать его вместо видео с камеры в реальном времени. Однако эти записи содержат только данные видео и датчиков. Вы также можете добавить пользовательские данные в запись сеанса, и данные будут возвращены вам во время воспроизведения, как если бы они были частью изображения с камеры.

ARCore не включает автоматически какие-либо пользовательские данные в записи. Скорее, он позволяет добавлять пользовательские данные в кадр ARCore во время записи и извлекать те же данные из кадра во время воспроизведения. Вы должны запрограммировать приложение таким образом, чтобы пользователь возвращал ожидаемые данные при воспроизведении сеанса.

Варианты использования пользовательских данных

Добавление пользовательских данных в записи расширяет возможности ваших приложений AR. Ниже приведены некоторые конкретные случаи использования.

Используйте AR на ходу

Раньше пользователи могли получить доступ к AR-возможностям только в нужном месте и в нужное время. Если они хотели разместить лампу AR в своей гостиной, им приходилось физически стоять на этом месте, чтобы увидеть, как лампа может там выглядеть. С помощью пользовательских треков они могут один раз записать свою гостиную и добавить в сцену виртуальную мебель, когда захотят.

Совместное создание AR-опыта

Без необходимости сеанса в реальном времени у пользователей появляется гораздо больше возможностей для редактирования AR, что позволяет им создавать уникальный AR-контент и получать к нему доступ в любом месте и в любое время. Например, они могут записывать заданную среду, добавлять эффекты дополненной реальности и делиться ими с друзьями.

Предварительные условия

Прежде чем продолжить, убедитесь, что вы понимаете фундаментальные концепции AR и то, как настроить сеанс ARCore .

Инициализация записи с пользовательскими данными

Выполните следующие действия, чтобы инициализировать запись с пользовательскими данными. Чтобы начать, остановить и проверить сеанс записи, см. раздел Запись и воспроизведение сеанса AR .

  1. Получите ARCoreRecordingConfig .
  2. Создайте новый Track с пользовательским UUID . Все пользовательские данные будут сохранены здесь.
  3. Добавьте 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!
}

Что дальше