Simulation mit EIF-Dateien in Unity
Dieser Artikel erklärt, wie man EIF-Dateien in Unity für Simulationsläufe verwendet, um den Großteil der Entwicklungsarbeit am Computer durchzuführen und Ergebnisse visuell zu sehen.
Vorbereitung
Die Simulation verwendet EIF-Dateien als Eingabe, daher müssen Sie zunächst eine EIF-Datei aufzeichnen:
- Siehe Aufzeichnen von EIF-Dateien für Anleitungen
Außerdem sollten Sie Folgendes verstehen:
- Grundkonzepte der Aufzeichnung von EIF-Dateien und deren Verwendung für Simulationen
- Grundkonzepte, Zusammensetzung und Arbeitsablauf einer AR-Session
- Wie man über Zugriff auf AR-Funktionskomponenten in der Session auf Aufzeichnungskomponenten zugreift
Aktivieren des Frame-Players in der Session
ARSession.AssembleOptions bietet verschiedene Möglichkeiten, die Zusammensetzung von Session-Komponenten zu konfigurieren. Eine Möglichkeit ist, AssembleOptions.FrameSource auf FramePlayer zu setzen, um die Frame-Player-Komponente zu aktivieren und so EIF-Dateien für Simulationen zu verwenden.
Beispiel:
Session.AssembleOptions.FrameSource = AssembleOptions.FrameSourceSelection.FramePlayer;
Alternativ können Sie im Editor AR Session (EasyAR) auswählen und im Inspector-Fenster die entsprechende Option unter Assemble Options ändern:

Dadurch aktiviert die Session beim Start die Frame-Player-Komponente und wählt keine anderen Frame-Source-Komponenten aus.
Die Wiedergabe einer EIF-Datei mit dem Frame-Player zeigt folgendes Video:
Dieses Video zeigt die Effekte der Erstellung einer dichten Raumkarte mit dem Frame-Player auf einem Computer. Links ist die
Hierarchy-Ansicht, in der Mitte dieScene-Ansicht und rechts dieGame-Ansicht. Der Inhalt derGame-Ansicht entspricht dem, was ein Benutzer in der realen Welt auf einem Smartphone sehen würde.
Während der Wiedergabe der EIF-Datei funktionieren alle AR-Funktionskomponenten in der Session normal, und Inhalte sowie Interaktionslogik in der Szene arbeiten korrekt. Dadurch können Sie den Großteil der Entwicklungsarbeit am Computer durchführen und Ergebnisse visuell sehen.
Tipp
Die mit dem Frame-Player auf einem Computer sichtbaren Effekte stimmen im Wesentlichen mit denen auf dem Smartphone während der Aufzeichnung der EIF-Datei überein.
Wichtig
Die Laufzeiteffekte bei der Wiedergabe der EIF-Datei hängen vom Aufzeichnungsgerät und der damals verwendeten Frame-Source ab. Daher wird empfohlen, für die Aufzeichnung der EIF-Datei dasselbe oder ein ähnliches Gerät wie das Zielgerät zu verwenden, um konsistente Effekte zu gewährleisten. Achten Sie besonders darauf, ob die Bewegungserkennung während der Aufzeichnung aktiviert war. War sie deaktiviert, kann sie auch während der Wiedergabe nicht aktiviert werden, und AR-Funktionen, die von der Bewegungserkennung abhängen (z. B. dichte Raumkarten, Mega usw.), verhalten sich nicht konsistent mit der Gerätefunktion.
Wiedergabe beim Session-Start
Standardmäßig beginnt der Frame-Player beim Start der Session automatisch mit der Wiedergabe der EIF-Datei. Vor der Wiedergabe muss jedoch der Pfad zur EIF-Datei angegeben werden. Dies erfolgt über die Eigenschaften FramePlayer.FilePathType und FramePlayer.FilePath.
Beispiel:
var player = Session.GetComponent<FramePlayer>();
player.FilePathType = WritablePathType.Absolute;
player.FilePath = path;
Alternativ können Sie im Editor AR Session (EasyAR) auswählen und im Inspector-Fenster die entsprechenden Optionen in der Frame Player-Komponente ändern:

Wenn keine Datei angegeben ist oder der Pfad ungültig ist, schlägt der Start des Frame-Players beim Session-Start fehl, und es wird eine Fehlermeldung ausgegeben:
File not found:
Manuelle Wiedergabe
Um den Wiedergabezeitpunkt manuell zu steuern, können Sie FramePlayer.enabled vor dem Start der Session auf false setzen:
Session.GetComponent<FramePlayer>().enabled = false;
Alternativ können Sie im Editor AR Session (EasyAR) auswählen und im Inspector-Fenster das Häkchen bei Enabled in der Frame Player-Komponente entfernen:

Verwenden Sie Play(), um die Wiedergabe zu starten, wenn Sie bereit sind.
Beispiel:
if (Session.Assembly.FrameSource is FramePlayer player)
{
player.Play();
}
Jeder Aufruf von Play() stoppt die vorherige Wiedergabe (falls vorhanden) und startet von vorne.
Vorsicht
Beim Abspielen neuer Daten werden vorhandene Szenendaten nicht gelöscht. Der Status der AR-Komponenten wird nicht zurückgesetzt; sie verhalten sich so, als ob die Kameradaten plötzlich von der letzten Position der vorherigen Daten zum Anfang der neuen Daten springen würden.
Obwohl dies für einige Funktionen keine großen Auswirkungen hat, kann es bei bewegungsabhängigen Funktionen (z. B. dichte Raumkarten, Mega usw.) zu abnormalen Zuständen führen, was die Laufzeiteffekte beeinträchtigt. Daher wird empfohlen, die Session vor dem Abspielen neuer Daten neu zu starten, um den Status aller AR-Komponenten zurückzusetzen.
Pausieren und Fortsetzen
Verwenden Sie FramePlayer.enabled, um die Wiedergabe zu pausieren und fortzusetzen.
Beispiel: Setzen Sie FramePlayer.enabled = false, um die Wiedergabe zu pausieren:
player.enabled = false;
Nach dem Pausieren der Wiedergabe stoppen alle AR-Funktionskomponenten. Ob Inhalte und Interaktionslogik in der Szene stoppen, hängt von den Inhalten selbst ab. Beim Fortsetzen der Wiedergabe arbeiten die AR-Funktionskomponenten von der Pauseposition aus weiter.
Wiedergabe stoppen
Verwenden Sie Stop(), um die Wiedergabe zu stoppen.
player.Stop();
Nach dem Stoppen der Wiedergabe stoppen alle AR-Funktionskomponenten. Ob Inhalte und Interaktionslogik in der Szene stoppen, hängt von den Inhalten selbst ab.
Springen zu einem bestimmten Zeitpunkt (Seek)
Verwenden Sie Seek(double), um zu einem bestimmten Zeitpunkt zu springen und abzuspielen.
Beispiel: Springen Sie zu 5 Sekunden und spielen Sie ab:
player.Seek(player.Time + 5);
Anmerkung
Nach dem Springen beginnt die Wiedergabe möglicherweise nicht exakt am gewünschten Zeitpunkt, abhängig vom Kodierungsformat der EIF-Datei und dem Keyframe-Intervall.
Nicht alle EIF-Dateien unterstützen das Springen. Verwenden Sie die Eigenschaft IsSeekable, um zu prüfen, ob die aktuell wiedergegebene EIF-Datei das Springen unterstützt.
Anmerkung
Nur EIF-Dateien, die im Format H264 aufgezeichnet und ordnungsgemäß gestoppt wurden, unterstützen das Springen. Wenn die EIF-Datei das Springen nicht unterstützt, hat der Aufruf von Seek(double) keine Auswirkung.
Wiedergabegeschwindigkeit steuern
Verwenden Sie die Eigenschaft Speed, um die Wiedergabegeschwindigkeit zu steuern.
Beispiel: Erhöhen Sie die Wiedergabegeschwindigkeit um das 0,1-fache:
player.Speed += 0.1;
Nicht alle EIF-Dateien unterstützen die Geschwindigkeitssteuerung. Verwenden Sie die Eigenschaft IsSpeedChangeable, um zu prüfen, ob die aktuell wiedergegebene EIF-Datei die Geschwindigkeitssteuerung unterstützt.
Anmerkung
Nur EIF-Dateien, die im Format H264 aufgezeichnet und ordnungsgemäß gestoppt wurden, unterstützen die Geschwindigkeitssteuerung. Wenn die EIF-Datei die Geschwindigkeitssteuerung nicht unterstützt, hat das Setzen von Speed keine Auswirkung.
Verwandte Themen
- Probieren Sie das Session-Validierungstool aus. Dieses Tool enthält einen einfachen EIF-Player, um Simulationsläufe mit EIF-Dateien schneller durchzuführen.