Simulation mit EIF-Dateien in Unity verwenden
Dieser Artikel erklärt, wie Sie EIF-Dateien in Unity für Simulationsläufe nutzen können, um den Großteil der Entwicklungsarbeit am Computer zu erledigen und Ergebnisse visuell zu sehen.
Vorbereitung
Die Simulation verwendet EIF-Dateien als Eingabe, daher müssen Sie vorab eine EIF-Datei aufzeichnen:
- Siehe EIF-Datei aufzeichnen für die Aufnahme einer EIF-Datei
Außerdem sollten Sie vertraut sein mit:
- Grundkonzepten von EIF-Dateien aufzeichnen und für Simulation verwenden
- Grundkonzepten, Komponenten und Arbeitsabläufen einer AR Session
- Zugriff auf AR-Funktionskomponenten in der Session über Zugriff auf Session-Komponenten
Frame Player in der Session aktivieren
ARSession.AssembleOptions bietet verschiedene Möglichkeiten, die Kombination von Session-Komponenten zu konfigurieren. Eine Möglichkeit ist, AssembleOptions.FrameSource auf FramePlayer zu setzen, um die Frame Player-Komponente zu aktivieren und so Simulationen mit EIF-Dateien zu ermöglichen.
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 wird die Frame Player-Komponente beim Start der Session aktiviert, ohne andere Frame Source-Komponenten zu nutzen.
Die Wiedergabe einer EIF-Datei mit dem Frame Player zeigt folgendes Video:
Dieses Video zeigt den Frame Player bei der Erstellung einer dichten Raumkartierung 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 sieht.
Während der Wiedergabe arbeiten alle AR-Funktionskomponenten in der Session normal. Inhalte und Interaktionslogik in der Szene funktionieren ebenfalls, sodass Sie die meiste Entwicklungsarbeit am Computer erledigen und Ergebnisse direkt sehen können.
Tipp
Die mit dem Frame Player auf einem Computer wiedergegebenen Effekte entsprechen grundsätzlich denen, die während der Aufnahme auf dem Smartphone zu sehen waren.
Wichtig
Die Laufzeiteffekte bei der Wiedergabe hängen vom Aufnahmegerät und der damals verwendeten Frame Source ab. Es wird empfohlen, EIF-Dateien mit einem Gerät aufzunehmen, das dem Zielgerät ähnlich ist oder ihm entspricht. Achten Sie besonders darauf, ob die Bewegungserkennung während der Aufnahme 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 oder Mega), verhalten sich möglicherweise nicht konsistent mit der Gerätefunktion.
Wiedergabe beim Session-Start
Standardmäßig startet der Frame Player beim Session-Start automatisch die Wiedergabe der EIF-Datei. Vor der Wiedergabe muss jedoch der Pfad zur EIF-Datei festgelegt 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 Frame Player beim Session-Start fehl und protokolliert eine Fehlermeldung:
File not found:
Manuelle Wiedergabe
Um den Wiedergabezeitpunkt manuell zu steuern, setzen Sie FramePlayer.enabled vor Session-Start auf false:
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:

Starten Sie die Wiedergabe dann manuell mit Play().
Beispiel:
if (Session.Assembly.FrameSource is FramePlayer player)
{
player.Play();
}
Jeder Aufruf von Play() stoppt eine eventuell laufende Wiedergabe und startet von vorne.
Vorsicht
Beim Abspielen neuer Daten werden vorhandene Szenendaten nicht gelöscht. Der Status der AR-Komponenten wird ebenfalls 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.
Dies hat zwar bei einigen Funktionen geringe Auswirkungen, kann jedoch bei bewegungsabhängigen Funktionen (z. B. dichten Raumkarten oder Mega) zu abnormalen Zuständen führen. Es 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;
Bei Pause stoppen alle AR-Funktionskomponenten. Ob Inhalte und Interaktionen in der Szene ebenfalls stoppen, hängt vom Inhalt selbst ab. Beim Fortsetzen arbeiten die AR-Komponenten an der pausierten Position weiter.
Wiedergabe stoppen
Verwenden Sie Stop(), um die Wiedergabe zu stoppen.
player.Stop();
Nach dem Stoppen arbeiten alle AR-Funktionskomponenten nicht mehr. Ob Inhalte und Interaktionen in der Szene ebenfalls stoppen, hängt vom Inhalt selbst ab.
Zu einem bestimmten Zeitpunkt springen (Seek)
Verwenden Sie Seek(double), um zu einem bestimmten Zeitpunkt zu springen.
Beispiel: 5 Sekunden vorspulen:
player.Seek(player.Time + 5);
Anmerkung
Die Wiedergabe startet möglicherweise nicht exakt am gewünschten Zeitpunkt, je nach Kodierung der EIF-Datei und Keyframe-Intervall.
Nicht alle EIF-Dateien unterstützen das Springen. Überprüfen Sie mit IsSeekable, ob die aktuelle Datei dies unterstützt.
Anmerkung
Nur mit dem Format H264 aufgezeichnete und ordnungsgemäß gestoppte EIF-Dateien unterstützen das Springen. Ist dies nicht der Fall, hat Seek(double) keine Wirkung.
Wiedergabegeschwindigkeit steuern
Verwenden Sie die Eigenschaft Speed, um die Wiedergabegeschwindigkeit zu steuern.
Beispiel: Erhöhung der Geschwindigkeit um 0,1-fach:
player.Speed += 0.1;
Nicht alle EIF-Dateien unterstützen Geschwindigkeitsänderungen. Überprüfen Sie mit IsSpeedChangeable, ob die aktuelle Datei dies unterstützt.
Anmerkung
Nur mit H264 aufgezeichnete und ordnungsgemäß gestoppte EIF-Dateien unterstützen Geschwindigkeitsänderungen. Ist dies nicht der Fall, hat das Setzen von Speed keine Wirkung.
Verwandte Themen
- Probieren Sie das Session-Validierungstool aus, das einen einfachen EIF-Player enthält, um schnell Simulationen mit EIF-Dateien durchzuführen