Table of Contents

Steuerung des Mega-Tracking-Prozesses

Dieser Artikel beschreibt, wie Sie verschiedene Funktionen und Parameter des Mega-Tracking-Prozesses steuern können, um den Anforderungen verschiedener Anwendungsszenarien gerecht zu werden.

Vorbereitung

Anpassung der Geräteunterstützungsstufe

Die Eigenschaft MegaTrackerFrameFilter.MinInputFrameLevel von MegaTrackerFrameFilter dient zur Angabe der minimalen Gerätestufe, die von Mega unterstützt wird.

alt text

Mega kann mit nahezu allen Arten von Frame-Datenquellen arbeiten, aber unterschiedliche Frame-Datenquellen haben unterschiedliche Auswirkungen auf die Tracking-Qualität.

Standardmäßig wählt Mega die Frame-Datenquelle mit der höchsten von Ihrem Gerät unterstützten Stufe für das Tracking aus. Die für Mega vorkonfigurierte session ist bereits für Frame-Datenquellen mit 6DoF- und 5DoF-Unterstützung konfiguriert.

Damit Mega während des Betriebs eine Frame-Datenquelle einer bestimmten Stufe verwenden kann, müssen zwei Bedingungen erfüllt sein:

Um beispielsweise 3DoF-Tracking in der Standardsession zu unterstützen, müssen Sie:

Um beispielsweise die 5DoF-Tracking-Unterstützung in der Standardsession zu entfernen, müssen Sie:

Wenn keine geeignete Frame-Datenquelle verfügbar ist, schlägt der Zusammenbau der session fehl.

Verwaltung von Tracking-Zielen

Bei der Verwendung von Mega müssen Sie das von MegaTrackerFrameFilter verwendete Ziel, also den Block, angeben.

Steuerung der Block-Herkunft

In den meisten Fällen wird empfohlen, die Standardkonfiguration beizubehalten, d.h. Blöcke mit Mega Studio im Editor zu importieren.

Wählen Sie das Objekt Mega Tracker unter der session aus. Die Option Block Root Source sollte auf External belassen werden (Standard).

alt text

Gleichzeitig müssen Sie Block Root auf das MegaBlocks-Objekt in der Szene festlegen.

alt text

Durch Ändern der Option Block Root Source können Sie andere Block-Herkunftsarten angeben. Bei der Verwendung von ema-Importdaten wird normalerweise die Option Internal oder Mixed gewählt.

In Skripten können Sie BlockHolder.BlockRootSource ändern, um denselben Effekt zu erzielen.

Steuerung des Multi-Target-Trackings

In den meisten Mega-Anwendungsszenarien ist die Verwendung mehrerer Ziele nicht notwendig. Bevor Sie beherrschen, wie Sie gegenseitige Beeinflussungen mehrerer Blöcke vermeiden können, wird empfohlen, nur einen Block pro Lokalisierungsbibliothek zu verwenden.

Tipp

Grundsätzlich berechnet Mega die Position des Geräts in allen Blöcken, anstatt aus der Lokalisierungsbibliothek die vom Gerät sichtbaren Blöcke auszuwählen. Unüberlegte Verwendung kann aufgrund von Datenverfälschungen zu Qualitätseinbußen führen.

Wählen Sie das Objekt Mega Tracker unter der session aus. Durch Ändern der Option Multi Block können Sie die Multi-Target-Tracking-Funktion aktivieren oder deaktivieren.

alt text

In Skripten können Sie BlockHolder.MultiBlock ändern, um denselben Effekt zu erzielen.

Warnung

In der Regel sollte eine Lokalisierungsbibliothek nur einen Block gleichzeitig enthalten.

Änderungen an der Multi-Target-Konfiguration beeinflussen die Tracking-Qualität und werden generell nicht empfohlen. Verwenden Sie diese Funktion nur unter Anleitung des EasyAR-Supports.

Wenn diese Konfiguration während der Anwendungsausführung geändert wurde, müssen Sie dies bei der Problembeschreibung an EasyAR unbedingt angeben.

Verständnis des aktuellen Systemstatus

In der Standardsession-Konfiguration werden UI-Nachrichten auf dem Bildschirm angezeigt, die Informationen über den Mega-Tracking-Status enthalten.

Bei erfolgreicher Lokalisierung enthält der Mega-Block den Status Found sowie den Namen und die ID des aktuell getrackten Blocks:

alt text

Bei fehlgeschlagener Lokalisierung enthält der Mega-Block den Status NotFound:

alt text

Tipp

NotFound ist ein normaler Status, der während des gesamten Mega-Arbeitsprozesses häufig auftritt. Auch wenn dieser Status angezeigt wird, läuft das Tracking weiter. In der Regel erfordert die Anwendungsentwicklung keine spezielle Behandlung des NotFound-Status.

Mit dem Ereignis MegaTrackerFrameFilter.LocalizationRespond können Sie den aktuellen Lokalisierungsstatus abrufen und feststellen, ob das System aktuell ein Tracking-Ziel gefunden hat.

Der folgende Code zeigt, wie Sie dieses Ereignis verwenden und häufige Ausnahmezustände behandeln, die für Anwendungen relevant sind:

private void Awake()
{
    megaTracker.LocalizationRespond += HandleLocalizationStatusChange;
}
        
private void HandleLocalizationStatusChange(MegaLocalizationResponse response)
{
    var status = response.Status;
    wakingUpCount = status == MegaTrackerLocalizationStatus.WakingUp ? wakingUpCount + 1 : 0;
    if (wakingUpCount >= 5)
    {
        // Der Dienst wird gestartet; der Endbenutzer muss warten
    }

    if (status == MegaTrackerLocalizationStatus.QpsLimitExceeded)
    {
        // QPS-Limit überschritten; zufällige Lokalisierungsfehler bei Endbenutzern (allgemeine Tracking-Qualität sinkt)
        // Normalerweise muss das QPS-Limit erhöht werden, um die Tracking-Qualität bei aktueller Nutzerzahl zu gewährleisten
    }

    if (status == MegaTrackerLocalizationStatus.ApiTokenExpired)
    {
        // Token abgelaufen; tritt nur bei Verwendung der Token-Schnittstelle auf
        // Zur Lösung muss die Anwendung ein neues Token vom eigenen Backend anfordern und mit MegaTrackerFrameFilter.UpdateToken aktualisieren
    }
}

Wenn Ihre Anwendung häufig den Status MegaTrackerLocalizationStatus.RequestTimeout erhält, deutet dies normalerweise auf eine schlechte Netzwerkverbindung des Geräts zum Dienst hin. Es wird empfohlen, die Netzwerkumgebung zu optimieren, um die Tracking-Qualität zu verbessern. In Szenarien, in denen die Netzwerkbedingungen nicht verbessert werden können, können Sie die Anfrage-Timeout-Zeit erhöhen.

Anmerkung

Über dieses Ereignis kann nicht die von der Lokalisierung zurückgegebene Pose abgerufen werden.

Tatsächlich wird die von der Lokalisierung zurückgegebene Pose in der Anwendungsentwicklung nicht benötigt. EasyAR berechnet nach der Lokalisierung eine genauere Pose mithilfe lokaler Algorithmen und stellt diese den Entwicklern zur Verfügung. Diese Pose spiegelt sich bereits in der Transformation des Blocks wider. Siehe Ergebnisse der session abrufen.

Pausieren und Fortsetzen

Die Tracking- und Lokalisierungsfunktionen von Mega können separat pausiert und fortgesetzt werden.

Tracking pausieren

Setzen Sie MegaTrackerFrameFilter.enabled auf false, um das Tracking zu pausieren.

Standardmäßig werden nach dem Pausieren des Trackings alle Inhalte unter den Block-Knoten ausgeblendet.

Lokalisierung pausieren

Setzen Sie MegaTrackerFrameFilter.EnableLocalization auf false, um die Lokalisierung zu pausieren.

Warnung

Das Pausieren der Lokalisierung beeinflusst die Tracking-Qualität und wird generell nicht empfohlen. Verwenden Sie diese Funktion nur unter Anleitung des EasyAR-Supports.

Wenn die Lokalisierung während der Anwendungsausführung pausiert wurde, müssen Sie dies bei der Problembeschreibung an EasyAR unbedingt angeben.

Dienst- und Anfragesteuerung

Sie können das Verhalten bei Dienstanfragen steuern, indem Sie die Parameter der MegaTrackerFrameFilter-Komponente ändern.

Anfrageintervall und Timeout

Wählen Sie das Objekt Mega Tracker unter der session aus. Ändern Sie die Optionen unter Request Time Parameters, um das Zeitintervall und die Timeout-Zeit für Dienstanfragen anzupassen.

alt text

In Skripten können Sie MegaTrackerFrameFilter.RequestTimeParameters ändern, um denselben Effekt zu erzielen.

Warnung

Änderungen am Anfrageintervall beeinflussen die Tracking-Qualität und werden generell nicht empfohlen. Verwenden Sie diese Funktion nur unter Anleitung des EasyAR-Supports.

Wenn das Anfrageintervall während der Anwendungsausführung geändert wurde, müssen Sie dies bei der Problembeschreibung an EasyAR unbedingt angeben.

Wechsel der Lokalisierungsbibliothek

Mit MegaTrackerFrameFilter.SwitchEndPoint(ExplicitAddressAccessData, BlockRootController) können Sie die Lokalisierungsbibliothek zur Laufzeit wechseln. Bei Verwendung dieser Schnittstelle werden Kamerabild und session nicht unterbrochen.

Verwandte Themen