Adicionar dados personalizados ao gravar na AR Foundation destinado ao Android

A API Recording & Playback permite gravar uma sessão e usá-la no lugar de um feed de câmera em tempo real. No entanto, essas gravações só contêm dados de vídeo e sensor. Também é possível adicionar dados personalizados a uma gravação de sessão e retornar esses dados durante a reprodução, como se fizessem parte de uma imagem da câmera.

O ARCore não inclui dados personalizados automaticamente nas gravações. Em vez disso, ele permite que você adicione dados personalizados a um frame do ARCore durante a gravação e recupere esses mesmos dados do frame durante a reprodução. Cabe a você programar o app de modo que o usuário receba os dados esperados ao abrir a sessão.

Casos de uso para dados personalizados

Adicionar dados personalizados às gravações aumenta as possibilidades para seus apps de RA. Confira abaixo alguns casos de uso específicos.

Usar RA em qualquer lugar

Antes, os usuários só podiam acessar as experiências de RA no lugar e no momento certos. Se ele quisesse colocar uma lâmpada de RA na sala de estar, precisaria ficar fisicamente no local para ver como seria a lâmpada ali. Com as faixas personalizadas, eles podem gravar a própria sala de estar uma vez e adicionar móveis virtuais à cena sempre que quiserem.

Crie experiências de RA em conjunto

Sem a exigência de uma sessão ao vivo, os usuários têm muitas outras opções de edição de RA, permitindo criar e acessar conteúdo exclusivo de RA a qualquer momento e lugar. Por exemplo, eles podem gravar um determinado ambiente, adicionar efeitos de realidade aumentada e compartilhar com amigos.

Pré-requisitos

Verifique se você entendeu os conceitos fundamentais de RA e como configurar uma sessão do ARCore antes de continuar.

Inicializar uma gravação com dados personalizados

Siga estas etapas para inicializar uma gravação com dados personalizados. Para iniciar, interromper e conferir uma sessão de gravação, consulte Gravar e reproduzir uma sessão de RA.

  1. Extraia um ARCoreRecordingConfig.
  2. Crie um novo Track com um UUID personalizado. Todos os dados personalizados serão salvos aqui.
  3. Adicione o Track ao ARCoreRecordingConfig que você criou durante a configuração da sessão.
// 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;

Todas as faixas novas são tratadas como gravações separadas, e cada faixa gravada ocupa seu próprio UUID.

Configurar a faixa com mais dados

Configure a faixa com dados adicionais que descrevem a gravação da sessão. Por exemplo, você pode "marcar" uma faixa adicionando uma observação que descreve o local e o horário em que você gravou a sessão: "Esta sessão foi gravada no centro à tarde".

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

Configurar a faixa com um tipo MIME

Configure uma faixa com um tipo MIME que descreva o tipo de dados gravados na faixa para compatibilidade com ferramentas externas.

Se você não especificar um tipo, os dados serão categorizados como application/text. O ARCore ignora o tipo MIME ao ler dados.

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

Gravar faixas de dados personalizados

Todos os dados de faixas personalizadas são registrados em frames. O tempo em que você grava dados em um frame é o mesmo em que os dados serão retornados durante a reprodução. Por exemplo, se você chamar RecordTrackData() com o valor "A" em 00:07:02, receberá "A" de volta na marca 00:07:02 quando a faixa for tocada.

Para registrar uma faixa de dados personalizada, chame 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);
}

Tocar faixas de dados personalizadas

Extraia dados personalizados de uma gravação de sessão durante a reprodução.

Inicializar uma reprodução

Inicializar uma reprodução com dados personalizados é o mesmo que inicializar uma reprodução com dados personalizados.

Retornar dados personalizados

Chame GetUpdatedTrackData() para extrair os dados personalizados gravados em um frame. É possível recuperar vários dados de faixa do mesmo frame. Por exemplo, se você chamou RecordTrackData() duas vezes no mesmo frame durante a gravação, você vai receber duas instâncias de TrackData durante a reprodução.

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

Quando o TrackData estiver em um objeto contêiner, extraia os bytes dos dados 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!
}

O que vem em seguida?