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.
- Obtén un
ARCoreRecordingConfig
. - Crea un
Track
nuevo con un UUID personalizado. Todos los datos personalizados se guardarán aquí. - Agrega el
Track
alARCoreRecordingConfig
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?
- Para aprender a compilar tu propia app con grabación y reproducción, consulta el codelab de grabación y reproducción.