Table of Contents

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

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.
  • 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.

alt text

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:

Zum Beispiel müssen Sie für 3DoF-Tracking in der Standard-Sitzung:

Ein weiteres Beispiel: Wenn Sie die 5DoF-Tracking-Unterstützung aus der Standard-Sitzung entfernen möchten, müssen Sie:

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.

alt text

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.

alt text

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