Partilhar via


Sistema principal — MRTK2

No centro do sistema de entrada está o InputSystem, que é um serviço responsável por inicializar e operar todas as funcionalidades relacionadas com a entrada associadas ao MRTK.

Nota

Presume-se que os leitores já leram e têm uma compreensão básica da secção de terminologia .

Este serviço é responsável por:

  • Ler o perfil do sistema de entrada
  • Iniciar os fornecedores de dados configurados (por exemplo, Windows Mixed Reality Device Manager e OpenVR Device Manager).
  • Instanciação do GazeProvider, que é um componente responsável por fornecer informações de olhar para a cabeça do estilo HoloLens (1.ª geração), além de HoloLens 2 informações de olhar de olho de estilo.
  • Instanciação do FocusProvider, que é um componente responsável por determinar objetos com foco. Isto é descrito mais detalhadamente na secção ponteiros e foco da documentação.
  • Fornecer pontos de registo para todos os eventos de entrada (como serviços de escuta globais).
  • Fornecer capacidades de distribuição de eventos para esses eventos de entrada.

Eventos de entrada

Geralmente, os eventos de entrada são acionados em dois canais diferentes:

Objetos em foco

Os eventos podem ser enviados diretamente para um GameObject com foco. Por exemplo, um objeto pode ter um script que implementa IMixedRealityTouchHandler. Este objeto obteria eventos de toque quando se concentrasse por uma mão que se encontra perto do mesmo. Estes tipos de eventos vão "para cima" na hierarquia gameObject até encontrar um GameObject capaz de processar o evento.

Isto é feito com ExecuteHierarchy a partir da implementação predefinida do sistema de entrada.

Serviços de escuta globais

Os eventos podem ser enviados para os serviços de escuta globais. É possível registar-se em todos os eventos de entrada com a interface do IMixedRealityEventSystem sistema de entrada. Recomenda-se que utilize o método RegisterHandler para se registar em eventos globais. A função preterida Register fará com que os serviços de escuta sejam notificados de TODOS os eventos de entrada, em vez de apenas eventos de entrada de um tipo específico (em que o tipo é definido pela interface de evento).

Tenha em atenção que os serviços de escuta de contingência são outro tipo de serviços de escuta globais que também são desencorajados porque receberão todos os eventos de entrada que não foram tratados noutros locais do cenário.

Ordem de envio de eventos

Geralmente, os eventos são enviados para os serviços de escuta da seguinte forma. Tenha em atenção que, se qualquer um dos passos abaixo marcar o evento como processado, o processo de distribuição de eventos para.

  1. O evento é enviado aos serviços de escuta globais.
  2. O evento é enviado para caixas de diálogo modais do objeto focado.
  3. O evento é enviado para o objeto focado.
  4. O evento é enviado para os serviços de escuta de contingência.

Gestores de dispositivos e fornecedores de dados

Estas entidades são responsáveis por interagir com APIs de nível inferior (por exemplo, APIs Windows Mixed Reality ou APIs OpenVR) e traduzir dados desses sistemas em sistemas que se ajustem às abstrações de entrada de nível superior do MRTK. São responsáveis por detetar, criar e gerir a duração dos controladores.

O fluxo básico de um gestor de dispositivos envolve:

  1. O gestor de dispositivos é instanciado pelo serviço de sistema de entrada.
  2. O gestor de dispositivos regista-se no sistema subjacente (por exemplo, o Windows Mixed Reality gestor de dispositivos irá registar-se para eventos de entrada e gestos.
  3. Cria controladores que deteta a partir do sistema subjacente (por exemplo, o fornecedor pode detetar a presença de mãos articuladas)
  4. No ciclo Update(), chame UpdateController() para consultar o novo estado do sistema subjacente e atualizar a representação do controlador.