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.
- Obtenha um
ARCoreRecordingConfig
. - Crie uma nova
Track
com um UUID personalizado. Todos os dados personalizados serão salvos aqui. - Adicione o
Track
aoARCoreRecordingConfig
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?
- Aprenda a criar seu próprio app com a gravação e a reprodução acessando o codelab de gravação e reprodução.