Table of Contents

EIF-Dateien in Unity simulieren

In diesem Artikel erfahren Sie, wie Sie EIF-Dateien in Unity fur die Simulation verwenden, damit Sie den Grobteil der Entwicklung direkt auf dem Computer erledigen und die Ergebnisse anschaulich sehen konnen.

Vor dem Start

Da die Simulation EIF-Dateien als Eingabe verwendet, mussen Sie vor dem Start zunachst eine EIF-Datei aufzeichnen:

Außerdem sollten Sie Folgendes verstehen:

Frame Player der Session aktivieren

ARSession.AssembleOptions bietet mehrere Moglichkeiten, die Zusammensetzung der Session-Komponenten zu konfigurieren. Eine davon ist, AssembleOptions.FrameSource auf FramePlayer zu setzen, um die Frame-Player-Komponente zu aktivieren und damit EIF-Dateien fur die Simulation verwenden zu konnen.

Zum Beispiel:

Session.AssembleOptions.FrameSource = AssembleOptions.FrameSourceSelection.FramePlayer;

Sie konnen auch im Editor AR Session (EasyAR) auswahlen und im Inspector-Fenster die entsprechende Option unter Assemble Options andern:

alt text

Dann wird beim Starten der Session die Frame-Player-Komponente aktiviert, ohne andere Frame-Source-Komponenten zu wahlen.

Die Wirkung der Wiedergabe einer EIF-Datei mit dem Frame Player ist im folgenden Video zu sehen:

Das Video zeigt die Wirkung von Motion Tracking mit dem Frame Player auf dem Computer. Links ist die Hierarchy, in der Mitte die Scene und rechts die Game-Ansicht. Der Inhalt der Game-Ansicht entspricht dem, was der Benutzer auf dem Smartphone in der realen Welt sieht.

Wahrend der Wiedergabe einer EIF-Datei arbeiten alle AR-Funktionskomponenten in der Session normal, und auch Inhalte und Interaktionslogik in der Szene funktionieren normal. So konnen Sie die meiste Entwicklung auf dem Computer erledigen und die Ergebnisse direkt sehen.

Tipp

Die Wirkung der Wiedergabe einer EIF-Datei mit dem Frame Player auf dem Computer ist im Wesentlichen dieselbe wie die Wirkung auf dem Smartphone wahrend der Aufzeichnung.

Wichtig

Die Laufwirkung bei der Wiedergabe in der Szene hangt vom verwendeten Gerat und von der zum Zeitpunkt der Aufzeichnung auf dem Gerat gewahlten Frame Source ab. Deshalb empfiehlt es sich, EIF-Dateien mit demselben oder einem ahnlichen Gerat aufzuzeichnen, damit die Wiedergabe mit der Wirkung auf dem Zielgerat ubereinstimmt. Achten Sie außerdem besonders darauf, ob die Motion-Tracking-Funktion in der Aufzeichnungsszene aktiviert war. Wenn Motion Tracking bei der Aufzeichnung nicht aktiviert war, kann es auch bei der Wiedergabe nicht aktiviert werden, und AR-Funktionen, die davon abhangen (zum Beispiel Dense Spatial Map oder Mega), verhalten sich dann nicht wie auf dem Gerat.

Bei Session-Start abspielen

Standardmäßig beginnt der Frame Player beim Starten der Session automatisch mit der Wiedergabe der EIF-Datei. Vor der Wiedergabe muss jedoch der Pfad der EIF-Datei angegeben werden. Dazu konnen die Eigenschaften FramePlayer.FilePathType und FramePlayer.FilePath verwendet werden.

Zum Beispiel:

var player = Session.GetComponent<FramePlayer>();
player.FilePathType = WritablePathType.Absolute;
player.FilePath = path;

Sie konnen auch im Editor AR Session (EasyAR) auswahlen und im Inspector-Fenster die entsprechenden Optionen in der Komponente Frame Player andern:

alt text

Wenn keine Datei angegeben ist oder der Pfad ungultig ist, startet der Frame Player beim Session-Start nicht und gibt eine Fehlermeldung aus:

File not found:

Manuelle Wiedergabe

Wenn Sie den Zeitpunkt der Wiedergabe manuell steuern mochten, setzen Sie vor dem Starten der Session FramePlayer.enabled auf false,

Session.GetComponent<FramePlayer>().enabled = false;

Sie konnen auch im Editor AR Session (EasyAR) auswahlen und im Inspector-Fenster das Häkchen bei Enabled der Komponente Frame Player entfernen:

alt text

Wenn die Wiedergabe beginnen soll, verwenden Sie Play(), um sie zu starten.

Zum Beispiel:

if (Session.Assembly.FrameSource is FramePlayer player)
{
    player.Play();
}

Jeder Aufruf von Play() stoppt die vorherige Wiedergabe und beginnt dann erneut von vorne.

Vorsicht

Wenn neue Daten abgespielt werden, werden die ursprunglichen Daten in der Szene nicht geloscht. Der Status der AR-Komponenten wird ebenfalls nicht zuruckgesetzt. Sie verhalten sich so, als wurde die Kameradatenquelle plotzlich vom Ende des vorherigen Datensatzes zum Anfang des neuen Datensatzes springen.

Das hat auf einen Teil der Funktionen kaum Einfluss, kann aber bei Funktionen, die auf Motion Tracking angewiesen sind (zum Beispiel Dense Spatial Map oder Mega), zu ungewollten Zustanden fuhren und die Laufwirkung beeinflussen. Daher empfiehlt es sich, vor dem Abspielen neuer Daten die Session neu zu starten, um alle AR-Komponenten zuruckzusetzen.

Anhalten und fortsetzen

Verwenden Sie FramePlayer.enabled, um die Wiedergabe anzuhalten und fortzusetzen.

Zum Beispiel setzt FramePlayer.enabled = false die Wiedergabe auf Pause:

player.enabled = false;

Wenn die Wiedergabe pausiert ist, pausieren alle AR-Funktionskomponenten ihre Arbeit. Inhalte und Interaktionslogik in der Szene stoppen nicht unbedingt; das hangt vom jeweiligen Inhalt ab. Nach dem Fortsetzen arbeiten die AR-Funktionskomponenten ab der pausierten Position weiter.

Wiedergabe stoppen

Verwenden Sie Stop(), um die Wiedergabe zu stoppen.

player.Stop();

Nach dem Stoppen der Wiedergabe stoppen alle AR-Funktionskomponenten ihre Arbeit. Inhalte und Interaktionslogik in der Szene stoppen nicht unbedingt; das hangt vom jeweiligen Inhalt ab.

Zu einem bestimmten Zeitpunkt springen (seek)

Verwenden Sie Seek(double), um zu einem bestimmten Zeitpunkt zu springen.

Zum Beispiel zum Abspielen ab 5 Sekunden nach vorne:

player.Seek(player.Time + 5);
Anmerkung

Nach dem Sprung wird moglicherweise nicht exakt am gewunschten Zeitpunkt weitergespielt. Das hangt von der Kodierung der EIF-Datei und dem Abstand der Keyframes ab.

Nicht jede EIF-Datei unterstutzt das Springen. Mit IsSeekable konnen Sie prufen, ob die aktuell abgespielte EIF-Datei das Springen unterstutzt.

Anmerkung

Nur EIF-Dateien, die mit H264 aufgezeichnet und korrekt durch Stoppen der Aufzeichnung beendet wurden, unterstutzen das Springen. Wenn eine EIF-Datei kein Springen unterstutzt, hat Seek(double) keine Wirkung.

Wiedergabegeschwindigkeit steuern

Verwenden Sie die Eigenschaft Speed, um die Wiedergabegeschwindigkeit zu steuern.

Zum Beispiel eine Erhohung der Geschwindigkeit um das 0,1-Fache:

player.Speed += 0.1;

Nicht jede EIF-Datei unterstutzt die Steuerung der Wiedergabegeschwindigkeit. Mit IsSpeedChangeable konnen Sie prufen, ob die aktuell abgespielte EIF-Datei die Geschwindigkeitsanderung unterstutzt.

Anmerkung

Nur EIF-Dateien, die mit H264 aufgezeichnet und korrekt durch Stoppen der Aufzeichnung beendet wurden, unterstutzen die Steuerung der Wiedergabegeschwindigkeit. Wenn eine EIF-Datei diese Funktion nicht unterstutzt, hat das Setzen von Speed keine Wirkung.

Verwandte Themen