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 uma transmissão da câmera em tempo real. No entanto, essas gravações contêm apenas dados de vídeo e do sensor. Você também pode adicionar dados personalizados a uma gravação de sessão e receber os dados durante a reprodução, como se fossem parte de uma imagem da câmera.

O ARCore não inclui automaticamente dados personalizados 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 forma que o usuário receba os dados esperados ao reproduzir a sessão.

Casos de uso de dados personalizados

Adicionar dados personalizados às gravações amplia as possibilidades dos seus apps de RA. Confira a seguir alguns casos de uso específicos.

Usar a RA em movimento

Antes, os usuários só podiam acessar experiências de RA no lugar e na hora certos. Se quisessem colocar uma luminária de RA na sala de estar, teriam que ficar fisicamente no local para ver como a luminária ficaria. Com as faixas personalizadas, eles podem gravar a sala de estar uma vez e adicionar móveis virtuais à cena sempre que quiserem.

Cocriar experiências de RA

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

Pré-requisitos

Entenda os conceitos básicos 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 verificar uma sessão de gravação, consulte Gravar e reproduzir uma sessão de RA.

  1. Obtenha um ARCoreRecordingConfig.
  2. Crie uma nova 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 novas faixas são tratadas como gravações separadas, e cada faixa gravada ocupa um UUID próprio.

Configurar a faixa com dados adicionais

Configure a faixa com dados adicionais que descrevam a gravação da sessão. Por exemplo, você pode "marcar" uma faixa adicionando uma nota que descreve o local e o horário em que você gravou a sessão: "Esta sessão foi gravada no shopping à 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 personalizadas

Todos os dados de faixas personalizadas são gravados 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, o valor "A" será retornado na marca 00:07:02 quando a faixa for reproduzida.

Para gravar 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);
}

Reproduzir faixas de dados personalizadas

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

Inicializar uma reprodução

A inicialização de uma reprodução com dados personalizados é igual à inicialização de uma reprodução de uma gravação de sessão regular.

Retornar dados personalizados

Chame GetUpdatedTrackData() para recuperar 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, 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);

Depois que o TrackData estiver em um objeto de contêiner, extraia os bytes de 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?