Foco — MRTK2

O foco é uma forma de entrada que interage com o mundo com base em onde o usuário está procurando. O olhar existe em dois sabores diferentes

Foco da cabeça

Esse tipo de foco baseia-se na direção que a cabeça/câmera está olhando. O foco de cabeça está ativo em sistemas que não dão suporte ao olhar ou nos casos em que o hardware pode dar suporte ao foco com os olhos, mas o conjunto certo de permissões e configuração não foi executado.

O foco na cabeça geralmente é associado a interações de estilo do HoloLens 1 envolvendo olhar para o objeto colocando-o no centro do Quadro Holográfico e, em seguida, executando o gesto de toque de ar.

Foco com os olhos

Esse tipo de foco é baseado em onde os olhos do usuário estão olhando. O foco com os olhos só está presente em sistemas que dão suporte ao acompanhamento ocular. Consulte a documentação de acompanhamento ocular para obter mais detalhes sobre como usar o olhar.

GazeProvider

A funcionalidade de foco (cabeça e olho) é fornecida pelo GazeProvider. Esse provedor pode ser configurado na seção Ponteiro do perfil do sistema de entrada:

Ponto de entrada de configuração de foco

Como outras fontes de entrada, o provedor de foco interage com objetos na cena por meio do uso de um ponteiro (consulte este documento para obter informações sobre ponteiros). No caso do provedor de foco, seu ponteiro é implementado por meio InternalGazePointer de e não é configurado por meio de um perfil.

É possível substituir o GazeProvider de estoque por uma implementação alternativa alterando o Tipo de Provedor de Foco para referenciar uma classe diferente que implementa IMixedRealityGazeProvider e IMixedRealityEyeGazeProvider. Geralmente, é recomendável usar o GazeProvider de ações (e arquivar problemas ao encontrar bugs), pois a reimplementação do GazeProvider não é trivial.

Poses de foco alternativas fornecidas pela plataforma

Por padrão, o GazeProvider do MRTK usa o centro do quadro da câmera como a origem do foco. Algumas plataformas, como Windows Mixed Reality em HoloLens 2, fornecem uma pose de foco definida como alternativa. Isso é gerenciado por meio da Use Head Gaze Override configuração nas configurações de foco. Quando habilitada, a substituição de foco alternativa será usada. Quando desabilitada, a origem padrão do centro de quadros será usada. Especificamente, para HoloLens 2, o ângulo de foco será elevado vários graus para considerar o conforto do usuário em usar a cabeça para direcionamento.

Uso

Como obter o destino de foco atual

Este exemplo mostra como obter o objeto de jogo atual que é direcionado pelo foco do usuário.

void LogCurrentGazeTarget()
{
    if (CoreServices.InputSystem.GazeProvider.GazeTarget)
    {
        Debug.Log("User gaze is currently over game object: "
            + CoreServices.InputSystem.GazeProvider.GazeTarget)
    }
}

Como obter a direção e a origem do foco atual

Este exemplo mostra como obter o Vector3 que representa a direção do foco do usuário e a origem (o ponto do qual a direção está indo).

void LogGazeDirectionOrigin()
{
    Debug.Log("Gaze is looking in direction: "
        + CoreServices.InputSystem.GazeProvider.GazeDirection);

    Debug.Log("Gaze origin is: "
        + CoreServices.InputSystem.GazeProvider.GazeOrigin);
}