Guia de portabilidade de entrada para Unity

Você pode portar sua lógica de entrada para Windows Mixed Reality usando uma das duas abordagens:

APIs General Input.GetButton e Input.GetAxis

Atualmente, o Unity usa suas APIs e Input.GetAxis gerais Input.GetButton para expor a entrada para o SDK do Oculus e o SDK do OpenVR. Se seus aplicativos já usam essas APIs para entrada, essas APIs são o caminho mais fácil para dar suporte a controladores de movimento em Windows Mixed Reality. Você só precisa remapear botões e eixos no Gerenciador de Entrada.

Para obter mais informações, consulte a tabela de mapeamento de botão/eixo do Unity e a visão geral das APIs comuns do Unity.

Importante

Se você usar controladores HP Reverb G2, consulte Controladores HP Reverb G2 no Unity para obter mais instruções de mapeamento de entrada.

APIs de entrada XR

As versões do Unity eliminaram gradualmente o XR. APIs do WSA em favor do SDK do XR. Para novos projetos, é melhor usar as APIs de entrada XR desde o início. Para obter mais informações, consulte Entrada XR do Unity.

Se seu aplicativo já criar lógica de entrada personalizada para cada plataforma, você poderá usar as APIs de entrada espacial específicas do Windows no namespace UnityEngine.InputSystem.XR . Essas APIs permitem que você acesse mais informações, como precisão de posição ou tipo de origem, para diferenciar mãos e controladores no HoloLens.

Observação

Se você usar controladores HP Reverb G2, todas as APIs de entrada continuarão funcionando, exceto para InteractionSource.supportsTouchpad, que retorna false sem dados de touchpad.

Pose de aperto e pose de ponteiro

Windows Mixed Reality dá suporte a controladores de movimento em diferentes fatores forma. O design de cada controlador difere em sua relação entre a posição da mão do usuário e a direção natural para a frente que os aplicativos usam para apontar ao renderizar o controlador.

Para representar melhor esses controladores, você pode investigar dois tipos de poses para cada origem de interação, pose de aperto e pose de ponteiro. Você expressa todas as coordenadas de pose nas coordenadas do mundo do Unity.

Pose de aperto

A pose de aperto representa o local da palma de uma mão detectada por um HoloLens ou da palma da mão segurando um controlador de movimento. Em headsets imersivos, use essa pose para renderizar a mão do usuário ou um objeto mantido na mão do usuário, como uma espada ou uma arma.

  • A posição da alça é o centroide de palma ao segurar o controlador naturalmente, ajustado para a esquerda ou direita para centralizar a posição dentro da alça.
  • O eixo direito da orientação de aderência é o raio que é normal para a palma da mão, para a frente da palma esquerda, para trás da palma direita, quando você abre completamente a mão para formar uma pose plana de cinco dedos.
  • O eixo da orientação de aderência é o raio que aponta para a frente através do tubo formado por seus dedos não polegares quando você fecha a mão parcialmente, como se estivesse segurando o controlador.
  • O eixo superior da orientação de aderência é o eixo superior implícito pelas definições direita e de avanço.

Acesse a pose de aderência por meio do XR do Unity. APIs InputTracking.GetNodeStates , como XRNodeState.TryGetPosition ou XRNodeState.TryGetRotation.

Pose de ponteiro

A pose do ponteiro representa a ponta do controlador apontando para frente. Essa pose é melhor usada para a conversão de raios apontando para a interface do usuário quando você está renderizando o próprio modelo de controlador.

A pose de ponteiro está disponível no Unity somente por meio da API específica de MR do Windows, sourceState.sourcePose.TryGetPosition/Rotation, passando InteractionSourceNode.Pointer como o argumento .

Confira também