web-dev-qa-db-fra.com

La performance du suivi de Technique World est affectée par des ressources limitées

Lors de l’exécution d’une session ARKit avec le suivi universel activé, la console Xcode affiche messages de journalisation relatifs aux performances du suivi (je présume: réduites)}, même si

TLDR: Je veux comprendre ce qui peut leur causer, quel impact ils ont et comment les prévenir, ou (ré) agir sur eux quand ils se produisent —NB. Ne cachez pas simplement l'erreur.

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

L'application Console indique qu'ils proviennent de la bibliothèque ARKit et relèvent de la catégorie de journalisation Technique. Bien qu'ils ressemblent à avertissements, l'application console affiche leur type sous la forme erreurs.

Comme prévu lors de l'utilisation du suivi du monde, l'application console affiche de nombreux journaux CoreMotion au moment des erreurs, mais ces lignes ne semblent contenir aucune erreur, aucun avertissement ni aucune autre information susceptible de m'aider à diagnostiquer ce qui se passe.

Au moment où les erreurs apparaissent dans le journal, il y a aucun rappel de délégué, mais finalement (tout ce qui se situe entre 5 et 50 secondes), l'écran se fige lorsque la session de rappel a échoué:

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.}

La source ARKit / documentation ne fournit aucune indication sur les "contraintes de ressources" qui auraient pu causer l'impossibilité de déterminer la position du périphérique}, il se lit simplement:

Le suivi du monde a rencontré une erreur fatale.

J'ai essayé (sans succès) d'empêcher les avertissements d'apparaître en:

  • réinitialisation du suivi de session: encore des erreurs,

  • réinitialisation de la session avec suppression de toutes les ARAnchors: still errors,

  • désactivation de la détection de plan (une fois que vous n'en avez plus besoin): toujours des erreurs,

Mettre en pause la session AR désactive les avertissements (cela a du sens, car cela signifie que le périphérique arrête de suivre son mouvement lorsqu'il est en pause), mais lors de la reprise de la session, les avertissements sont renvoyés.

Lors de la fermeture de la session et de sa recréation (par exemple, rejeter VC et recréer), sans avoir déplacé la caméra (ni modifié l'éclairage), le problème ne se reproduit pas toujours.

Ma meilleure hypothèse est quevoyants TL clignotantssont la cause des avertissements de performance de suivi, étant donné l'explication de d'Apple sur le fonctionnement du suivi mondial :

… Odométrie visuelle-inertielle. Ce processus combine les informations du matériel de détection de mouvement du périphérique iOS avec une analyse de la vision par ordinateur de la scène visible par la caméra du périphérique. ARKit reconnaît les caractéristiques remarquables de l'image de la scène, enregistre les différences de position entre ces images et entre les images vidéo, et compare ces informations aux données de détection de mouvement.

(iPhone 6S, iOS 11 beta 4, aucune autre application ne tourne en arrière-plan)


Des questions:

  • Quelle est la différence entre [0] et [1]?

  • Qu'est-ce qui peut causer ces erreurs?

  • Quel impact ont-ils alors que la ARSession n'a pas (encore) échoué? Je suppose que nous verrons des modèles "instables", car les coordonnées mondiales fournies par les mises à jour du cadre ne sont pas exactes - NB. après avoir réinitialisé/arrêté ARAnchor le suivi des erreurs se produisait toujours.

  • Savons-nous si la session AR est sur le point d’échouer ou sera-t-elle inattendue? (Encore une fois, la ARSession n'échoue pas immédiatement après le passage de l'état de suivi à "limité")

  • Y a-t-il un moyen de régler ce problème, par exemple libérer ces "contraintes de ressources" mentionnées - ou même les empêcher de se produire?

15
PDK

Autoriser uniquement Portrait Device Orientation a résolu cette erreur pour moi. 

 enter image description here

4
Scott Condron

Je pense que c'est un bug de xcode 9.1. Si vous utilisez SceneKit: recherchez où vous définissez .backgroundColor = "votre couleur" pour ARSCNView ou la sous-classe. Commentez cette ligne et nettoyez le projet. 

3
Yao Huela

Cette erreur m'est arrivée car j'ai ajouté manuellement un contrôleur de vue sur le storyboard et ajouté une variable ARSKView. Cela l'ajoute en tant qu'enfant à une UIView qui est par défaut une vue enfant dans une UIViewController. Par conséquent, pour prendre en charge l'orientation paysage et portrait, je devais ajouter les contraintes de mise en page automatique, qui pour une raison quelconque ont déclenché cette erreur .

Lorsque j'ai consulté le projet d'AR stock, la ARSKView est un enfant immédiat du contrôleur de vue et prend en charge toutes les tailles et orientations de vue prêtes à l'emploi, sans contraintes de mise en page automatique. Lorsque je l'ai configuré de cette façon, les erreurs ont disparu.

0
inorganik

Je pense que c'est une sorte de sac, car ce problème ne m'est arrivé que lorsque j'utilise des contraintes lorsque j'essaie de faire quelque chose.

Si je désactive, par exemple, la contrainte ci-dessous, mon code fonctionne correctement.

 enter image description here

0
wm.p1us