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
- Grundlegende konzepte, zusammensetzung und arbeitsabläufe von sitzungen über die Einführung in ARSession verstehen
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:

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:

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
- Versuchen sie, Verfügbarkeit und geräteunterstützung zu bestimmen