Técnica El rendimiento del seguimiento mundial se ve afectado por limitaciones de recursos
Mientras ejecuta una sesión ARKit con el seguimiento mundial habilitado, la consola Xcode muestraregistrar mensajes sobre (supongo: reducido) el rendimiento del seguimiento, aunque
la sesión AR está en estado de seguimiento normal,
Estoy usando el dispositivo en una sala de oficina bien iluminada con muchas "características" para detectar, y
El dispositivo se mueve solo sutilmente.
TLDR: Quiero comprender qué puede estar causándoles, qué impacto tienen y cómo prevenirlos, o (re) actuar sobre ellos cuando ocurren:NÓTESE BIEN. No simplemente ocultar el error.
[Technique] World tracking performance is being affected by resource constraints [0]
[Technique] World tracking performance is being affected by resource constraints [1]
La aplicación de consola muestra que estos provienen de la bibliotecaARKit y caen en la categoría de registroTécnica. Aunque suenen comoadvertencias, la aplicación Consola muestra su tipo comoerrores.
Como se esperaba al usar el seguimiento mundial, la aplicación Consola muestra muchasCoreMotion
registra el tiempo de los errores, pero esas líneas no parecen contener errores, advertencias u otra información que me ayude a diagnosticar lo que está sucediendo.
En el momento en que aparecen los errores en el registro, haysin devoluciones de delegado, pero eventualmente (entre 5 segundos o 50 segundos) la pantalla se congelará con la sesión de devolución de llamada fallida:
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 fuente ARKit /documentación no proporciona ninguna pista sobre qué "restricciones de recursos" podrían haber causado la incapacidad dedeterminar la posición del dispositivo, solo dice:
El seguimiento mundial ha encontrado un error fatal.
He intentado (sin éxito) evitar que aparezcan las advertencias:
restablecer el seguimiento de la sesión: aún errores,
restablecer la sesión con la eliminación de todosARAnchor
s: todavía errores,
desactivación de la detección del plano (una vez que ya no es necesario): aún errores,
Pausar la sesión AR silencia las advertencias (tiene sentido, ya que significa que el dispositivo deja de rastrear su movimiento mientras está en pausa), pero al reanudar la sesión, las advertencias regresan.
Al cerrar la sesión y volver a crearla (es decir, descartar VC y volver a crear), sin haber movido la cámara (o cambiado la iluminación), el problema no siempre vuelve a ocurrir.
Mi mejor conjetura es queluces TL intermitentes son la causa de las advertencias de rendimiento de seguimiento, dadas las de Appleexplicación de cómo funciona el rastreo mundial:
... odometría visual-inercial. Este proceso combina información del hardware de detección de movimiento del dispositivo iOS con análisis de visión por computadora de la escena visible para la cámara del dispositivo. ARKit reconoce características notables en la imagen de la escena, rastrea las diferencias en las posiciones de esas características en los cuadros de video y compara esa información con los datos de detección de movimiento.
(iPhone 6S, iOS 11 beta 4, ninguna otra aplicación ejecutándose en segundo plano)
Preguntas:
Cuál es la diferencia entre[0]
y[1]
?
¿Qué puede causar estos errores?
Qué impacto tienen mientras que elARSession
no ha fallado (todavía)? Supongo que veremos modelos "nerviosos" como elcoordenadas mundiales suministrado por las actualizaciones del marco no son precisas: NB. después de reiniciar / pararARAnchor
el seguimiento de los errores aún ocurrió.
¿Sabremos si la sesión de AR está a punto de fallar, o será inesperada?(De nuevo, elARSession
no falla inmediatamente después de que el estado de seguimiento cambia a "limitado")
¿Hay alguna manera de lidiar con esto, p. liberar estas "limitaciones de recursos" mencionadas, ¿o incluso evitar que ocurran?