Sistema principal

En el centro del sistema de entrada se encuentra InputSystem, que es un servicio que es responsable de inicializar y operar toda la funcionalidad relacionada con la entrada asociada a MRTK.

Nota

Se supone que los lectores ya han leído y tienen un conocimiento básico de la sección de terminología.

Este servicio es responsable de:

  • Lectura del perfil del sistema de entrada
  • Iniciar los proveedores de datos configurados (por ejemplo, Windows Mixed Reality Device Manager y OpenVR Device Manager ).
  • Creación de instancias de GazeProvider,que es un componente que es responsable de proporcionar información de mirada con la cabeza de estilo HoloLens (primera generación), además de HoloLens 2 información de mirada con los ojos de estilo.
  • Creación de instancias de FocusProvider,que es un componente responsable de determinar los objetos que tienen el foco. Esto se describe con más profundidad en la sección punteros y foco de la documentación.
  • Proporcionar puntos de registro para todos los eventos de entrada (como agentes de escucha globales).
  • Proporcionar funcionalidades de distribución de eventos para esos eventos de entrada.

Eventos de entrada

Por lo general, los eventos de entrada se desencadenan en dos canales diferentes:

Objetos en el foco

Los eventos se pueden enviar directamente a un Elemento GameObject que tenga el foco. Por ejemplo, un objeto podría tener un script que implemente IMixedRealityTouchHandler . Este objeto obtiene eventos táctiles cuando se centra en una mano que está cerca de él. Estos tipos de eventos "sumen" la jerarquía de GameObject hasta que encuentre un GameObject capaz de controlar el evento.

Para ello, use ExecuteHierarchy desde la implementación predeterminada del sistema de entrada.

Agentes de escucha globales

Los eventos se pueden enviar a agentes de escucha globales. Es posible registrarse para todos los eventos de entrada mediante la interfaz del sistema de IMixedRealityEventSystem entrada. Se recomienda usar el método RegisterHandler para registrar eventos globales: la función en desuso hará que los agentes de escucha reciban una notificación de TODOS los eventos de entrada, en lugar de solo los eventos de entrada de un tipo determinado (donde el tipo se define mediante la interfaz de Register eventos).

Tenga en cuenta que los agentes de escucha de reserva son otro tipo de agentes de escucha globales que también se desaconseja porque recibirán cada evento de entrada único que no se haya manipulado en ningún otro lugar de la escena.

Orden de envío de eventos

Por lo general, los eventos se envían a los agentes de escucha de la siguiente manera. Tenga en cuenta que si alguno de los pasos siguientes marca el evento como manipulado,el proceso de distribución de eventos se detiene.

  1. El evento se envía a los agentes de escucha globales.
  2. El evento se envía a los diálogos modales del objeto centrado.
  3. El evento se envía al objeto centrado.
  4. El evento se envía a los agentes de escucha de reserva.

Administradores de dispositivos y proveedores de datos

Estas entidades son responsables de la interacción con las API de nivel inferior (como las API de Windows Mixed Reality o las API de OpenVR) y de traducir datos de esos sistemas en aquellas que se ajusten a las abstracciones de entrada de nivel superior de MRTK. Son responsables de detectar, crear y administrar la duración de los controladores.

El flujo básico de un administrador de dispositivos implica:

  1. El servicio del sistema de entrada crea instancias del administrador de dispositivos.
  2. El administrador de dispositivos se registra con su sistema subyacente (por ejemplo, el administrador de dispositivos Windows Mixed Reality se registrará para los eventos de entrada y gesto.
  3. Crea controladores que detecta del sistema subyacente (por ejemplo, el proveedor podría detectar la presencia de manos articuladas).
  4. En su bucle Update(), llame a UpdateController() para sondear el nuevo estado del sistema subyacente y actualizar su representación del controlador.