Sistema principal: MRTK2

En el centro del sistema de entrada se encuentra InputSystem, que es un servicio responsable de inicializar y operar toda la funcionalidad relacionada con la entrada asociada con 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
  • Inicio de los proveedores de datos configurados (por ejemplo, Windows Mixed Reality Device Manager y OpenVR Device Manager).
  • Creación de instancias del GazeProvider, que es un componente responsable de proporcionar HoloLens (primera generación) información de mirada con la cabeza de estilo además de HoloLens 2 información de mirada con ojos de estilo.
  • Creación de instancias del FocusProvider, que es un componente responsable de determinar los objetos que tienen foco. Esto se describe más detalladamente en la sección de 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 GameObject que tenga el foco. Por ejemplo, un objeto podría tener un script que implemente IMixedRealityTouchHandler. Este objeto obtendría eventos táctiles cuando se centraba en una mano cercana. Estos tipos de eventos van "arriba" en la jerarquía gameObject hasta que encuentra un GameObject capaz de controlar el evento.

Esto se hace mediante 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 Register desuso hará que los agentes de escucha reciban notificaciones de todos los eventos de entrada, en lugar de simplemente eventos de entrada de un tipo determinado (donde el tipo está definido por la interfaz de eventos).

Tenga en cuenta que los agentes de escucha de reserva son otro tipo de agentes de escucha globales que también se desaconsejan porque recibirán cada evento de entrada único que no se haya controlado en ninguna parte 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 controlado, el proceso de distribución de eventos se detiene.

  1. El evento se envía a agentes de escucha globales.
  2. El evento se envía a 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 interactuar con las API de nivel inferior (como las API de Windows Mixed Reality o las API de OpenVR) y la traducción de datos de esos sistemas a otras que se ajustan 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 de sistema de entrada crea una instancia 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 desde el 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.