Mega Go Tracking-Prozess steuern
Dieser Artikel beschreibt, wie sich verschiedene Funktionen und Parameter im Mega-Go-Tracking-Prozess steuern lassen, um den Anforderungen unterschiedlicher Anwendungsszenarien gerecht zu werden.
Vor Beginn
- Prüfen Sie Ist meine Lokalisierungsfunktion verfügbar?, um sicherzustellen, dass die richtige Karte heruntergeladen wurde.
Arbeitsablauf des Trackers
Der Arbeitsablauf des Trackers ist wie folgt:
flowchart LR
subgraph startup_graph[Start]
direction TB
sstart((Sitzungsstart))
create[Native Erstellung]
load(Target laden)
verify[Trial-Prüfung]
init_g[[Initialisierung]]
end
subgraph init_graph[Initialisierung]
direction TB
init_{6DoF-Initialisierung erfolgreich<br>oder nicht 6DoF}
init[[Lokaler Tracking-Initialisierungsprozess]]
detecting[[Erkennung]]
tracking_g[[Tracking]]
end
subgraph tracking_graph[Tracking]
direction TB
tracking[[Kontinuierliches Tracking]]
end
subgraph stopping_graph[Stopp]
direction TB
unload(Target entladen)
dispose[Native Zerstörung]
sstop([Sitzung stoppen])
end
sstart --> create --> load --> verify --> init_g
init --> init_ --> |Ja| detecting --> tracking_g
unload --> dispose --> sstop
init_ --> |Nein| init
startup_graph --> init_graph
init_graph --> tracking_graph
tracking_graph --> stopping_graph
Der Prozess gliedert sich grob in mehrere Phasen:
- Start:
- Nach dem Start der Sitzung wird der native Tracker erstellt.
- Nachdem
Start()des Ziels selbst ausgeführt wurde, wird es in den entsprechenden Tracker geladen. - Bei Trial-Daten muss die Trial-Berechtigung online geprüft werden. Erst nach erfolgreicher Prüfung werden die nächsten Phasen erreicht.
- Initialisierung:
- Bei Verwendung einer 6DoF-Frame-Quelle wird der lokale Tracking-Initialisierungsprozess gestartet.
- Die lokale Tracking-Initialisierung kann einige Zeit dauern; das hängt von der Komplexität der Szene und der Geräteleistung ab und steht meist mit dem im Unterbau der Frame-Quelle verwendeten Algorithmus in Zusammenhang.
- Bei Verwendung einer nicht 6DoF-Frame-Quelle wird die lokale Initialisierungsphase übersprungen und die Erkennung direkt gestartet.
- Der Erkennungsprozess kann einige Zeit dauern, abhängig von der Lokalisierbarkeit der Szene sowie von Qualität der Datenerfassung und des Mappings.
- In der Standardkonfiguration wird der Inhalt dieser Phase nicht angezeigt. Dieses Verhalten lässt sich über die Optionen der ActiveController-Komponente steuern.
- Bei Verwendung einer 6DoF-Frame-Quelle wird der lokale Tracking-Initialisierungsprozess gestartet.
- Tracking:
- Der Tracker verfolgt fortlaufend den aktuellen Block.
- In der Standardkonfiguration wird nur der Inhalt unter dem Zielknoten im Tracking-Zustand (TargetController.IsTracked ==
true) angezeigt. Dieses Verhalten lässt sich über die Optionen der ActiveController-Komponente steuern.
- Stopp:
- Nach dem Stopp der Sitzung wird das Ziel entladen und der native Tracker zerstört.
Unterstützungsstufe des Geräts anpassen
Die Eigenschaft MegaGoTrackerFrameFilter.MinInputFrameLevel der MegaGoTrackerFrameFilter dient dazu, die vom Mega unterstützte minimale Geräteklasse festzulegen.
![]()
Mega Go kann mit fast allen Arten von Frame-Datenquellen laufen, jedoch wirken sich unterschiedliche Frame-Datenquellen unterschiedlich auf das Tracking-Ergebnis aus.
Standardmäßig wählt Mega für das Tracking die höchste vom Gerät unterstützte Frame-Datenquelle. Die Standardkonfiguration der Mega-Go-fähigen Sitzung ist bereits so eingerichtet, dass 6DoF- und 5DoF-Frame-Datenquellen unterstützt werden.
Damit während der Laufzeit von Mega eine bestimmte Frame-Datenquelle unterstützt wird, müssen zwei Bedingungen erfüllt sein:
- Die benötigte Frame-Datenquelle befindet sich in der optionalen Frame-Datenquellengruppe der Sitzung.
- MegaGoTrackerFrameFilter.MinInputFrameLevel ist größer oder gleich der CameraTransformType-Stufe der benötigten Frame-Datenquelle.
Zum Beispiel müssen Sie für 3DoF-Tracking in der Standard-Sitzung:
- ThreeDofCameraDeviceFrameSource zur Frame-Datenquellengruppe der Sitzung hinzufügen.
- MegaGoTrackerFrameFilter.MinInputFrameLevel auf ThreeDof ändern.
Ein weiteres Beispiel: Wenn Sie die 5DoF-Tracking-Unterstützung aus der Standard-Sitzung entfernen möchten, müssen Sie:
- InertialCameraDeviceFrameSource aus der Frame-Datenquellengruppe der Sitzung entfernen.
- MegaGoTrackerFrameFilter.MinInputFrameLevel auf SixDof ändern (selbst wenn Sie es nicht ändern, wird 5DoF ohnehin nicht verwendet, da keine 5DoF-Frame-Datenquelle vorhanden ist).
Wenn keine verfügbare Frame-Datenquelle die Bedingungen erfüllt, schlägt die Sitzungszusammenstellung fehl.
Aktuellen Systemstatus verstehen
In der Standard-Sitzungskonfiguration werden UI-Nachrichten auf dem Bildschirm angezeigt, die Informationen zum Mega-Go-Status enthalten.
Der Tracker-Status wird neben Mega Go: angezeigt, zum Beispiel Tracking, VerifyingTrial usw. Während der Erkennungs- und Tracking-Phase werden auch die Lokalisierungsaktualisierungen darunter angezeigt.
![]()
Der Tracking-Status des aktuell geladenen Blocks wird unter Mega Go: als Block (<trackingStatus>): <name> (<id>) angezeigt. Dabei ist <name> der Name des Blocks und <id> die ID des Blocks. trackingStatus kann Tracking oder NotTracking sein und zeigt an, ob der aktuelle Block verfolgt wird.

Sie können die Eigenschaft MegaGoTrackerFrameFilter.Status verwenden, um den aktuellen Status zu erhalten und so den Betriebszustand des Trackers zu verstehen. Bei einem Fehlerstatus können Sie MegaGoTrackerFrameFilter.Error verwenden, um den Fehlerstatus auszulesen und entsprechend zu verarbeiten.
Das folgende Beispiel zeigt, wie diese Eigenschaften verwendet werden und wie man auf typische Ausnahmezustände reagiert:
void HandleTrackerStatus()
{
if (tracker.Status == MegaGoTrackerStatus.Error)
{
if (tracker.Error == MegaGoTrackerError.ServiceVerificationFailed)
{
// Die Dienstprüfung ist fehlgeschlagen. Prüfen Sie, ob die Daten abgelaufen oder ungültig geworden sind (nach der Umstellung von der Beta-Version auf die offizielle Version werden die Beta-Daten ungültig).
}
else if (tracker.Error == MegaGoTrackerError.LocalVerificationFailed)
{
// Lokale Prüfung fehlgeschlagen. Prüfen Sie, ob die Zieldatei vollständig ist.
}
else
{
// Andere Fehler.
}
}
else if (tracker.Status == MegaGoTrackerStatus.VerifyingTrial)
{
// Die Prüfung des Trial-Ziels läuft. Wenn die Prüfung längere Zeit nicht abgeschlossen werden kann, prüfen Sie bitte die Netzwerkverbindung.
}
else if (tracker.Status == MegaGoTrackerStatus.VIOInitializing)
{
// Die Initialisierung der VIO-Eingabe läuft. Wenn sie lange nicht abgeschlossen werden kann, sollte der Benutzer auf eine bessere Nutzung hingewiesen werden.
// Beispiel: "Bitte versuchen Sie, die Kamera schräg nach vorne zu richten und das Gerät im Körper deutlich 5-mal nach links und rechts zu bewegen."
}
}
Sie können das Ereignis MegaGoTrackerFrameFilter.LocalizationRespond verwenden, um die Lokalisierungsaktualisierungen abzurufen.
Pausieren und Fortsetzen
Das Setzen von MegaGoTrackerFrameFilter.enabled auf false pausiert das Tracking.
Standardmäßig wird nach dem Pausieren des Trackings sämtlicher Inhalt unter den Blockknoten ausgeblendet.
Verwandte Themen
- Best Practices für AR-Sitzungen mit Mega Go beschreibt, wie eine AR-Sitzung für Mega Go erstellt und konfiguriert wird.
- Mega-Go-Tracking-Ziele hinzufügen beschreibt, wie ein Mega-Go-Tracking-Block hinzugefügt und das Blockmodell im Unity-Editor geladen wird.
- Eine Gruppe von Frame-Datenquellen hinzufügen beschreibt, wie die Frame-Datenquellengruppe der Sitzung geändert wird.
- Laufendergebnisse der Sitzung abrufen beschreibt, wie die Tracking-Ergebnisse der Sitzungskomponente abgerufen werden.
- UI-Nachrichten beschreibt, wie UI-Nachrichten zur Anzeige des Sitzungsstatus verwendet werden.