Compartir a través de


Navegación compatible con los ojos en MRTK: MRTK2

MRTK

Imagine que está leyendo información en una pizarra y cuando llega al final del texto mostrado, el texto se desplaza automáticamente para mostrar más contenido. O bien, puedes acercar con fluidez dónde estás mirando. El mapa también ajusta automáticamente el contenido para mantener las cosas de interés dentro del campo de vista. Otra aplicación interesante es la observación sin manos de hologramas 3D mediante la incorporación automática de las partes del holograma que está mirando al frente. Estos son algunos de los ejemplos que se describen en esta página en el contexto de la navegación compatible con los ojos.

En las descripciones siguientes se supone que ya está familiarizado con cómo configurar el seguimiento ocular en la escena de MRTK y con los conceptos básicos de acceso a los datos de seguimiento ocular en MRTK Unity. Los ejemplos descritos en lo siguiente forman parte de la EyeTrackingDemo-03-Navigation escena (Assets/MRTK/Examples/Demos/EyeTracking/Scenes/EyeTrackingDemo-03-Navigation).

Resumen: Desplazamiento automático del texto, movimiento panorámico compatible con la mirada con los ojos y zoom de un mapa virtual, giro 3D dirigido por manos libres.

Desplazamiento automático

El desplazamiento automático permite al usuario desplazarse por textos sin levantar un dedo. Simplemente continúe leyendo y el texto se desplazará automáticamente hacia arriba o hacia abajo en función de dónde esté buscando el usuario. Puede empezar desde el ejemplo proporcionado en EyeTrackingDemo-03-Navigation (Assets/MRTK/Examples/Demos/EyeTracking/Scenes). En este ejemplo se usa un componente TextMesh para permitir la carga flexible y el formato de texto nuevo. Para habilitar el desplazamiento automático, basta con agregar los dos scripts siguientes al componente colisionador del cuadro de texto:

ScrollRectTransf

Para desplazarse por un TextMesh o, más generalmente, un componente RectTransform , puede usar el script ScrollRectTransf . Si desea desplazarse por una textura en lugar de rectTransform, use ScrollTexture en lugar de ScrollRectTransf. A continuación, los parámetros de ScrollRectTransf que están disponibles en el Editor de Unity se explican con más detalle:

Parámetros Descripción
LimitPanning Si está habilitado, detendrá el contenido desplazable en su límite.
RectTransfToNavigate Referencia a RectTransform en la que desplazarse.
RefToViewport Referencia al rectTransform primario del contenido desplazable para determinar el desplazamiento y el límite correctos.
AutoGazeScrollIsActive Si está habilitado, el texto se desplazará automáticamente si el usuario examina una región activa (por ejemplo, la parte superior e inferior del panel de desplazamiento si la velocidad de desplazamiento vertical no es cero).
ScrollSpeed_x Si se establece en un valor distinto a cero, se habilitará el desplazamiento horizontal. Los valores negativos significan un cambio en la dirección del desplazamiento: de izquierda a derecha frente a derecha a izquierda.
ScrollSpeed_y Si se establece en un valor distinto a cero, se habilitará el desplazamiento vertical. Los valores negativos significan un cambio en la dirección del desplazamiento: hacia abajo y hacia abajo hasta arriba.
MinDistFromCenterForAutoScroll Distancia mínima normalizada en x e y desde el centro del cuadro de acierto del destino (0, 0) para desplazarse. Por lo tanto, los valores deben oscilar entre 0 (desplazamiento siempre) y 0,5 (sin desplazamiento).
UseSkimProofing Si está habilitado, evita movimientos repentinos de desplazamiento cuando se miran rápidamente. Sin embargo, esto puede hacer que el desplazamiento se sienta menos dinámico. Se puede ajustar con el valor SkimProofUpdateSpeed .
SkimProofUpdateSpeed Cuanto menor sea el valor, más lento se acelerará el desplazamiento después de esquiar. Valor recomendado: 5.

Configuración de desplazamiento compatible con los ojos en Unity

EyeTrackingTarget

Adjuntar el componente EyeTrackingTarget permite controlar de forma flexible los eventos relacionados con la mirada ocular. En el ejemplo de desplazamiento se muestra el texto de desplazamiento que comienza cuando el usuario examina el panel y se detiene cuando el usuario está mirando lejos de él. Configuración de desplazamiento compatible con los ojos en Unity: EyeTrackingTarget

Panorámica y zoom compatibles con la mirada

¿Quién no ha usado un mapa virtual antes de buscar su hogar o explorar lugares completamente nuevos? El seguimiento ocular le permite profundizar directamente en las partes que le interesan y una vez acercado, puede seguir sin problemas el curso de una calle para explorar su vecindario! Esto no solo es útil para explorar mapas geográficos, sino también para consultar detalles en fotografías, visualizaciones de datos o incluso imágenes médicas transmitidas en vivo. Para usar esta funcionalidad en la aplicación es fácil. Para el contenido representado en una textura (por ejemplo, una foto, datos transmitidos), simplemente agregue el script PanZoomTexture . Para rectTransform , use PanZoomRectTransf. Al extender la funcionalidad Desplazamiento automático , básicamente se permite desplazarse vertical y horizontalmente al mismo tiempo y ampliar el contenido justo alrededor del punto de enfoque actual del usuario.

Parámetros Descripción
LimitPanning Si está habilitado, detendrá el contenido desplazable en su límite.
HandZoomEnabledOnStartup Indica si los gestos de mano se habilitan automáticamente para realizar un gesto de zoom. Es posible que quiera deshabilitarlo al principio para evitar desencadenar accidentalmente acciones de zoom.
RendererOfTextureToBeNavigated Representador al que se hace referencia de la textura que se va a navegar.
Zoom_Acceleration Aceleración de zoom que define la inclinación de la asignación de funciones de velocidad logística.
Zoom_SpeedMax Velocidad máxima de zoom.
Zoom_MinScale Escala mínima de la textura para el zoom, por ejemplo, 0,5f (mitad del tamaño original).
Zoom_MaxScale Escala máxima de la textura para alejar, por ejemplo, 1f (el tamaño original) o 2,0f (doble el tamaño original).
Zoom_TimeInSecToZoom Zoom con tiempo: una vez desencadenado, se realizará un zoom durante el tiempo especificado en segundos.
Zoom_Gesture Tipo de gesto de mano que se va a usar para acercar o alejar.
--- ---
Pan_AutoScrollIsActive Si está habilitado, el texto se desplazará automáticamente si el usuario examina una región activa (por ejemplo, la parte superior e inferior del panel de desplazamiento si la velocidad de desplazamiento vertical no es cero).
Pan_Speed_x Si se establece en un valor distinto a cero, se habilitará el desplazamiento horizontal. Los valores negativos significan un cambio en la dirección del desplazamiento: de izquierda a derecha frente a derecha a izquierda.
Pan_Speed_y Si se establece en un valor distinto a cero, se habilitará el desplazamiento vertical. Los valores negativos significan un cambio en la dirección del desplazamiento: hacia abajo y hacia abajo hasta arriba.
Pan_MinDistFromCenter Distancia mínima normalizada en x e y desde el centro del cuadro de acierto del destino (0, 0) para desplazarse. Por lo tanto, los valores deben oscilar entre 0 (desplazamiento siempre) y 0,5 (sin desplazamiento).
UseSkimProofing Si está habilitado, evita movimientos repentinos de desplazamiento cuando se miran rápidamente. Sin embargo, esto puede hacer que el desplazamiento se sienta menos dinámico. Se puede ajustar con el valor SkimProofUpdateSpeed .
SkimProofUpdateSpeed Cuanto menor sea el valor, más lento se acelerará el desplazamiento después de esquiar. Valor recomendado: 5.

Configuración de panorámica y zoom compatibles con los ojos en Unity

Rotación 3D basada en la atención

Imagínate mirar un objeto 3D y las partes que quieres ver más estrechamente gira hacia ti - como si el sistema leera tu mente y saber girar el elemento hacia ti! Esa es la idea de rotaciones 3D basadas en la atención que te permiten investigar todo el lado de un holograma sin levantar un dedo. Para habilitar este comportamiento, basta con agregar el script OnLookAtRotateByEyeGaze a la parte de gameObject con un componente Colisionador . Puedes ajustar varios parámetros que se enumeran a continuación para limitar la rapidez y en qué direcciones se volverá el holograma.

Como puede imaginar, tener este comportamiento activo en todo momento puede volverse bastante distraído en una escena llena de gente. Este es el motivo por el que es posible que quiera empezar con este comportamiento deshabilitado y, a continuación, habilitarlo rápidamente mediante comandos de voz. Como alternativa, hemos agregado un ejemplo en EyeTrackingDemo-03-Navigation (Assets/MRTK/Examples/Demos/EyeTracking/Scenes) para usar TargetMoveToCamera para el que puede seleccionar un destino centrado y vuela delante de usted, simplemente diga "Ven a mí".

Una vez en el modo cercano, el modo de rotación automática se habilita automáticamente. En ese modo, puedes observarlo desde todos los lados simplemente inclinando hacia atrás y mirandolo, caminando por él o llegando a agarrarlo y girarlo con tu mano. Cuando descarte el destino (mire & pellizque o diga "Enviar atrás"), volverá a su ubicación original y dejará de reaccionar a usted desde lejos.

Parámetros Descripción
SpeedX Velocidad de rotación horizontal.
Rápida Velocidad de rotación vertical.
InverseX Para inversar la dirección de rotación horizontal.
Inversa Para inversar la dirección de rotación vertical.
RotationThreshInDegrees Si el ángulo entre "Mirada a destino" y "Cámara a destino" es menor que este valor, no haga nada. Esto es para evitar pequeñas rotaciones jittery.
MinRotX Ángulo de rotación horizontal mínimo. Esto es para limitar la rotación en diferentes direcciones.
MaxRotX Ángulo máximo de rotación horizontal. Esto es para limitar la rotación en diferentes direcciones.
MinRotY Ángulo de rotación vertical mínimo para limitar el giro alrededor del eje x.
MaxRotY Ángulo máximo de rotación vertical para limitar el giro alrededor del eje y.

Configuración de rotación 3D compatible con los ojos en Unity

En resumen, los scripts anteriores deben permitirle empezar a usar la mirada ocular para diversas tareas de navegación de entrada, como textos de desplazamiento, zoom y texturas de movimiento panorámico, así como la rotación de hologramas 3D.

Consulte también


Volver a "Seguimiento ocular en MixedRealityToolkit"