Dodaj dane niestandardowe podczas nagrywania w AR Foundation na Androida

Interfejs API nagrywania i odtwarzania umożliwia nagrywanie sesji i używanie jej zamiast obrazu z kamery w czasie rzeczywistym. Jednak te nagrania zawierają tylko dane wideo i dane z czujników. Możesz też dodać dane niestandardowe do nagrania sesji i odtworzyć je podczas odtwarzania, tak jakby były częścią obrazu z kamery.

ARCore nie uwzględnia automatycznie żadnych danych niestandardowych w nagraniach. Umożliwia ona dodawanie danych niestandardowych do ramki ARCore podczas nagrywania i pobieranie tych samych danych z ramki podczas odtwarzania. To od Ciebie zależy, jak zaprogramujesz aplikację, aby użytkownik otrzymał oczekiwane dane podczas odtwarzania sesji.

Zastosowania danych niestandardowych

Dodawanie danych niestandardowych do nagrań zwiększa możliwości aplikacji AR. Poniżej znajdziesz kilka konkretnych zastosowań.

Korzystanie z AR w ruchu

Wcześniej użytkownicy mogli korzystać z rzeczywistości rozszerzonej tylko w odpowiednim miejscu i w odpowiednim czasie. Jeśli chcieli ustawić lampę AR w salonie, musieli stanąć w danym miejscu, aby zobaczyć, jak lampa będzie wyglądać. Dzięki niestandardowym ścieżkom audio mogą raz nagrać swój salon i w dowolnym momencie dodać wirtualne meble do sceny.

Współtworzyć wrażenia AR

Użytkownicy, którzy nie mają wymogu sesji na żywo, mają do dyspozycji znacznie więcej opcji edycji AR, dzięki którym mogą tworzyć i otwierać niepowtarzalne treści AR w dowolnym miejscu i czasie. Mogą na przykład nagrywać dane środowisko, dodawać efekty rzeczywistości rozszerzonej i udostępniać je znajomym.

Wymagania wstępne

Zanim przejdziesz dalej, upewnij się, że rozumiesz podstawowe zagadnienia związane z rozszerzoną rzeczywistością oraz że wiesz, jak skonfigurować sesję ARCore.

Inicjowanie nagrania z użyciem danych niestandardowych

Aby zainicjować nagrywanie za pomocą danych niestandardowych, wykonaj te czynności: Aby rozpocząć, zatrzymać i sprawdzić sesję nagrywania, zapoznaj się z artykułem Nagrywanie i odtwarzanie sesji AR.

  1. Uzyskaj ARCoreRecordingConfig.
  2. Utwórz nowe konto Trackniestandardowym identyfikatorem UUID. Tutaj będą zapisywane wszystkie dane niestandardowe.
  3. Dodaj Track do ARCoreRecordingConfig utworzonego podczas konfigurowania sesji.
// 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;

Wszystkie nowe utwory są traktowane jako osobne nagrania, przy czym każda z nich ma własny identyfikator UUID.

Konfigurowanie ścieżki za pomocą dodatkowych danych

Skonfiguruj ścieżkę, używając dodatkowych danych opisujących nagranie sesji. Możesz na przykład „otagować” ścieżkę, dodając notatkę z opisem lokalizacji i czasu nagrania sesji: „Ta sesja została nagrana w centrum handlowym po południu”.

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

Konfigurowanie ścieżki za pomocą typu MIME

Skonfiguruj ścieżkę z typem MIME, który opisuje typ danych zapisanych na ścieżce, aby zapewnić zgodność ze narzędziami zewnętrznymi.

Jeśli nie określisz typu, dane zostaną sklasyfikowane jako application/text. ARCore ignoruje typ MIME podczas odczytu danych.

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

Rejestrowanie niestandardowych ścieżek danych

Wszystkie dane ścieżki niestandardowej są rejestrowane w klatkach. Czas, w którym dane są rejestrowane w ramce, jest taki sam jak czas, w którym dane są zwracane podczas odtwarzania. Jeśli np. wywołasz parametr RecordTrackData() z wartością „A” w miejscu 00:07:02, podczas odtwarzania utworu w miejscu 00:07:02 pojawi się wartość „A”.

Aby nagrać niestandardowy ślad danych, zadzwoń pod numer 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);
}

Odtwarzanie ścieżek danych niestandardowych

wyodrębniać dane niestandardowe z nagrania sesji podczas odtwarzania;

Inicjowanie odtwarzania

Inicjowanie odtwarzania z wykorzystaniem danych niestandardowych jest równoważne z inicjowaniem odtwarzania zwykłego nagrania w sesji.

Zwracanie danych niestandardowych

Aby pobrać dane niestandardowe zapisane w ramce, wywołaj funkcję GetUpdatedTrackData(). Z tej samej ramki można pobrać dane wielu ścieżek. Jeśli na przykład podczas nagrywania wywołasz RecordTrackData() 2 razy w tym samym ujęciu, podczas odtwarzania otrzymasz 2 wystąpienia TrackData.

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

Gdy obiekt TrackData znajdzie się w kontenerze, wyodrębnij bajty danych niestandardowych.

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

Co dalej?