Dodaj dane niestandardowe podczas nagrywania w AR Foundation na Androida

Interfejs nagrywania i odtwarzania umożliwia nagranie sesji i używanie jej zamiast obrazu przesyłanego w czasie rzeczywistym z kamery. Nagrania te zawierają jednak tylko obraz i dane z czujników. Do nagrania sesji możesz też dodać niestandardowe dane, które będą Ci zwracane podczas odtwarzania, tak jakby były częścią obrazu z aparatu.

ARCore nie uwzględnia automatycznie w nagraniach żadnych danych niestandardowych. Zamiast tego możesz dodawać do ramki ARCore dane niestandardowe podczas nagrywania i pobierać te same dane z klatki podczas odtwarzania. Do Ciebie należy zaprogramowanie aplikacji w taki sposób, aby użytkownik odzyskał oczekiwane dane podczas odtwarzania sesji.

Przypadki użycia danych niestandardowych

Dodawanie niestandardowych danych do nagrań zwiększa możliwości aplikacji AR. Poniżej przedstawiamy kilka konkretnych przypadków użycia.

Używaj AR, gdziekolwiek jesteś

W przeszłości użytkownicy mogli korzystać z funkcji AR tylko w odpowiednim miejscu i czasie. Aby umieścić w salonie lampę AR, musieli stać na miejscu, żeby sprawdzić, jak ta lampa może wyglądać. Dzięki ścieżkom szyfru spersonalizowanym mogą nagrać swój salon raz i w dowolnej chwili dodać do sceny wirtualne meble.

Wspólne tworzenie doświadczeń AR

Użytkownicy, którzy nie wymagają sesji na żywo, mają znacznie więcej opcji edycji AR, dzięki czemu mogą tworzyć wyjątkowe treści AR oraz uzyskiwać do nich dostęp w dowolnym miejscu i czasie. Mogą na przykład nagrywać dane otoczenie, dodawać efekty rzeczywistości rozszerzonej i udostępniać je znajomym.

Wymagania wstępne

Zanim przejdziesz dalej, upewnij się, że znasz podstawowe pojęcia związane z AR i wiesz, jak skonfigurować sesję ARCore.

Inicjowanie nagrania z użyciem danych niestandardowych

Aby zainicjować nagranie z danymi niestandardowymi, wykonaj te czynności. Informacje o rozpoczynaniu, zatrzymywaniu i sprawdzaniu sesji nagrywania znajdziesz w artykule Nagrywanie i odtwarzanie sesji AR.

  1. Uzyskaj ARCoreRecordingConfig.
  2. Utwórz nowy identyfikator Track z niestandardowym identyfikatorem UUID. Tutaj będą zapisywane wszystkie dane niestandardowe.
  3. Dodaj Track do ARCoreRecordingConfig utworzonego podczas konfiguracji 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 ścieżki są traktowane jako osobne nagrania, a każda z nich ma własny identyfikator UUID.

Konfigurowanie ścieżki z dodatkowymi danymi

Skonfiguruj ścieżkę za pomocą dodatkowych danych opisujących rejestrowanie sesji. Możesz na przykład otagować ścieżkę, dodając notatkę opisującą miejsce i godzinę nagrania sesji: „Ta sesja została zarejestrowana 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 z typem MIME

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

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

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

Rejestrowanie niestandardowych ścieżek danych

Wszystkie dane ścieżek niestandardowych są rejestrowane na ramkach. Godzina zarejestrowania danych w klatce to ten sam czas, w którym dane zostaną zwrócone podczas odtwarzania. Jeśli na przykład wywołasz funkcję RecordTrackData() z wartością „A” w miejscu 00:07:02, podczas odtwarzania utworu otrzymasz znak „A” w miejscu oznaczenia 00:07:02.

Aby zarejestrować niestandardową ścieżkę danych, wywołaj 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 niestandardowych ścieżek danych

Wyodrębnianie danych niestandardowych z nagrania sesji podczas odtwarzania.

Inicjowanie odtwarzania

Inicjowanie odtwarzania z użyciem danych niestandardowych wygląda tak samo jak inicjowanie odtwarzania nagrania w zwykłej sesji.

Zwracanie danych niestandardowych

Wywołaj GetUpdatedTrackData(), aby pobrać dane niestandardowe zarejestrowane w ramce. Możesz pobrać dane wielu ścieżek z tej samej ramki. Jeśli na przykład wywołasz funkcję RecordTrackData() 2 razy na tej samej klatce podczas nagrywania, podczas odtwarzania otrzymasz 2 wystąpienia kodu TrackData.

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

Gdy TrackData znajdzie się w obiekcie kontenera, 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?