Agrega datos personalizados durante la grabación en AR Foundation segmentada para Android

La API de Recording & Playback te permite grabar una sesión y usarla en lugar de un feed de cámara en tiempo real. Sin embargo, estas grabaciones solo contienen datos de video y sensores. También puedes agregar datos personalizados a una grabación de sesión y que se te muestren durante la reproducción, como si fueran parte de una imagen de la cámara.

ARCore no incluye automáticamente ningún dato personalizado en las grabaciones. En cambio, te permite agregar datos personalizados a un fotograma de ARCore durante la grabación y recuperar esos mismos datos del fotograma durante la reproducción. Depende de ti programar la app de manera tal que el usuario recupere los datos que espera cuando reproduce su sesión.

Casos de uso de datos personalizados

Agregar datos personalizados a las grabaciones amplía las posibilidades de tus apps de RA. Estos son algunos casos de uso específicos.

Usa la RA estés donde estés

Antes, los usuarios solo podían acceder a experiencias de RA en el lugar y el momento adecuados. Si quería colocar una lámpara de RA en su sala de estar, tenía que estar físicamente en la ubicación para ver cómo se vería allí. Con las pistas personalizadas, pueden grabar su sala de estar una vez y agregar muebles virtuales a la escena cuando quieran.

Cocrea experiencias de RA

Sin el requisito de una sesión en vivo, los usuarios tienen muchas más opciones para la edición de RA, lo que les permite crear y acceder a contenido de RA único en cualquier lugar y momento. Por ejemplo, pueden grabar un entorno determinado, agregar efectos de realidad aumentada y compartirlos con amigos.

Requisitos previos

Asegúrate de comprender los conceptos fundamentales de la RA y cómo configurar una sesión de ARCore antes de continuar.

Inicializa una grabación con datos personalizados

Sigue estos pasos para inicializar una grabación con datos personalizados. Para iniciar, detener y verificar una sesión de grabación, consulta Cómo grabar y reproducir una sesión de RA.

  1. Obtén un ARCoreRecordingConfig.
  2. Crea un Track nuevo con un UUID personalizado. Todos los datos personalizados se guardarán aquí.
  3. Agrega el Track al ARCoreRecordingConfig que creaste durante la configuración de la sesión.
// 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;

Todos los segmentos nuevos se tratan como grabaciones independientes, y cada uno ocupa su propio UUID.

Configura el segmento con datos adicionales

Configura el segmento con datos adicionales que describan la grabación de la sesión. Por ejemplo, puedes "etiquetar" una pista agregando una nota que describa la ubicación y la hora en la que grabaste la sesión: "Esta sesión se grabó en el centro comercial por la tarde".

// Set additional data on this track.
// For example, describe where you recorded the session.
byte[] metadata = ...
track.Metadata = metadata;

Configura la pista con un tipo de MIME

Configura un segmento con un tipo de MIME que describa el tipo de datos grabados en el segmento para lograr la compatibilidad con herramientas externas.

Si no especificas un tipo, los datos se categorizarán como application/text. ARCore ignora el tipo de MIME cuando lee datos.

// Set a MIME type for compatibility with external tools.
track.MimeType = "text/csv";

Cómo grabar segmentos de datos personalizados

Todos los datos de la pista personalizada se graban en fotogramas. La hora en la que grabas datos en un fotograma es la misma hora en la que se mostrarán los datos durante la reproducción. Por ejemplo, si llamas a RecordTrackData() con el valor "A" en 00:07:02, volverás a obtener "A" en la marca 00:07:02 cuando se reproduzca la pista.

Para registrar un segmento de datos personalizado, llama 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);
}

Cómo reproducir segmentos de datos personalizados

Extrae datos personalizados de una grabación de sesión durante la reproducción.

Inicializa una reproducción

Iniciar una reproducción con datos personalizados es lo mismo que inicializar una reproducción de la grabación de una sesión normal.

Cómo mostrar datos personalizados

Llama a GetUpdatedTrackData() para recuperar los datos personalizados registrados en un fotograma. Es posible recuperar varios datos de pista desde el mismo fotograma. Por ejemplo, si llamaste a RecordTrackData() dos veces en el mismo fotograma durante la grabación, obtendrás dos instancias de TrackData durante la reproducción.

// Fetch the data recorded on a select frame and place it in a
// container object.
var trackDataList = recordingManager.GetUpdatedTrackData(trackGuid);

Una vez que el TrackData esté en un objeto contenedor, extrae los bytes de datos personalizados.

// 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!
}

¿Qué sigue?