Leer en inglés

Compartir a través de


Operaciones de reajuste

Las operaciones de reajuste en World Locking Tools se producen cuando el sistema determina que el cambio de posición de algunos de los objetos de la escena registraría mejor dichos objetos con sus anclajes del mundo físico.

En esta sección se intentará obtener más información sobre las situaciones que llevan a las operaciones de reajuste y la mecánica de las operaciones en sí.

Cabe destacar que las operaciones de reajuste no se producen con frecuencia. La aplicación puede personalizar las tolerancia a errores predeterminada que desencadena una operación de reinmovilización pero, normalmente, los entornos de realidad mixta solo desencadenan operaciones de reinmovilización en circunstancias excepcionales. Entre las condiciones que pueden contribuir a la necesidad de reinmovilización se incluyen las siguientes:

  • Pérdida del seguimiento debido a un entorno deficiente.
  • Movimiento rápido de la cabeza que influye en el examen del entorno.
  • Entornos dinámicos.
  • Cierre en bucle (es decir, acumulación de errores de seguimiento en una ruta indirecta que reconduce a un punto visitado anteriormente).

La causa principal de estos problemas es un seguimiento deficiente, es decir, errores de seguimiento. Si se cuenta con entornos aceptables que generen un seguimiento razonablemente bueno, sobre todo después de un examen inicial del espacio, las operaciones de reajuste serán rara vez necesarias.

Combinación de fragmentos

Son muchas las condiciones que pueden dar lugar a la existencia de varios fragmentos; la causa más habitual es la pérdida temporal del seguimiento. Los fragmentos se definen como colecciones de objetos que comparten un espacio de coordenadas común, pero donde el espacio de coordenadas de un fragmento se ubica de forma indeterminada en relación con otro fragmento.

Se puede realizar una combinación de fragmentos cuando se reciben y se procesan suficientes datos nuevos del sensor para que el contenido de dos fragmentos no relacionados anteriormente pueda colocarse correctamente entre sí en el mismo espacio.

El espacio de coordenadas nuevo en el que se combina el contenido de ambos (o más) fragmentos es arbitrario. Debe mencionarse que el espacio de coordenadas final será el de uno de los espacios, lo cual solo es relevante porque significa que deben ajustarse las coordenadas de todos los fragmentos que se van a combinar excepto uno, el fragmento de destino. El contenido del fragmento elegido como destino final de la combinación no se verá afectado.

El sistema calcula una transformación de ajuste para cada uno de los fragmentos de origen que se van a combinar. La transformación de ajuste se usará para llamar al valor AdjustLocationDelegate de cada punto de conexión de esos fragmentos. Una vez más, los puntos de conexión del fragmento de destino no se verán afectados, ni tampoco se llamará a sus valores AdjustLocationDelegate.

El escenario de dos salas conectadas por un pasillo oscuro en la descripción de los fragmentos es un ejemplo de una situación de este tipo. Durante la fase inicial, ambos fragmentos (salas) se han examinado, pero no hay información disponible sobre las posiciones relativas de estos. Por lo tanto, el sistema de coordenadas en el que se ubica el contenido de cada fragmento es arbitrario, siempre y cuando sea constante en todos los objetos de esa sala. Por ejemplo, el contenido de cada sala puede estar en un sistema de coordenadas cuyo origen se encuentre en la esquina suroeste de esa sala. Las coordenadas de dos objetos del mismo fragmento indican las posiciones de los dos objetos entre sí, pero las coordenadas de dos objetos en dos fragmentos distintos no indican nada sobre sus posiciones relativas.

Cuando se obtiene más información, pueden ajustarse las coordenadas del contenido del segundo fragmento para que sean significativas en relación con los objetos del primer fragmento. Por ejemplo, la luz del pasillo puede encenderse y este puede atravesarse, lo que acorta las distancias entre ambos fragmentos. Si las coordenadas de todos los objetos de ambas salas se ajustan para que estén en el mismo espacio de coordenadas coherente, ya no habría ninguna distinción real entre ambos fragmentos, por lo que podría considerarse que el contenido de cada uno pertenece a un único fragmento común.

Esta operación de contraer varios fragmentos en uno solo es una operación de combinación.

Aquí es importante observar que, en el caso de los objetos de Unity normales ubicados en la escena del espacio bloqueado en el mundo, la operación de combinación no tendrá ningún efecto. El movimiento de objetos de las operaciones de reajuste solo se produce a través de puntos de conexión.

Operaciones de reinmovilización

Otra de las situaciones que se producen es cuando las posiciones de los anclajes se ajustan a lo largo del tiempo. Se hace evidente que una transformación de desplazamiento o rotación ya no es adecuada para compensar la diferencia entre las posiciones aproximadas iniciales de los anclajes y sus posiciones mejoradas más recientes en el mundo físico. Tenga en cuenta que los propios anclajes se mueven relativamente entre sí de forma constante en un espacio elástico. Sin embargo, los puntos de conexión derivados de estos anclajes están fijos en el espacio bloqueado en el mundo.

Cuando el sistema reconoce que los puntos de conexión que administra podrían registrarse mejor en el mundo físico debido a las actualizaciones de las posiciones de los anclajes, surge otra oportunidad para un evento de corrección. Este ajuste de las posiciones de los puntos de conexión para reflejar los nuevos datos de los sensores se conoce como operación de reinmovilización. Mientras que en una operación de combinación el contenido de un fragmento se ajusta mediante un transformación simple para combinar los espacios de coordenadas de dos fragmentos en un único espacio unificado, una reinmovilización ajusta cada uno de los puntos de conexión de forma individual en función de las posiciones actualizadas de los anclajes que influyen en este.

Al igual que en la operación de combinación, se informa a cada punto de conexión de su transformación de ajuste calculada mediante su valor AdjustLocationDelegate.

Si las condiciones son correctas, la reinmovilización también puede realizar una operación de combinación. Esa combinación se considerará una parte implícita de la reinmovilización: no se generará ningún evento independiente para la combinación y la transformación de ajuste que se entregue como parte de la reinmovilización incluirá el ajuste individual debido al movimiento del anclaje y el ajuste del fragmento debido a la combinación.

Reacción a los eventos de reajuste

En la combinación o la reinmovilización, la reacción a los eventos de reajuste depende de la aplicación. Para ser precisos, depende de cada uno de los controladores de puntos de conexión, ya que los diferentes tipos de objeto pueden reaccionar de forma distinta. Normalmente, los objetos a los que afecta el punto de conexión se mueven mediante la transformación de ajuste a través de GameObject.transform. El movimiento puede implementarse también a través de otros mecanismos, como el movimiento manual de los vértices. Incluso puede ser ventajoso que algunas aplicaciones descarten los objetos afectados por una combinación y comiencen un nuevo ciclo de creación.

La cuestión es que las herramientas World Locking Tools no dependen de cómo reacciona la aplicación a las operaciones de reajuste, ni de si reacciona a ellas o no. Esto depende totalmente de las necesidades del desarrollador de la aplicación.

El mecanismo preferido para la notificación y la reacción a las operaciones de reajuste es el punto de conexión. En el artículo correspondiente se analizan más detalles y opciones.

Consulte también