Table of Contents

Geräteunterstützung und session bericht

Aufgrund von unterschieden in der hardware und leistung von geräten können AR-funktionen oft nicht auf allen geräten ausgeführt werden. Daher ist es entscheidend, die unterstützung des aktuellen geräts genau zu bestimmen, wenn AR-funktionen verwendet werden. Dieser artikel erklärt, wie die geräteverfügbarkeit in Unity ausgedrückt wird und wie informationen zur geräteunterstützung und sitzungsverfügbarkeit über den sitzungsbericht (ARSession.Report) abgerufen werden können.

Vorbereitung

Geräteunterstützung, sitzungsverfügbarkeit und zusammenbau

Jede AR-funktion kann unterschiedliche geräte unterstützen. Zum Beispiel erfordert die bewegungsverfolgung bestimmte hardwarekomponenten und meist eine kalibrierung des geräts, während die bildverfolgungsfunktion auf fast allen geräten mit funktionierender kamera ausgeführt werden kann. Um zu bestimmen, ob eine AR-anwendung auf einem bestimmten gerät ausgeführt werden kann, muss daher normalerweise bekannt sein, welche AR-funktionen aktuell verwendet werden, oder anders ausgedrückt, ob eine bestimmte sitzung auf dem gerät ausgeführt werden kann.

In Unity wird dieser bestimmungsprozess während der sitzungszusammenbau-phase (Assemble()) durchgeführt. Der zusammenbauprozess bestimmt den endgültigen zustand der sitzung vor dem start basierend auf den enthaltenen komponenten und der unterstützung des aktuellen geräts.

Wenn der zusammenbau erfolgreich ist, geht die sitzung in den zustand Ready über und kann gestartet und ausgeführt werden; wenn der zusammenbau fehlschlägt, geht die sitzung in den zustand Broken über, und die genaue fehlerursache kann über den sitzungsbericht (ARSession.Report) abgefragt werden.

Sitzungsbericht

Die eigenschaft ARSession.Report bietet einen laufbericht der sitzung. Ein sitzungsbericht enthält die folgenden felder:

Eigenschaft Beschreibung
Availability Vollständiger verfügbarkeitsbericht
BrokenReason Grund für die beschädigung der sitzung, gültig wenn der sitzungszustand Broken ist
Exception Spezifische ausnahme bei sitzungsbeschädigung, gültig wenn der sitzungszustand Broken ist

Im sitzungsbericht kann die verfügbarkeit jeder komponente über Availability abgefragt werden, oder über BrokenReason bei einer beschädigten sitzung der detaillierte grund für die beschädigung.

Ein beispiel für einen sitzungsbericht

Wenn beispielsweise unter Windows eine sitzung ImageTrackerFrameFilter, CameraDeviceFrameSource und mehrere andere frame-source-komponenten enthält, überprüft der zusammenbauprozess die verfügbarkeit jeder komponente und generiert einen bericht wie folgt:

alt text

Es ist zu sehen, dass obwohl die Availability der komponente ARCoreFrameSource Unavailable ist, die Availability von ImageTrackerFrameFilter und CameraDeviceFrameSource beide Available sind, sodass der gesamte sitzungszusammenbau erfolgreich ist und die sitzung erfolgreich in den zustand Ready übergeht.

Wenn wir CameraDeviceFrameSource aus der sitzung entfernen, generiert der zusammenbauprozess den folgenden bericht:

alt text

Es ist zu sehen, dass die anzahl der FrameSources-liste von 9 auf 8 gesunken ist, und obwohl die Availability der komponente ImageTrackerFrameFilter immer noch Available ist, schlägt der gesamte sitzungszusammenbau fehl, da keine verfügbaren frame-source-komponenten vorhanden sind, und die sitzung geht in den zustand Broken über. Zu diesem zeitpunkt ist der wert des felds BrokenReason im bericht NoAvailabileFrameSource, was bedeutet, dass keine frame-source verfügbar ist.

Neben dem zusammenbauprozess kann eine sitzung auch während des betriebs beschädigt werden, z.b. wenn eine laufende komponente versehentlich entfernt wird. In diesem fall kann ebenfalls über den sitzungsbericht der genaue grund für die beschädigung abgefragt werden.

Berichtsaktualisierung

Der sitzungsbericht ändert sich zu den folgenden zeitpunkten:

  • Abschluss der ersten phase des zusammenbaus
    Zu diesem zeitpunkt wird ein vollständiger sitzungsbericht generiert, der die komponentenverfügbarkeit enthält. Der Availability-teil des sitzungsberichts wird zu diesem zeitpunkt festgelegt und ändert sich nicht mehr.
    Aktualisierungen des komponentenverfügbarkeitsberichts können über das ereignis AssembleUpdate abgerufen werden.
    Wenn die sitzung nach dem zusammenbau direkt gestartet wird, können sitzungsberichtsaktualisierungen auch über das ereignis StateChanged abgerufen werden. Zu beachtende sitzungszustände sind: Ready und Broken.

  • Abschluss der zweiten phase des zusammenbaus
    Zu diesem zeitpunkt wird ein neuer komponentenverfügbarkeitsbericht generiert. Der sitzungsbericht wird nicht aktualisiert, es sei denn, die sitzung wird neu gestartet.
    Aktualisierungen des komponentenverfügbarkeitsberichts können über das ereignis AssembleUpdate abgerufen werden.

  • Wenn die sitzung während des starts oder betriebs beschädigt wird
    BrokenReason und Exception im sitzungsbericht werden aktualisiert.
    Sitzungsberichtsaktualisierungen können über das ereignis StateChanged abgerufen werden. Der zu beachtende sitzungszustand ist: Broken.

Berichtsinhalt: Gründe für sitzungsbeschädigung

BrokenReason gibt den grund für die sitzungsbeschädigung an. Folgende situationen sind möglich:

Grund Beschreibung
Uninitialized Zusammenbauprozess, EasyAR Sense wurde nicht erfolgreich initialisiert
LicenseInvalid Zusammenbauprozess, EasyAR Sense-lizenzvalidierung fehlgeschlagen oder nicht für die aktuelle verwendung geeignet
SessionObjectIncomplete Zusammenbauprozess, sitzungsobjekt unvollständig. Z.b. in URP nicht korrekt konfiguriertes RendererFeature
NoAvailabileFrameSource Zusammenbauprozess, keine verfügbare frame-source. Z.b. alle frame-sources nicht verfügbar oder keine frame-source hinzugefügt. Nur bei standard-sitzungskonfiguration zeigt dies die unterstützung der aktuell ausgewählten AR-funktion des geräts an
FrameSourceIncomplete Zusammenbauprozess, frame-source unvollständig. Tritt meist auf, wenn bei benutzerdefinierten frame-sources die frame-source-schnittstelle nicht korrekt implementiert wurde
FrameFilterNotAvailabile Zusammenbauprozess, nicht verfügbarer frame-filter vorhanden. Tritt nur bei bestimmten zusammenbauoptionen auf
StartFailed Start fehlgeschlagen. Z.b. ausnahme während des startvorgangs
RunningFailed Betrieb fehlgeschlagen. Z.b. laufende komponente versehentlich entfernt oder in URP nicht korrekt konfiguriertes RendererFeature

Berichtsinhalt: Verfügbarkeitsinformationen

Availability bietet verfügbarkeitsinformationen für jede komponente in der sitzung. Es enthält die folgenden felder:

Feld Beschreibung
FrameFilters Liste der im zusammenbauprozess überprüften frame-filter-verfügbarkeiten
FrameSources Liste der im zusammenbauprozess überprüften frame-source-verfügbarkeiten
PendingDeviceList Ausstehende downloadaufgaben für gerätelisten
DeviceList Downloadergebnis der geräteliste

Die felder PendingDeviceList und DeviceList geben den downloadstatus der geräteunterstützungsliste an. Beim abschluss der ersten zusammenbauphase tritt der zusammenbau nur dann in die zweite phase ein, wenn PendingDeviceList nicht leer ist. Diese bedingung kann verwendet werden, um zu bestimmen, ob AssembleUpdate ein zweites mal ausgeführt wird.

Nächste schritte