webentwicklung-frage-antwort-db.com.de

Die Tracking-Leistung von Technique World wird durch Ressourceneinschränkungen beeinflusst

Während der Ausführung einer ARKit-Sitzung mit aktivierter World-Tracking-Funktion zeigt die Xcode-Konsole Protokollnachrichten über (ich nehme an: reduzierte) Tracking-Leistung an 

  • die AR-Sitzung befindet sich im Status "Normal". 

  • Ich verwende das Gerät in einem gut beleuchteten Büroraum mit vielen "Funktionen", die erkannt werden müssen

  • Das Gerät bewegt sich nur geringfügig .

TLDR: Ich möchte verstehen, was sie verursachen kann, welche Auswirkungen sie haben und wie man sie verhindern oder (erneut) auf sie reagieren kann, wenn sie auftreten - NB. Den Fehler nicht einfach verbergen.

[Technique] World tracking performance is being affected by resource constraints [0]
[Technique] World tracking performance is being affected by resource constraints [1]

Die Konsolen-App zeigt, dass diese aus der Bibliothek ARKit stammen und in die Protokollierungskategorie Technik..__ fallen. Obwohl sie wie warnings klingen, die Konsolen-App zeigt ihren Typ als Fehler.

Wie bei der Verwendung von World Tracking erwartet, zeigt die Console-App eine Vielzahl von CoreMotion-Protokollen zum Zeitpunkt der Fehler. Diese Zeilen scheinen jedoch keine Fehler, Warnungen oder andere Informationen zu enthalten, die mir bei der Diagnose des Problems helfen.

In dem Moment, in dem die Fehler im Protokoll angezeigt werden, sind keine Delegiertenrückrufe vorhanden, aber irgendwann (zwischen 5 oder 50 Sekunden) wird der Bildschirm mit der fehlgeschlagenen Rückrufsitzung einfrieren:

Error Domain=com.Apple.arkit.error Code=200 "World tracking failed." UserInfo={NSLocalizedDescription=World tracking failed., NSLocalizedFailureReason=World tracking cannot determine the device's position.}

Die ARKit-Quelle / documentation enthält keine Hinweise darauf, welche "Ressourceneinschränkungen" dazu geführt haben, dass Position des Geräts bestimmen nicht möglich ist.

Die weltweite Verfolgung hat einen schwerwiegenden Fehler festgestellt.

Ich habe (ohne Erfolg) versucht, die Warnungen zu stoppen, indem 

  • zurücksetzen der Sitzungsverfolgung: noch Fehler,

  • zurücksetzen der Sitzung mit Entfernen aller ARAnchors: noch Fehler,

  • deaktivieren der Ebenenerkennung (einmal nicht mehr benötigt): noch Fehler,

Wenn Sie die AR-Sitzung anhalten, werden die Warnungen stummgeschaltet (ist sinnvoll, da das Gerät die Bewegung während der Pause nicht mehr verfolgt). Wenn Sie die Sitzung jedoch fortsetzen, werden die Warnungen wieder angezeigt.

Wenn Sie die Sitzung schließen und erneut erstellen (d. H. VC abbrechen und neu erstellen), während die Kamera nicht bewegt wurde (oder die Beleuchtung nicht geändert wurde), tritt das Problem nicht immer wieder auf.

Meine beste Vermutung ist, dass blinkende TL-Lichter die Ursache für die Tracking-Performance-Warnungen sind, wenn man die Erklärung von Apple wie World Tracking funktioniert :

… Visuelle Inertialradometrie. Bei diesem Vorgang werden Informationen von der Bewegungserkennungshardware des iOS-Geräts mit der Computer-Vision-Analyse der für die Kamera des Geräts sichtbaren Szene kombiniert. ARKit erkennt bemerkenswerte Merkmale im Szenenbild, verfolgt Unterschiede in den Positionen dieser Merkmale zwischen Videoframes und vergleicht diese Informationen mit Bewegungserkennungsdaten. 

(iPhone 6S, iOS 11 Beta 4, keine anderen Apps, die im Hintergrund ausgeführt werden)


Fragen: 

  • Was ist der Unterschied zwischen [0] und [1]?

  • Was kann diese Fehler verursachen?

  • Welche Auswirkungen haben sie, während die ARSession (noch) nicht versagt hat? Ich gehe davon aus, dass wir "sprunghafte" Modelle sehen werden, da die von den Frame-Aktualisierungen bereitgestellten Weltkoordinaten nicht genau sind - NB. Nach dem Zurücksetzen/Stoppen von ARAnchor sind die aufgetretenen Fehler immer noch aufgetreten.

  • Werden wir wissen, ob die AR-Sitzung scheitert, oder wird es unerwartet sein? (Die Variable ARSession schlägt nicht sofort fehl, nachdem der Tracking-Status in "limitiert" geändert wurde.)

  • Gibt es eine Möglichkeit, damit umzugehen, z. diese erwähnten "Ressourceneinschränkungen" auflösen - oder sogar verhindern, dass sie überhaupt auftreten?

15
PDK

Nur das Erlauben der Ausrichtung von Hochformatgeräten hat diesen Fehler für mich behoben. 

 enter image description here

4
Scott Condron

Ich denke, das ist Xcode 9.1 Fehler. Wenn Sie SceneKit verwenden: Finden Sie, wo Sie .backgroundColor = "your color" für ARSCNView oder die Unterklasse festlegen. Kommentiere diese Zeile und säubere das Projekt. 

3
Yao Huela

Dieser Fehler ist mir passiert, weil ich manuell einen Ansichtscontroller im Storyboard hinzugefügt und eine ARSKView hinzugefügt habe. Dies fügt es als untergeordnetes Element zu einer UIView hinzu, die standardmäßig eine untergeordnete Ansicht in einer UIViewController ist. Um die Ausrichtung im Quer- und Hochformat zu unterstützen, musste ich Auto-Layout-Einschränkungen hinzufügen, was diesen Fehler aus irgendeinem Grund auslöste .

Wenn ich mir das AR-Projekt ansehe, ist ARSKView ein direktes untergeordnetes Element des Ansichtscontrollers und unterstützt alle Ansichtsgrößen und -ausrichtungen ohne Auto-Layout-Einschränkungen. Wenn ich es so eingerichtet habe, sind die Fehler verschwunden.

0
inorganik

Ich denke, das ist eine Art Sack, weil dieses Problem nur bei mir aufgetreten ist, wenn ich Einschränkungen aufnehme, wenn ich versuche, etwas zu packen.

Wenn ich beispielsweise die Inaktivierung unter meinem Code deaktiviere, funktioniert dies erwartungsgemäß gut.

 enter image description here

0
wm.p1us