Conceptos de World Locking Tools
El problema.
En el mundo físico diario, un sistema de coordenadas estacionarias describe bien el espacio. Un objeto sin movimiento en un sistema de coordenadas estacionarias seguirá teniendo las mismas coordenadas para siempre. Un grupo de objetos dispuestos en una configuración específica mantendrá esa configuración. Dos objetos que se mueven con velocidades idénticas permanecerán en un desplazamiento fijo entre sí.
Estas y otras leyes similares son una parte fundamental de la existencia. Cuando dejan de aplicarse, la intuición sobre el mundo se vuelve poco confiable.
Soluciones anteriores
El espacio de coordenadas global y los anclajes espaciales de Unity, de forma individual, tratan diferentes aspectos de los problemas causados por las imprecisiones y el desfase de los sensores.
El espacio de coordenadas global de Unity proporciona un fotograma estable de referencia en el que los objetos holográficos permanecen fijos entre sí. Aunque los objetos de este espacio se comportarán de forma coherente entre sí, la coherencia con el mundo físico no se garantiza ni se proporciona con carácter general. Las incoherencias tendrán lugar especialmente cuando el usuario se mueva.
Los anclajes espaciales de Unity pueden mantener la posición de un holograma en el mundo físico cuando el usuario es móvil, pero a costa de la coherencia dentro del mundo virtual. Los distintos anclajes se mueven constantemente en relación unos a otros. También se mueven por el espacio de coordenadas global, lo que dificulta tareas sencillas, como la distribución, y hace que la simulación de efectos físicos sea problemática.
Origen del problema
Esta discusión se centrará en la tecnología de HoloLens, pero estos conceptos se aplican en general a técnicas de seguimiento sin marcadores de la interacción directa, especialmente mejoradas por sistemas inerciales.
HoloLens es increíble a la hora de determinar dónde está en relación con las características visibles en su entorno. Por extensión, también es increíble a la hora de colocar otros objetos virtuales en función de esas mismas características visibles. Cuando el usuario está sentado o de pie en una posición más o menos constante, el dispositivo es excelente para mantener los objetos virtuales registrados con puntos de referencia física visibles. Una taza virtual colocada en una mesa física permanecerá principalmente en el mismo lugar en la superficie de la mesa.
Esto es así cuando HoloLens se limita al mismo volumen pequeño, con un conjunto constante de características visibles a la vista como referencia. Pero hay otros escenarios interesantes.
Cuando el usuario se pone de pie y se mueve por la sala o, posiblemente, incluso entre salas, HoloLens debe cambiar entre las características antiguas que desaparecen y las nuevas que aparecen. Sin entrar en detalles de implementación, resulta evidente ver que, mientras está en tránsito, la precisión del seguimiento va a degradarse mucho.
Este es un escenario simplista para el contexto.
Ilustración
El usuario está en el punto A. Al echar un vistazo, hay muchas características de referencia visibles correctas, por lo que la calidad del seguimiento de la cabeza es excelente y los hologramas colocados se mantendrán en la misma posición.
A continuación, el usuario recorre 10 metros en el espacio físico hasta el punto B. Sin embargo, el seguimiento en tránsito es de menor fidelidad, por lo que, como resultado, una vez que el usuario llega al punto B, el dispositivo registra que solo ha recorrido 9 metros. Se trata de una gran cantidad uniforme a modo de ejemplo, pero es coherente con las especificaciones del dispositivo, que permiten un error de distancia en torno al 10 % en este caso.
Al echar un vistazo con el dispositivo en el punto B, se registran características visibles aceptables. El seguimiento y la estabilidad de los hologramas en el punto B también son excelentes.
Mientras el usuario está en un punto determinado, todo lo que se encuentra en torno a ese punto tiene un aspecto estupendo. Pero hay una incoherencia. Los 10 metros entre los puntos A y B del espacio físico son solo 9 metros en el espacio virtual. Esto se conoce a menudo como "el problema de escalado", aunque "el problema de distancia" puede ser más preciso. Pronto analizaremos ese problema.
Volvamos a nuestro escenario: para la siguiente acción, el usuario vuelve al punto A. Esta vez, los errores de seguimiento hacen que el recorrido de 10 metros de B a A en el espacio físico se contabilicen como 10,5 metros en el espacio virtual. Esto significa que el recorrido completo de A a B y de nuevo a A suma una distancia neta de 1,5 metros, cuando debería ser de 0,0 metros. Se trata de un problema evidente. Un holograma que se encuentre en el punto A antes del recorrido aparecerá ahora a 1,5 metros del punto A.
Aquí es donde los anclajes espaciales pueden ser de ayuda. Después de ir a B y volver, el sistema reconoce que está de nuevo en el punto A, pero las coordenadas de Unity de la cabeza han cambiado en 1,5 metros. Pero si el holograma en el punto A tiene un anclaje espacial asociado, el anclaje espacial puede pensar: "Estoy en el punto A, la cabeza está en el punto A, pero mis coordenadas difieren de las coordenadas de la cabeza en 1,5 metros. Voy a cambiar mis coordenadas en 1,5 metros para que volvamos a estar de acuerdo". Y un anclaje espacial en el punto C, un metro a la izquierda del usuario, pasa por el mismo proceso. Básicamente, el anclaje espacial redefine constantemente dónde se encuentra el punto A en el espacio de Unity para que las coordenadas de la cabeza siempre sean correctas. Y cada anclaje espacial realiza este ajuste independientemente de su lugar en el mundo físico.
World Locking Tools para Unity
World Locking Tools mantiene un suministro interno de anclajes espaciales que va dejando a medida que el usuario se mueve. Analiza las coordenadas de la cámara y de esos anclajes espaciales en cada fotograma. Detecta cuando todos esos anclajes espaciales se mueven más de 1,5 metros para que coincidan con las coordenadas de la cabeza y dice: "Vaya, en lugar de cambiar las coordenadas de todo lo que hay en el mundo para compensar que la cabeza tenga coordenadas diferentes a las que tenía la última vez que estuvo aquí, voy a corregir las coordenadas de la cabeza".
Esto significa que, en lugar de tener que hacer que un anclaje espacial arrastre un holograma a través del espacio de Unity para que permanezca fijo en el espacio físico, todo el espacio global de Unity está bloqueado en el espacio físico. Si un holograma está inmóvil en el espacio de Unity, permanecerá inmóvil en relación con las características del mundo físico que lo rodean. Y lo que no es menos importante: permanecerá fijo en relación con las características virtuales que lo rodean.
Evidentemente, la realidad de lo que sucede internamente es más complicada. Por ejemplo, recuerde que un problema de los anclajes espaciales es que se mueven de forma independiente, por lo que no siempre están de acuerdo entre sí. El motor de FrozenWorld subyacente arbitra esas discrepancias para lograr la corrección de cámara más correcta desde el punto de vista de la percepción, y lo hace en cada fotograma.
Otra vez el problema de escalado
Si el usuario va del punto A al punto B y de nuevo al punto A, el sistema tiene información suficiente para corregir el desfase que se produjo en tránsito. Es posible que no sepa dónde está el punto B (y, por lo general, no sabe exactamente dónde está el punto B en relación con el punto A), pero sabe si está en el punto A o no. Cuando vuelve al punto A, espera que todo esté más o menos igual que cuando lo dejó. Si no es así, el sistema puede hacerlo posible.
Pero ¿qué pasa en el punto B? Pensó que el recorrido de 10 metros era de solo 9 metros. Además, no tiene forma de saber si esos 9 metros son correctos y, en caso de no ser así, de cuánto es la diferencia. Los anclajes espaciales no son de ayuda en este caso. Los anclajes espaciales tienen el mismo problema que el casco de realidad virtual: cada uno sabe dónde está en el mundo físico (en relación con las características visibles), pero un anclaje espacial no sabe nada sobre otro anclaje espacial. En concreto, los anclajes espaciales no saben a qué distancia están unos de otros.
Esto puede resultar inconveniente en muchos aspectos, pero se convierte en un problema de bloqueo cuando los objetos, o sistemas de objetos, tienen un tamaño superior a un metro aproximadamente. Considere un modelo de una sala, un edificio, un conjunto de escritorios o, incluso, un automóvil. Si bien un anclaje espacial puede mantener registrado un extremo del modelo con una característica del mundo físico, en el momento en que se alcanza el otro extremo del modelo, es posible que se haya acumulado un error significativo. El otro extremo no estará correctamente alineado. Además, el error variará de un dispositivo a otro, posiblemente incluso entre ejecuciones en el mismo dispositivo.
Y hasta ahora en esta discusión, no se ha presentado la información mínima necesaria para corregir el problema.
World Locking Tools soluciona ese problema con la API Space Pins, que permite a la aplicación proporcionar información suficiente relativa a los mundos físico y holográfico para corregir los errores producidos en la distancia recorrida. Esto permite que los hologramas grandes aparezcan alineados con el mundo físico en todo momento.
Un vistazo al sistema básico
Ahora que tenemos información general sobre los conceptos de World Locking Tools, vamos a dar un paso atrás y echar un vistazo al sistema básico. Conocer qué servicios ofrece la operación de base, y cuáles no, le ayudará a determinar el uso adecuado de los conceptos avanzados más adelante, y si esas técnicas avanzadas llegan a ser necesarias para una aplicación específica.