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
- Überprüfen Sie ist meine Lokalisierungsbibliothek verwendbar?
Anpassung der Geräteunterstützungsstufe
Die Eigenschaft MegaTrackerFrameFilter.MinInputFrameLevel von MegaTrackerFrameFilter dient zur Angabe der minimalen Gerätestufe, die von Mega unterstützt wird.
![]()
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:
- Die gewünschte Frame-Datenquelle muss sich in der Gruppe der optionalen Frame-Datenquellen der session befinden.
- MegaTrackerFrameFilter.MinInputFrameLevel muss größer oder gleich dem CameraTransformType-Level der gewünschten Frame-Datenquelle sein.
Um beispielsweise 3DoF-Tracking in der Standardsession zu unterstützen, müssen Sie:
- ThreeDofCameraDeviceFrameSource zur Gruppe der Frame-Datenquellen der session hinzufügen.
- MegaTrackerFrameFilter.MinInputFrameLevel auf ThreeDof setzen.
Um beispielsweise die 5DoF-Tracking-Unterstützung in der Standardsession zu entfernen, müssen Sie:
- InertialCameraDeviceFrameSource aus der Gruppe der Frame-Datenquellen der session entfernen.
- MegaTrackerFrameFilter.MinInputFrameLevel auf SixDof setzen (selbst ohne diese Änderung würde 5DoF nicht verwendet werden, da keine 5DoF-Frame-Datenquelle vorhanden ist).
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).
![]()
Gleichzeitig müssen Sie Block Root auf das MegaBlocks-Objekt in der Szene festlegen.
![]()
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.
![]()
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:
![]()
Bei fehlgeschlagener Lokalisierung enthält der Mega-Block den Status NotFound:
![]()
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.
![]()
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
- Best Practices für AR Session mit Mega beschreibt die Erstellung und Konfiguration einer für Mega optimierten AR Session
- Hinzufügen von Mega-Tracking-Zielen erklärt das Hinzufügen von Mega-Blöcken und das Laden von Block-Modellen im Unity-Editor zur Entwicklungsunterstützung
- Hinzufügen einer Gruppe von Frame-Datenquellen erläutert die Änderung der Frame-Datenquellengruppe einer session
- Ergebnisse der session abrufen zeigt, wie Sie Tracking-Ergebnisse von Session-Komponenten abrufen
- UI-Nachrichten erklärt die Verwendung von UI-Nachrichten zur Anzeige des Session-Status