Compartir a través de


Terminología del sistema de entrada: MRTK2

El sistema de entrada es uno de los sistemas más grandes de todas las características que ofrece MRTK. Muchas cosas dentro del kit de herramientas se basan en él (punteros, foco, prefabricados). El código dentro del sistema de entrada es lo que permite interacciones naturales, como agarrar y girar entre plataformas.

El sistema de entrada tiene alguna terminología propia que merece la pena definir:

  • Proveedores de datos

    La configuración de entrada del perfil de entrada tiene referencias a entidades conocidas como proveedores de datos: otra palabra que describe estos son administradores de dispositivos. Se trata de componentes cuyo trabajo consiste en ampliar el sistema de entrada MRTK interrelacionando con un sistema subyacente específico. Un ejemplo de proveedor es el proveedor de Windows Mixed Reality, cuyo trabajo consiste en hablar con las API de Windows Mixed Reality subyacentes y, a continuación, traducir los datos de esas API en conceptos de entrada específicos de MRTK a continuación. Otro ejemplo sería el proveedor OpenVR (cuyo trabajo consiste en hablar con la versión abstraida de Unity de las API de OpenVR y, a continuación, traducir esos datos en conceptos de entrada de MRTK).

  • Controlador

    Representación de un controlador físico (ya sea un controlador de 6 grados de libertad, una mano de estilo HoloLens 1 con compatibilidad con gestos, una mano totalmente articulada, un controlador de movimiento bisiesto, etc.). Los controladores los generan los administradores de dispositivos (es decir, el administrador de dispositivos WMR generará un controlador y administrará su duración cuando vea que existe una mano articulada).

  • Puntero

    Los controladores usan punteros para interactuar con objetos de juego. Por ejemplo, el puntero de interacción cercana es responsable de detectar cuándo la mano (que es un controlador) está cerca de los objetos que se anuncian a sí mismos como compatibles con la "interacción cercana". Otros ejemplos de punteros son teletransportación o punteros lejanos (es decir, el puntero de rayo de mano del shell) que usan difusión de rayos lejanos para interactuar con contenido que es más largo que la longitud de los brazos del usuario.

    El administrador de dispositivos crea punteros y, a continuación, se adjuntan a un origen de entrada. Para obtener todos los punteros de un controlador, haga lo siguiente: controller.InputSource.Pointers

    Tenga en cuenta que un controlador se puede asociar a muchos punteros diferentes al mismo tiempo. Para asegurarse de que esto no se convierta en caos, hay un mediador de punteros que controla qué punteros pueden estar activos (por ejemplo, el mediador deshabilitará punteros de interacción lejana cuando se detecte una interacción cercana).

  • Foco

    Los eventos de puntero se envían a objetos en el foco. La selección del foco variará según el tipo de puntero; un puntero de rayo de mano usará raycasts, mientras que un puntero poke usará difusiones de esfera. Un objeto debe implementar IMixedRealityFocusHandler para recibir el foco. Es posible registrar globalmente un objeto para recibir eventos de puntero sin filtrar, pero no se recomienda este enfoque.

    El componente que actualiza qué objetos están en el foco es FocusProvider.

  • Cursor

    Entidad asociada a un puntero que proporciona indicaciones visuales adicionales sobre la interacción del puntero. Por ejemplo, FingerCursor representará un anillo alrededor del dedo y puede girar ese anillo cuando el dedo esté cerca de objetos "casi interactables". Un puntero se puede asociar a un solo cursor en el momento.

  • Interacción y manipulación

    Los objetos se pueden etiquetar con un script de interacción o manipulación. Puede ser a través de , Interactableo algo parecido NearInteractionGrabbable/ManipulationHandlera .

    Por ejemplo, NearInteractionGrabbable y NearInteractionTouchable permiten que determinados punteros (especialmente punteros de interacción cercanos) sepan en qué objetos se pueden centrar.

    Interactable y ManipulationHandler son ejemplos de componentes que escuchan eventos de puntero para modificar objetos visuales de la interfaz de usuario o mover, escalar o girar objetos de juego.

La imagen siguiente captura la compilación de alto nivel (de abajo hacia arriba) de la pila de entrada mrtk:

Diagrama del sistema de entrada