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 mogą raz nagrać swój salon i dodać do sceny wirtualne meble, kiedy tylko zechcą.
Współtworzyć wrażenia AR
Dzięki temu, że nie trzeba już prowadzić sesji na żywo, użytkownicy mają więcej opcji edycji AR, co pozwala im tworzyć i dostępować do unikalnych treści AR w dowolnym miejscu i w dowolnym momencie. 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 nagrywania za pomocą 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.
- Uzyskaj
ARCoreRecordingConfig
. - Utwórz nowy
Track
z niestandardowym identyfikatorem UUID. Tutaj będą zapisywane wszystkie dane niestandardowe. - Dodaj
Track
doARCoreRecordingConfig
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 ścieżki są traktowane jako osobne nagrania, a każda z nich ma własny identyfikator UUID.
Konfigurowanie ścieżki za pomocą dodatkowych danych
Skonfiguruj ścieżkę, podając dodatkowe dane opisujące 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 punkcie 00:07:02
, podczas odtwarzania utworu w punkcie 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 danymi niestandardowymi jest takie samo jak inicjowanie odtwarzania zwykłego nagrania sesji.
Zwracanie danych niestandardowych
Aby pobrać dane niestandardowe zapisane w ramce, wywołaj funkcję GetUpdatedTrackData()
. Z tego samego klatki obrazu można pobrać dane z 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?
- Dowiedz się, jak utworzyć własną aplikację z funkcją nagrywania i odtwarzania, korzystając z ćwiczeń z programowania na temat nagrywania i odtwarzania.